Hi…we have been using Opto22 in X-ray equipment we produce for mining companies since about 2000. The equipment uses similar, but not exactly the same I/O configurations for each installation, so now we have 50 or so controllers running various flavors of a similar strategy; now we want to standardize the code.
I am able to provide some level of abstraction by using pointer tables that are loaded at powerup. And I can have site-specific charts that get called (or not) for specific site requirements which can all be rolled into one monolithic strategy. All of our equipment uses PAC-R1 controllers (and for those legacy Ultimate I/O systems, we’ll require the customer to upgrade). The first 7 modules on the rack are exactly the same in all equipment and configured the same. Modules 8-12 or 8-16 depend on the site requirements and sometimes there are additional I/O racks.
The problem I’m having is how to include unique controller configurations in one deployable strategy. My thought is to use a subroutine to turn a point on/off based on point address, which of course has to examine the module and determine if it’s high density or standard 4-channel I/O etc. The addresses would be loaded into a table via a configurable strategy download file. This works fine if the I/O unit and controller are the same, but gets very cumbersome when there is a second or third PAC-R1 being used as an I/O unit. I have written routines to perform generic MMP read/writes given an IP address, but this gets very cumbersome. I’m looking for thoughts on how to handle this. Ideally, I’d love to create I/O units and points dynamically within the strategy, but I don’t think that’s possible at least not without Forth programming.