I wish someone knowledgeable from Rockwell would weigh in with a factual non-opinionated explanation of why ControlLogix went to asynchronous I/O scanning. Perhaps a separate microprocessor handles that task. I will create a tech support case with them and tell you what they say.
We still use SLC and PLC5 a lot, so I go months without using ControlLogix. But I have to ask this: Doesn’t the aliasing feature negate the need for mapping from the standpoint of structuring/organizing things? (Let’s leave the scan issue out of this and focus on the purported advantages of mapping to achieve good organization.)
Or put another way, since I always use aliasing, have I been “mapping” all along? We use aliasing because it’s a no-brainer advantage…you can change the I/O or even figure it out later without messing with me, the programmer. Sounds like mapping.
But with aliasing its more “built in” than a mapping scheme like I’ve seen in SLCs. It would be hard for a maint tech to overlook it or not understand it or just use a raw address.
I structure the I/O aliases in ways that I can refer to the tag names conveniently. For example I may name my ControlLogix outputs for station lights this way: StationLight01, StationLight02, ….StationLight20. Then in code, or in HMI parameters, or even in ControlLogix structured text, I can do something like this: (I will hasten to add most of my code is ladder but 25% is not.)
Code:
VBATagName = “StationLight” & StationIndexNumber.Value
SuccessfulStart = boolFunctionStationOn(VBATagName)
Is that why some of you map? Is alliasing the same thing as "mapping"? (Forget about the scan issue, we’ve beat that one to death).
I think one thing to keep in mind is that not all manufacturers support aliasing. In my case, I ususally try to use methods that are generic enough that they will function the same way no matter whos equipment I use. Thus, i tend not to use the aliasing much.
I do agree though that as long as your program has good organization that is ultimately the more important aspect. Mapping in and of itself doesn't necessarily mean that things are well organized. It is more so I think that the people who take the time to do it "on average" are the ones who also take the time to do other things properly as well.
For digital inputs, I may also use the buffering to add debouce timers, or alter the NC/NO aspect of the signal. That way these things don't clutter up the actuall sequence.
I find the buffering tends to be more handy in regards to the outputs than the inputs. I usually have at least two sets of of buffered bits (one for manual and one for auto). Thus, if I have a valve to extend a knife cylinder I will have and Auto bit called "A_Out_Knife_Extend" and a manual bit called "M_Out_Knife_Extend". I then interlock these with perhaps an Auto mode contact or manual mode contact. I keep things really symetric so that it does not take me long to build the buffer (a lot of quick copy and paste)
If I have a double solenoid valve, or something similar, I will also interlock them in the buffer as well so that both coils can't be on at the same time. To me all of this stuff works well in the buffer routine because it helps remove the clutter from the main program stream.
I may also add more branches to each buffer net for various modes. (ie. If I have a semi-auto mode that is running a sequence in manual mode).
I think also because I am big on "sequeced" or "quasi-state machine" programming the whole buffering concept tends fit well with it.
The buffering or mapping helps me separate a lot of the mundane clutter, debounces, interlocks, active level swaps, and modal stuff out of the actual sequence program so that the guy debugging it can just focus on the meat and potatoes without distractions.