Chris Elston

Allen Bradley Ethernet/IP Mapping Size Limit?

23 posts in this topic

Here is one I don't run into too often:

 

Does anyone know what determines the maximum size of the EIP map when you define a new EIP slave in RS Studio 5000 as a slave?

 

My slave device can map over 352 DINTS (704 INTS) or (1408 BYTES / SINTS)  , however Allen Bradley only allows 125 DINT Input/124 DINT Outputs. (Or any combo of INTS/SINTS)

 

What determines this maximum setting here given from the vendor EDS file that is limited in the EIP Connection Setup?
This also happens when you setup just a Generic IP connection without an EDS file.

 

I can not map the entire INPUT Map of 352 DINT Inputs and 352 DINT Outputs from my Slave to the Allen Bradley PLC is the main question.

 

mrplc-001.jpg.7f80027669daeaa16257010a0e

 

mrplc-002.jpg.4a5d174ebd5f4e610087d6ca25

Share this post


Link to post
Share on other sites

So for the other device, does it have a configuration tool?  After using the tool, does it create a new EDS?  If you limit is the PLC side, maybe you can adjust the other device.  Problem is you might lose critical data needed for control and status.

Also, the second pic is from the slave.  Notice the swap of descriptions and what is an input and output.

Edited by pcmccartney1

Share this post


Link to post
Share on other sites

Not getting anywhere with this, but I found this note: Does anyone know what this feature is?

 

The devices to be used must support Large Forward Open (optional CIP specification)
For EtherNet/IP, the maximum data size must be at least 704 words per connection in cyclic communication.

Share this post


Link to post
Share on other sites

Sorry, never read the standard, quickly hit the limit of my knowledge.

Share this post


Link to post
Share on other sites

Chris old friend you are definitely into uncharted territory for me.  Perhaps @TimWilborne has seen this?

Share this post


Link to post
Share on other sites
6 minutes ago, BobLfoot said:

Chris old friend you are definitely into uncharted territory for me.  Perhaps @TimWilborne has seen this?

LOL...why am I always the one to do this crap first. Hahahaha... Here is the CIP SPEC I found, so I know it's real, just no information how to configure it yet. I have a ticket started with AB, but no reply yet.

The maximum size of the MR request and MR response packet items in the SendRRData command is 504 bytes (the maximum size on Ethernet/IP), to ensure that a UCMM message can traverse all the links in a CIP network path. Devices may support the Large_Forward_Open service (see Volume 1, Chapter 3) to allow more efficient access to large application data sizes. and also: Connection Size The CIP connection size shall be no larger than 65511 bytes. NOTE: The Forward_Open request limits the connection size to 511 bytes; however, the optional Large_Forward_Open allows larger connection sizes.

In most all of Allen Bradley documents, they just round it to 500 bytes.

Share this post


Link to post
Share on other sites

What ethernet/IP module are you using. I believe not all modules supported a large_forward_open connection. 

Share this post


Link to post
Share on other sites
1 minute ago, chelton said:

What ethernet/IP module are you using. I believe not all modules supported a large_forward_open connection. 

Ah HA! Someone who has seen this, that's my question...

I have a standard Compact Logix, however I read a document that said the newer Compact Logix did support large_foward_open. I found this statement in a KB doc:

The UDP sockets in the EN2T and new CompactLogix controllers can also handle the large forward open size (about 4k), so they can transfer more data.”

Do you have a list somewhere or a compatibly chart you have seen?
How do you configure the connection size when you find out you have one?

Share this post


Link to post
Share on other sites

I don't have a compatibility chart. The connection size happens behind the scene. If your data is greater than 500 bytes it will automatically use large_forward_open. 

Try putting in a en2t in your project and set the latest firmware it should allow you to set your connection sizes.

Share this post


Link to post
Share on other sites

Is it also version dependent?  I'm looking at a 5069-L320ERS2 at v32.  The Generic Module is the same as Chris described before.

 

Share this post


Link to post
Share on other sites
14 minutes ago, chelton said:

I don't have a compatibility chart. The connection size happens behind the scene. If your data is greater than 500 bytes it will automatically use large_forward_open. 

Try putting in a en2t in your project and set the latest firmware it should allow you to set your connection sizes.

 

That didn't seem to work, but I have version 31 installed at the moment, haven't updated to 33 yet.

I get an error when I try to bump over the 500 byte limit in the connection window.

 

error2.jpg.69288e6bee864122540ab12dfa56d

 

Share this post


Link to post
Share on other sites

Any chance the vendor has an AOP and EDS.  Maybe it can't be done with a Generic Ethernet Module.

Share this post


Link to post
Share on other sites
10 minutes ago, pcmccartney1 said:

Any chance the vendor has an AOP and EDS.  Maybe it can't be done with a Generic Ethernet Module.

Yes, Vendor does have an AOP EDS, I tried it with that, and same result. Got same 500 byte error.

Share this post


Link to post
Share on other sites

there is a size limit... i think max block size is just under 512 bytes (it think some 509 bytes). DINT is 4x larger than byte so (509 byte) /(4 byte/DINT) = 102 DINT

actually it may be even lower, (509 bytes for output assembly and 505 byte for input assembly)

Share this post


Link to post
Share on other sites
15 hours ago, panic mode said:

there is a size limit...

Yes there is a size limit in Standard CIP EIP, but you can "enable" large forward open which allows up to 64K bytes! We are all digging trying to figure that out...the actual CIP specs says this:

The maximum size of the MR request and MR response packet items in the SendRRData command is 504 bytes (the maximum size on Ethernet/IP), to ensure that a UCMM message can traverse all the links in a CIP network path. Devices may support the Large_Forward_Open service (see Volume 1, Chapter 3) to allow more efficient access to large application data sizes. and also: Connection Size The CIP connection size shall be no larger than 65511 bytes. NOTE: The Forward_Open request limits the connection size to 511 bytes; however, the optional Large_Forward_Open allows larger connection sizes.

Have you seen how to enable that in an Allen Bradley PLC? 

Omron NJ does it no problems.

Share this post


Link to post
Share on other sites

nope, sorry...

Share this post


Link to post
Share on other sites

@Chris Elston Any luck with the connection? I Don't think that AB does support a large_forward_open Class 1 (Implicit) connection like the NJ does. You can do a large_forward_open Class 3 (explicit) connection using MSG.

Share this post


Link to post
Share on other sites
On 10/9/2020 at 5:00 PM, chelton said:

@Chris Elston Any luck with the connection? I Don't think that AB does support a large_forward_open Class 1 (Implicit) connection like the NJ does. You can do a large_forward_open Class 3 (explicit) connection using MSG.

 

Do you have an Insight how to setup a MSG instruction to do that? The documents I find talk about Read Tag Fragmented service with the method you mention.

When looking into the MSG instruction, there is not a Read Tag Fragmented in the services options.

I don’t think this will work, because the problem is the CONNECTION to the SLAVE. If I was doing Producer/CONSUMER tags that are larger than 500 bytes, this would make sense to me to use a Read Tag Fragmented Service MSG instruction to get a UDT from one PLC to another PLC, however that is not what I am trying to do.

An Omron PLC with Ethernet/IP can read the Large Forward tags on this same slave. 

 

2020-10-12_9-58-28.jpg.78085f22d46467427

Share this post


Link to post
Share on other sites

Well I dunno, thought I would post what I have so far in case anyone else runs into this.

It seems you can only do large transfers through a MSG instruction, is what I have arrived at. I don’t know if that works for me for a SLAVE device connection to get the tags out I need or not. I would need to purchase these items to test it out to see if this can be setup, I have no clue if this works, but atleast I got an answer from RA what hardware and versions I need to attempt it and get someone else started too incase you encounter this as well.  Good Luck!


As per attached snapshot of error , it seems that you are trying to increase data size for Generic ethernet module. 

For Generic Ethernet module, 

Error : Failed to modify properties Invalid Output size

The number of output configured output tags is too large

 

The limit is 124 tags of the type DINT

The limit is 248 tags of the type INT

The limit is 496 tags of the type SINT

 

Error : Failed to modify properties Invalid Input size

The number of input tags configured for the profile is too large

 

The limit is 125 tags of the type DINT

The limit is 250 tags of the type INT

The limit is 500 tags of the type SINT

 

Large CIP generic messages (messages up 3980 bytes) are available with some requirements. Large messages are typically used with socket programming to send and receive more then 480 bytes of data at a time. The Large Connection checkbox is enabled only when the Connected box is checked and CIP Generic is selected as the message type on the Configuration tab.

 

To use Large messages with a ControlLogix controller and a 1756-EN2T(R) module, the following are required:

 

·  1756-EN2T(R) and 1756-EN3TR modules at revision 5.x and higher for socket support

·  Logix Designer application, version 21.00.00 or later and RSLogix 5000 software, version 20.00.00 or later

·  The Large Connection and Connected checkboxes must be checked in the message instruction(s)

Selecting the CIP Generic message type enables the Large Connection option on the Communication tab. Use large CIP Generic connections when a message is greater than 480 bytes. 500 bytes is typical, but there are headers at the front of the message. Large CIP connections are for messages up to 3980 bytes.

 

• The Large Connection box is enabled only when the Connected box is checked and CIP Generic is selected as the message type on the Configuration tab.

• The Large Connection option is available only in Logix Designer application, version 21.00.00 or later and RSLogix 5000 software, version 20.00.00 or later. 

You can refer this from https://literature.rockwellautomation.com/idc/groups/literature/documents/rm/1756-rm003_-en-p.pdf (Chapter 4)

 

 

I tossed a project together to grab the screen shots to go along with this:

2020-10-23_7-51-30.thumb.jpg.c7b61bfd805

Share this post


Link to post
Share on other sites

Have you tried a CIP generic connection with Class ID 04, Assembly 100 Dec or 64  Hex service code 0E for the input data and another connection Class ID 04, Assembly 150 Dec or 96 Hex service code 10 hex for the output data?

I'm not sure if you can do a class 3 connection to a Class 04 object? 

Share this post


Link to post
Share on other sites

FWIW my experience with the Large Forward Open service and Allen Bradley devices is that the Logix range will only support a connection size of about 4000 bytes, whereas the Micro800 devices support the full 65511 byte connection size.

Share this post


Link to post
Share on other sites

Sorry for the late post, I just joined.

There are two types of connections: explicit MSG-type and implicit IO-type.   If you use IO or produced/consumed tags you get the IO-type.  My guess is that the remote slave sync is done the same way.  Those are sent via UDP and appear to be restricted to the UDP maximum non-fragmentable size (576 bytes IP minimum - overhead, in practice about 500 bytes of payload).  That's where the 125 DINT (4 bytes per DINT x 125 = 500 bytes) limit comes from.  If you send explicit messages and you have negotiated a connection (forward open or large forward open) you can negotiate up to ~4000 bytes (4002 in my experience).  Those are generally sent via TCP which layers on a completely different set of packet size restrictions.

It seems like the underlying mechanism to transfer your data for mapping might be UDP.  There does not seem to be anything inherent in the Large Forward Open command to limit it to TCP but I have never tried to set up that type of connection in my AB comms library.

Using implicit IO has proven to be a huge benefit for some projects I've been on, but the size limitations are a pain.

Share this post


Link to post
Share on other sites

Bad form replying to myself, but there is also a limit due to ControlNet.   When you use UCMM (unconnected messaging) you get a ~500 byte packet size too.   That is because the largest size you can route through ControlNet (so I understand) is about that.   If you set up a connection with some variation of ForwardOpen, then you negotiate the packet size across all hops of your route.

So I am not sure which one of these applies.   Using UDP packets larger than ~500 bytes is a bad idea as many networks will mangle them (fragmentation occurs and then if you lose one of the fragments...).

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