How to Address Modbus Slave Data in Rockwell PLC using Rockwell AOI for Connectivity?

Question:

I am attempting to establish a connection with a Chiller using Modbus TCP, which has been configured as a Modbus slave. The Rockwell AOI appears to offer a simple solution for connectivity. My query pertains to the Data tags in Control Logix, specifically the array tags like Client_01_Data.HoldRegisters_4xxx[0] - Client_Data.HoldRegisters.4xxx[1023]. The Chiller Manufacturer has provided tag mappings for their system, but they reference storage locations such as 401201:401202. It seems that I may need to access addresses 1207 and 1208 to retrieve the necessary data for display in the Rockwell PLC. However, the array only extends up to 1023. Am I overlooking something here? How can I access addresses beyond 1023? While I have not yet attempted to establish the connection, as the system is still in the process of being assembled and delivered to our facility, I am working on setting up my program in advance.

Top Replies

When Client AOI returns data to the controller, it is stored based on the value of the LocalAddress. You have the flexibility to input any LocalAddress within the range of 0 to 1023. In the case of addresses 401207/401208, the AIO client settings should be configured as follows: Begin Address 1206, Count 2, and LocalAddress 6. The data will be accessible in Client_01_Data.HoldRegisters.4xxx[6] and Client_01_Data.HoldRegisters.4xxx[7].

It is important to take note of the Station ID, with the default value being 0. Depending on your Slave device, the Station ID can range from 0 to 255. Values exceeding 127 may display as negative, unless they are in hexadecimal format.

Thank you for the clarification. It makes sense to initiate the transaction with a higher starting address to align with my specified range.

When configuring a transaction, it is important to set a higher start address to cover a wider range. This can be achieved by setting a higher Local Address between 0 and 1023. The Begin Address value is determined by the Slave and cannot be altered. Thank you for the clarification!

In the beginning of the transaction, I recommended setting the address to 1000 with a count of 350 and a Local Address of 0. By doing this, I could easily access registers 401000 - 401350 in the Modbus Slave PLC through the Registers Client_01_Data.HoldRegisters_4xxx[0] - Client_01_Data.HoldRegisters_4xxx[350]. These values represent the specific range of data that needs to be transmitted from the Rockwell PLC to the Modbus Slave PLC in the Chiller system.

While your program seems well thought out, you're correct in noticing the issue of accessing array indices beyond 1023. Remember that Modbus addressing starts from 0, but the addressing in the ControlLogix array starts from 1. So, when the HVAC controller mentions storage locations like 401201, it’s actually referring to the 1201 index of 4xxxx registers. This means to read the 1207 and 1208 location data from the chiller, you'd need to read the 1206 and 1207 indices in your ControlLogix array (401207 will be Client_01_Data.HoldRegisters_4xxx[1206] in Control Logix convention). Remember your Control Logix has an array limit of [0] - [1023] which means you can access up to 4xxxx 1024th register. You might need to check with the Chiller's manufacturer if essential data fall beyond 1024 as it would need a different strategy to retrieve them.

It sounds like you're on the right track but there might be a minor confusion with Modbus addressing and ControlLogix arrays. Remember, Modbus addressings like 401201 actually correspond to register 1200 (as there's an offset of 1 and the first three digits (401) denote the type of data location). This means you're aiming for 1200 instead of 1207 and 1208. Remember, Modbus typically starts addressing at 0 while Rockwell normally starts at 1. Additionally, the size of your array in ControlLogix can be adjusted based on your requirements. If you need values that lie beyond 1023 in your array, increasing the size of the array would be a preferable solution. It's really great that you're preparing ahead while waiting for the chiller to be delivered. It should make the integration process considerably smoother.

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. Question: How can I access Modbus slave data in a Rockwell PLC using Rockwell AOI for connectivity?

Answer: Answer: You can utilize Rockwell AOI (Add-On Instruction) to establish a connection with a Modbus slave, such as a Chiller configured with Modbus TCP. The AOI provides a simple solution for connectivity.

FAQ: 2. Question: How can I handle array tags like Client_01_Data.HoldRegisters_4xxx[0] - Client_Data.HoldRegisters.4xxx[1023] in Control Logix for Modbus communication?

Answer: Answer: When dealing with array tags in Control Logix for Modbus communication, you may encounter limitations on the array size such as extending up to 1023. It's important to understand this limitation and plan your data mapping accordingly.

FAQ: 3. Question: What should I do if the Chiller Manufacturer's tag mappings reference storage locations beyond the array limit, such as 401201:401202, while using Modbus communication in a Rockwell PLC?

Answer: Answer: If the Chiller Manufacturer's tag mappings reference storage locations beyond the array limit of 1023, you may need to consider alternative methods to access addresses like 1207 and 1208 for retrieving the necessary data. This could involve custom data handling or restructuring your data mapping strategy.

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  β†’