Mapping Studio 5000 Standard I/O Tags to User-Defined Type (UDT) Tags

Question:

Hello, I am currently working on cleaning up PLC programs in L8 systems that were originally designed for SLC500 Projects. I am creating Tags using User-Defined Types (UDTs) with multiple tiers of tags. However, I am facing issues when attempting to map these tags within an Analog Input/Output (AIO) module, as I am unable to use UDT type tags as Input/Output. Additionally, I cannot use Block Transfer Direct (BTD) instructions or Copy (COP) instructions for the same reason. I came across a suggestion to use eXamine If Closed (XIC) to Output Enable (OTE) mappings within the AIO, but I am struggling to see how this would work for my situation since I cannot create an Output within the AIO that aligns with my UDT. Has anyone come up with a solution for this issue? I am trying to avoid adding numerous rungs of logic with XIC to OTE instructions to simplify troubleshooting for our Maintenance Technicians when working with the PLC system.

Top Replies

Could you provide more details on your intentions with the InOut parameter? Is the AOI it is associated with possibly self-referential? What specific issues are you encountering with BTD/COP?

UDTs can only be utilized for InOut parameters or internal tags, not for Inputs or Outputs.

When working with AOIs in PLC programming, it is important to note that all values passed in or out are "pass by value," meaning they are copied. However, using InOut tags allows for pass by reference. To operate on a User-Defined Type (UDT) as a whole, consider converting it into an AOI. Begin by transforming each value of the UDT into an AOI input parameter, ensuring it functions in the same manner. Next, establish Cmd_XXX input bits to carry out operations on the data effectively. Mastering these concepts is crucial for efficient PLC programming.

When working with Add-On Instructions (AOIs) in PLC programming, it is important to understand the concept of "pass by value" for values being passed in or out, which means they are copied. However, InOut tags function as pass by reference. If you need to manipulate a User-Defined Type (UDT) as a whole, consider converting your UDT into an AOI. Begin by transforming each value of the UDT into an AOI input parameter, maintaining the behavior. Afterwards, establish different Cmd_XXX input bits to carry out operations on the data. It is also possible to designate certain tags as "Local" to the AOI, allowing them to be visible on the Human-Machine Interface (HMI) despite not being accessible outside the AOI in the PLC. Ensure that their External Access is set to "Read/Write" or at least "Read", as Local tags are set to "None" by default. Since these tags are not browsable, manual entry of the full tag name is required when linking the data in the HMI. This approach is beneficial for integrating non-basic data types like Strings in the AOI for the HMI, eliminating the need to utilize In/Out tags to expose them to the main program.

Your situation sounds a bit complex. It seems like you're trying to optimize your PLC system but also keep it simple for maintenance purposes. A potential solution could be creating a UDT within your AIO module which contains all of your required tags, and you could then access this UDT to map your parameters. This necessarily won't reduce the rungs of logic, but it could make your system more organized and easier to troubleshoot. Also, you might want to consider using an alias tag that references the input/output data. This would allow you to utilize your UDT structure without violating the constraints of the AIO module mapping. Both these workarounds won't solve the limitation of addressing but will make your program manageable and less complex.

You're on the right track using UDTs for organizing your PLC code, and I can understand the struggles of mapping with an AIO module, it can be tricky. Instead of using BTD or COP, which indeed don't work for this scenario, have you considered using Alias tags? They act like pointers to specific addresses without any type restriction, which should allow you to reference the UDT tags you've defined. Implement these tags in conjunction with your XIC to OTE mappings. This workaround could save you additional logic steps and help maintain code clarity for your Maintenance Technicians.

You're on the right path with the idea of using XIC to OTE mappings, but I understand your struggle with the UDT alignment. Instead of getting caught up trying to adjust each mapping, have you considered using Arrays combined with an indirect addressing method? This approach could potentially map your tags without disrupting the existing logic, making the process more efficient while creating a simpler troubleshooting pathway. Whatever route you decide to take, don't forget to comment your rungs adequately for future reference.

You're spot on with the struggle of integrating UDT-type tags directly within the AIO module - it's a common roadblock. One possible workaround I've found successful is creating an interim mapping process. Start with creating an array of DINT tags that match the inputs/outputs of your AIO. Then, you can use the COP instruction to transfer data between your UDTs and DINT Array, which you can then process using standard logic. This method allows for a smoother transition of data from UDT to something the AIO can interpret. It does complicate the process slightly but it keeps the code relatively clean and easier to troubleshoot. Just remember to keep your tags and instructions well documented for your Maintenance crew.

Hey there! It sounds like you're encountering a common hurdle when transitioning from SLC500 to L8 systems with UDTs. One approach you might consider is breaking down your UDT into fundamental data types (like INT or REAL) that can be more readily used within the AIO mapping. Instead of trying to directly map the UDTs, you could create individual tags for the specific elements you need and then use those in your AIO configurations. This way, you can avoid the complexity of an XIC to OTE mapping and create a more straightforward system for maintenance. Additionally, if you're concerned about troubleshooting, documenting a simple reference or using descriptive tag names can help bridge the gap for the techs. Hope this helps!

It sounds like you’re dealing with a pretty frustrating situation! A potential workaround could be to create an intermediate array or structure that matches the AIO input/output needs, where you can map your UDTs to simpler tag types that the AIO can recognize. This way, you still keep your UDTs for organization and structure while providing the AIO with compatible tags. You could use a simple loop to manage the mapping, which should help you avoid cluttering the logic with multiple XIC to OTE instructions. It might add a slight overhead, but it could significantly streamline troubleshooting for your maintenance team later on. Would love to hear if that sparks any ideas for you!

More Replies β†’

Streamline Your Asset Management
See How Oxmaint Works!!

βœ…   Work Order Management

βœ…   Asset Tracking

βœ…   Preventive Maintenance

βœ…   Inspection Report

We have received your information. We will share Schedule Demo details on your Mail Id.

To add a comment, please sign in or register if you haven't already..   

Frequently Asked Questions (FAQ)

FAQ: 1. Can UDT tags be used with Analog Input/Output (AIO) modules in Studio 5000?

Answer: - No, UDT type tags cannot be directly used as Input/Output within AIO modules in Studio 5000.

FAQ: 2. What alternatives are available for mapping UDT tags to AIO modules in Studio 5000?

Answer: - One suggestion is to use eXamine If Closed (XIC) to Output Enable (OTE) mappings within the AIO modules.

FAQ: 3. How can I simplify troubleshooting for Maintenance Technicians when using UDT tags with AIO modules in Studio 5000?

Answer: - To simplify troubleshooting, you can avoid adding numerous rungs of logic with XIC to OTE instructions by exploring other solutions or workarounds for mapping UDT tags effectively within AIO modules.

Ready to Simplify Maintenance?

Join hundreds of satisfied customers who have transformed their maintenance processes.
Sign up today and start optimizing your workflow.

Request Demo  β†’