defcon.klaxon
Lifetime Supporting Member
Hi all,
I'm working on a wastewater plant where I have a ControlLogix PLC as the master PLC, alongside three packaged systems that are being provided by third parties. All three of the packed systems communicate via Modbus TCP. Unfortunately I was unaware of that during the design process, but luckily (I think) I came across the Modbus TCP AOI at Rockwell's website. I'm hoping someone has sufficient experience with it to help me out.
I've read through the guide and it seems pretty straightforward, but one thing I can't quite understand is how one would deal with integers and reals. When I check the Data tags, they're arrays of 1024 16 bit INTs for both Input and Holding registers. But if the data is a floating point, how is that handled?
For example, there are two ETMs for a pump; daily ETM is in holding register 40018 and total ETM is in holding register 40020. So I get how the transaction is set up, but when I go to the data in the tags, how do I "tell" the tags that the tag data spans two modbus holding registers? Let me know if my verbiage makes sense or if I need to clarify.
Is it as simple as using a COP function with the correct length?
Unfortunately the PLC is an hour round trip so it's not easy to test onsite because my budget is super tight, so I'm hoping to get this figured out before my next site visit.
Thanks for any help!
I'm working on a wastewater plant where I have a ControlLogix PLC as the master PLC, alongside three packaged systems that are being provided by third parties. All three of the packed systems communicate via Modbus TCP. Unfortunately I was unaware of that during the design process, but luckily (I think) I came across the Modbus TCP AOI at Rockwell's website. I'm hoping someone has sufficient experience with it to help me out.
I've read through the guide and it seems pretty straightforward, but one thing I can't quite understand is how one would deal with integers and reals. When I check the Data tags, they're arrays of 1024 16 bit INTs for both Input and Holding registers. But if the data is a floating point, how is that handled?
For example, there are two ETMs for a pump; daily ETM is in holding register 40018 and total ETM is in holding register 40020. So I get how the transaction is set up, but when I go to the data in the tags, how do I "tell" the tags that the tag data spans two modbus holding registers? Let me know if my verbiage makes sense or if I need to clarify.
Is it as simple as using a COP function with the correct length?
Unfortunately the PLC is an hour round trip so it's not easy to test onsite because my budget is super tight, so I'm hoping to get this figured out before my next site visit.
Thanks for any help!
Last edited: