Alias IO in User Data Type in ControlLogix/Studio 5000

CapinWinky

Member
Join Date
Aug 2011
Location
Virginia
Posts
566
I'm new to AB and I'm running into a lot of things people tell me can't be done in AB that actually CAN be done, so I thought I'd ask here if anyone knows of a way to point to IO points from a structure (specifically ControlLogix with Studio 5000).

To be clear, I know that the editor won't let you make a structure member an alias tag, but this seems like a very arbitrary limitation and I thought there might be a way around it.

For now, I have to make a routine to copy in all the input values and then another to copy the output values out. AB gives me the distinct feeling I've had my tools taken away and I've been given a pair of safety scissors and a helmet.
 
I'm new to AB and I'm running into a lot of things people tell me can't be done in AB that actually CAN be done, so I thought I'd ask here if anyone knows of a way to point to IO points from a structure (specifically ControlLogix with Studio 5000).

To be clear, I know that the editor won't let you make a structure member an alias tag, but this seems like a very arbitrary limitation and I thought there might be a way around it.

For now, I have to make a routine to copy in all the input values and then another to copy the output values out. AB gives me the distinct feeling I've had my tools taken away and I've been given a pair of safety scissors and a helmet.

I feel your pain.... You'd have thought it ought to be possible for a structure member to be an alias to another tag, but not so...

One way round this is to make all the I/O points go through handling function code, or AOIs, then they can just be specified as "Required" Input or Output parameters. Most I/O will be for field devices like pumps/valves/limit switches/level probes etc., which would usually have a standard "handler".

Even if it's a simple pushbutton, there's no harm in using a "debounce" handler (with zero times set), to allow the input to be mapped into the UDT.
 
There's a TN on this:

29568 - FAQ: Why cant I put an alias in a UDT or pass a tag to a subroutine by reference?

Basically it has to do with where in memory the UDT is stored and the individual elements. It would take too long to resolve all this.
 
Essentially that tech note says aliases aren't pointers and AB doesn't support pointers; they're just replaced by the compiler with the base tag name and are not a location in memory that contains the memory address of a base tag. While that does explain why you can't dynamically change where an alias points, it is pretty weak on the reason you can't have them in a UDT.

They're saying they can't just do the find and replace thing and leave the alias out of the memory footprint because they can't figure out a good way to do it. Instead, they'll just claim their only option would be to completely bog down the system with half assed pointer support. No wonder RSLogix/Studio 5000 has basically been the same for more than a decade.
 
Last edited:

Similar Topics

Hi. I'm using a Modbus ProSoft where I basically map data to a big INT array. Example, where GX_I_63HPU is a REAL, MNETC.DATA.WriteData[200] an...
Replies
21
Views
416
This is not a FactoryTalk ME application. I'm trying to reverse engineer a popup screen that has some displays that are shown or hidden depending...
Replies
0
Views
530
Hello I was needing to create an alias tag (DINT) in the Controller tags folder for some I|O tags that’s located in the Program tags folder. The...
Replies
2
Views
1,463
In Connected Components Workbench how do I change the Default settings so that it shows the Name & Alias rather than Name & Wiring?
Replies
4
Views
1,456
In my mind there is a clear rationale to favour the use of input map routines with compactlogix controllers. The inputs are updated...
Replies
5
Views
2,025
Back
Top Bottom