AB7306 MSG Write Data Fails, Read Data Works

Hi,

I am currently working on a project to rollout AB7306 X-Gateways (CANopen Master - Ethernet/IP Adapter) throughout a plant for IO between an AB 1756-L72 Controllogix 5570 controller and a CAN network. I am working with the plant’s PLC engineers to implement communication.

I have been telling them that class 1 (implicit) EIP communications, using a produced/consumed tag, are the preferred way to implement cyclic real-time IO for a device like this, as opposed to class 3 (explicit) communications using an MSG tag, is that accurate? I am basing that on entries like this from your EIP documentation:

Class1

If that is the case, are there any specific instructions for setting up produced/consumed tags with an Anybus device? There are instructions for creating MSG tags, which they used, but we couldn’t find anything about implementing class 1 communications.

They originally set things up with the MSG instruction, and as such we are trying to make it work, which we believe it should. Currently, using MSGs, they can read data, but not write it.

Using service 10, class 4, instance 150, and attribute 3 I was able to write to the device using EIPScan, although I did have to disable the run/idle header first for it to work. When we try that same configuration in RSLogix they are unable to write to the device (also with the run/idle header disabled and the Anybus configured for 16 bytes of IO both ways). The documentation for making an MSG tag in RSLogix says on the communications tab to put “,2, AB7306IPAddress” and whether or not we add that it fails to connect. Please see photos below.

Read MSG (which does work):



Write MSG (fails):



EIPScan (works):

Your help is very appreciated. Thank you.

Hello,

Here are instructions for using a read and write tag with a message instructions. Reading/Writing data from Anybus X-gateway using ControlLogix5000 MSG instruction
I am not sure this is what you are looking for if you want a class 1 connection. I would recommend adding it as an IO device for you plc. You can either use the EDS file from our website or add it as a generic device with assemblies input 100 output 150 This should be a a class one implicit connection.

Anybus X-gateway EtherNet/IP with Rockwell Studio 5000 - EDS

Anybus X-gateway EtherNet/IP with Rockwell Studio 5000 - Generic Module

You can download the EDS file from the files and documents page.

The EIP connection size for this gateway can be read using the Online Object Access tool and reading objects 0x3000 for input and 0x3001 for output.
image

1 Like

Hi Deryck,

Thank you for your response. While I would prefer to set things up with a class 1 implicit connection, they would prefer to use a class 3 explicit connection since they have all the logic configured that way already, and they don’t seem to have a lot of experience with implementing implicit connections, and as I am new to PLC logic I also don’t have that experience, so I’m in a bit of a tough spot.

I have confirmed by reading indices 0x3000 and 0x3001 that the device is configured to use 16 bytes both ways. And they are able to read from the device using 100 as the instance number. It seems like we should then be able to write to the device using 150 as the instance number, right? It works that way just fine in EIPScan, but then when we try, essentially, the exact same configuration in RSLogix we get an error for some reason and it fails to write, and I’d really like to get to the bottom of why that is.

That said, the documents you’ve shared about setting up the logic using a generic module (which they are currently doing) vs an EDS (which seems preferable from my limited understanding) look very useful. I will peruse them and see if maybe an answer is in there.

Ideally we could get this working as a generic module using a class 3 connection, as that is currently the path of least resistance.

Thanks again for sharing those documents, hopefully I can follow up with some more targeted questions after reading them.

You are correct, you should be able to use service 0x10 class 4 instance 150 attribute 3. please not the service is in hex, it looks like this is done correctly in your message instructions.
It looks like yours is setup correctly.

Perhaps try disabling the run/idle header and exact io matching from the Online Object Access?

Deryck

1 Like

Hi Deryck,

I have the run/idle header disabled, but not exact I/O matching, I will try disabling that and try again and see if that helps. In the meantime I will also forward them the information about using an EDS, as that seems like a better approach.

Just to clarify something about your initial response, when you said we could add this as an IO device with the EDS and create a class 1 connection. I think they have it set up as an IO device (not sure, maybe the attached photo might indicate whether or not that’s accurate). In that scenario are you saying we would then proceed to create produced/consumed tags to exchange data, or is there some third way that isn’t the MSG instruction, isn’t produced/consumed tags, but does create a class 1 connection and exchange data? Like just by virtue of being an IO device or something?

I really appreciate your patience while dealing with a newbie like me.

You do not need to use any message instructions adding the device as a generic module or with the EDS files creates the connection.

1 Like

Ah. I see. Looks like we’re adding a totally unnecessary layer by trying to use the MSG tags. Looks like we could probably drop them and have it work just fine.

Funny enough right as you responded a PLC developer friend of mine responded with similar information.

Cheers to both of you! Thanks for the help, Deryck. Have a great day.

1 Like

Yes message instructions do add an extra unnecessary layer. Glad to here you have resolved the issue.

Deryck

1 Like