4 posts in this topic

Hi everyone! I am attempting to read EIP tags from an Allen-Bradley ControlLogix from an Omron NX1P2 using the Sysmac Studio function block "CIPUCMMRead." I have been successful in reading arrays and single variables no problem. However, when I want to read arrays from a structure in the Allen-Bradley PLC, I always get an error code in the CIPUCMMRead ErrorID of either 0400 or 1C00 for ErrorID and ErrorIDEx is FF00 2105 depending on what I enter in for Size on the function block (attaching screenshots with both error codes).

 

The errors show on multiple "read" function blocks at once but it only affects data coming out of the function block where I try to read in a BOOL array from a structure in the ControlLogix PLC. If I enter a UINT#1 for the Size, I get ErrorID 0400. If I enter UINT#2, 3, or 4, I get ErrorID 1C00 with ErrorIDEx being FF00 2105. I've been digging for a while and can't find that specific combo of codes, but it looks like it's a size issue.

From what I can tell, the Size is in Bytes. So if I have 32 Bools it should be a Size of UINT#4 max, right? Any help would be greatly appreciated! The function block having issues is setup the exact same as the other two that read from the same structure; I even copied and pasted them from each other and just changed the FB name and the postfix in the SrcDat string (from MyBools to MyDints/MyReals).

Here are the screenshot:

1. Allen-Bradley Structure

thumbnail_image001.png.60042d86dddd9eb14

2. CIPUCMMRead Function Block with size 4

646e2fda3a10a_Screenshot2023-05-24103610

3. CIPUCMMRead Function Block with size 1

646e2fdbb57a4_Screenshot2023-05-24103530

Share this post


Link to post
Share on other sites

Part of the problem is that Rockwell and Omron don't agree on how to represent booleans in their products.  For single booleans as tags or accessed as named leaf items in structures, Rockwell follows the CIP spec and encodes in a byte.  Omron encodes in a 16-bit word, even though it identifies it with the CIP data type.

For arrays of booleans, or booleans within structures, all hell breaks loose.  For a complete explanation, see §3.3.4 in my Ignition driver's user manual.

The net result is that it is almost impossible to get the structure CRCs to match, even if you get the length right.

Strings are also different between the two brands.  You can usually work around this with an SINT array on the Rockwell side.

1 person likes this

Share this post


Link to post
Share on other sites

One more thing:  Using the UCMM instructions limits your service + payload to 500 bytes in each direction, include route path info if not a single hop.  Omron doesn't support spanning large tags over a series of continuing requests the way Rockwell documents it for their products.  Use a large connection to mitigate this.

Share this post


Link to post
Share on other sites
46 minutes ago, pturmel said:

Strings are also different between the two brands.  You can usually work around this with an SINT array on the Rockwell side.

Fantastic explanation, thanks so much for your help sir. Glad it wasn't anything I was doing incorrectly. Omron not playing nice with others is the usual, I should've suspected.  I appreciate the quick response, and will definitely attempt a workaround. All the best to you, and have a great Memorial Day weekend.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now