AB Controllogix and RM75E ethernet comms

So I have successfully established comms between my Controllogix and an RM75E through ethernet by using the “Export to Logix Designer” function of RMCTools (incredibly nice job on the part of Delta!). While I have it functioning and it is working properly, I just don’t understand how it works. Reading the manual, it discusses using message commands to send data back and forth, but I do not see that happening within the code generated by RMCTools which is being used in my Controllogix subroutine. The only thing I can see happening is a CPS (Synchonous Copy File) is moving data from the I/O tags created by adding the device into my I/O tree through the EDS and placing them into the RMCTools code generated tags.

How is it that the inputs seem to update automatically, but each change of an output from the PLC to the Delta requires a trigger of the *SndReq tag? Why do the outputs not update just like the inputs do? Looking at the device generated tags, the inputs are updating without the assistance of the RMCTools generated code. For instance, say my device is named Sta_10_Delta. Looking at the tag Sta_10_Delta:I.Data.Data[2], I can see my axis actual position, same as if I looked at Sta_10_DeltaIn.Axis0ActPos. The Sta_10_Delta:I.XXX tags update without requiring any additional action on my part, but all the Sta_10_Delta:O.XXX tags do not behave the same and the only way I have successfully got them to work was by using the RMCTools generated code and triggering the SndReq bit.
I should probably be content that it works, but the how is really bothering me. Maybe I’m being OCD but the inquisitive side in me is not wanting to let this one go. Any info on the how output work would be appreciated.


Your application is using the Sync Register. The first Input Data register and first Output Data register are each reserved as a Sync Register, and the RMC processes incoming data only when the Sync Register changes. Once the incoming data has been processed, the incoming Sync Register value is echoed in the outgoing data.

The tiggering the SndReq tag increments the Sync Register, which causes the output data to be applied in the RMC.

This help topic explains it nicely: Using an EtherNet/IP I/O Connection

You totally nailed it.
Thank you so much for this.

Sounds like all is good but in case you want more information it is all covered here in the help: