CIP Paths for Nested Objects

JeremyM

Lifetime Supporting Member
Join Date
May 2014
Location
Dallas, Texas
Posts
1,233
Hi all,

Digging deep here and need your helping hand.

I'm trying to figure out how to assemble a path by hand to reach nested CIP objects. I borrowed a snippet of pturmel's excellent manual to show what I'm going for.

https://www.automation-pros.com/enip1/UserManual.pdf

I will send the first author of the best answer an AB 1732E-12X4M12QCDR (untested). Or $100 Paypal. Your choice.

CIP.PNG
 
What object and attribute, precisely, are you trying to read ?

I suppose you've got a good reason about why you need to read something that isn't exposed to a communication driver.
 
I want to read (only!) the connection objects associated with a given port. Particularly Ethernet. Backplane is a plus, but unnecessary at this time.

I've narrowed port IDs on a Dual-IP CompactLogix to 3 and 4, I just need a hand taking the next hop into the object.
 
Last edited:
Message CIP Paths for ControlLogix 1756 PLCs: Brief summary


1066637 | Date Created: 10/17/2017 | Last Updated: 02/19/2019
Access Level: TechConnect
 
The answer is a Port Segment with a zero-length link address. Rockwell's message configuration dialog probably won't let you create it. I would create it as a p,1 pair then edit the bytes in the message tag.
 
I want to read (only!) the connection objects associated with a given port. Particularly Ethernet. Backplane is a plus, but unnecessary at this time.

I've narrowed port IDs on a Dual-IP CompactLogix to 3 and 4, I just need a hand taking the next hop into the object.
I thik this is an interesting inquiry, but as Ken asked, what objects and attributes do you need to access?
Please clarify the expression "the connection objects".
The CIP spec mentions Connection Object (class ID 0x05) which is normally used for DeviceNet.
The Connection Manager Object (Class ID 0x06) is used for EtherNet/IP, ControlNet and logix backplane. This class has 20 instance attributes which are optional, so it is necessary to find out if they are actually supported by the device you are interested. So, is it for ControLogix, CompactLogix?
 
I thik this is an interesting inquiry, but as Ken asked, what objects and attributes do you need to access?
Please clarify the expression "the connection objects".
The CIP spec mentions Connection Object (class ID 0x05) which is normally used for DeviceNet.
The Connection Manager Object (Class ID 0x06) is used for EtherNet/IP, ControlNet and logix backplane. This class has 20 instance attributes which are optional, so it is necessary to find out if they are actually supported by the device you are interested. So, is it for ControLogix, CompactLogix?

I'm looking for a subset of the information available on the attached screenshot on either CompactLogix or ControlLogix.

CIP spec I'm referencing (possibly outdated) states that a Connection Manager optionally maintain a Connection Entry List with attribute 9. Within Logix, that appears not to be the case. The class attribute NumInstances shows 7, but doesn't implement GetNextID nor does it show what these instances might be. Could be a red herring entirely.

The primary goal is to simply collect and show what connections the controller has created. From there I can use the embedded CIP paths to populate an array of UDT of Identities, TCPIPInterfaces, and EthernetLinks in a clean, generic way. These child modules and their parent ports can just be viewed on an HMI to get an easy topology for troubleshooting. So if you go into Studio 5000 and add a module, the list increases by one. You later delete hardware, the list decreases. Nothing too sophisticated nor dangerous.

A secondary goal might be to indicate whether there is (and who established) externally originating Class 3 connections (i.e. my laptop at 192.168.32.150); this could serve a security purpose or just show what HMIs are attached to the system.

Conceptually using the 0x33A class the same way, I can see basic USB traffic and connection indication to show activity, for example.

I've registered to be a member of ODVA yesterday, so there could be spec changes that cover what I'm looking for.

AppConnections.PNG
 
Last edited:
When you get your copy of the spec, take a close look at classes 0x45 and 0x4d.


The former allows you to "create" search instances, which can then enumerate matching connections originating in the device. The above image looks like what that enumeration might show you for a zero-length route filter. I haven't used it, but I suspect that the "Connection Index" field from the enumeration is the instance number in class 0x05.


However, class 0x05 is supposed to support enumeration via service 0x11 "Find_Next_Object_Instance".


Meanwhile, you might try service 0x56 "Get Connection Data" on class 0x06 instance 1 (Connection Manager).
 
When you get your copy of the spec, take a close look at classes 0x45 and 0x4d.

Meanwhile, you might try service 0x56 "Get Connection Data" on class 0x06 instance 1 (Connection Manager).
Hi. I have a CompactLogix and just confirmed that it does not support class 0x45 (Originator Connection List). As well, I confirmed it does not support optional attributes of the Connection Manager object.
I am intrigued about service 0x56 "Get Connection Data" on class 0x06 instance 1 (Connection Manager). Never used this. Will test this next.

2021-08-07OrigConnectionList.png
 
I'm looking for a subset of the information available on the attached screenshot on either CompactLogix or ControlLogix.
Jeremy, I found this inquiry of yours interesting and have spent some time on this today. Unfortunately I did not find so helpful information. At least I confirmed the the CompactLogix does not support all these wonderful but optional attributes of the Connection Manager class. Nor the classes and services suggested by pturmel (unless my testing is incorrect, reason why I documented what I did in case someone can catch my mistake).
I guess Rockwell must have some undocumented class or classes that would provide the information you need. Something similar to the vendor specific 0x33A for the MicroLogix USB port. However, the documentation for such objects may be only available to Encompass partners.
Another possibility is that such information may be supported through PCCC. Many years ago, when I worked at a different place, I remember having seen a specification of all the PCCC services. There were many system commands such as download program, change the processor to RUN or PROG mode and such kind of stuff. I have been unable to find this document on the Rockwell knowledge base. If you have such document as it is something that can be publicly released, I could do some testing with the Molex tool and see if we can figure out how to read that kind of diagnostic information you need.
 
I remember having seen a specification of all the PCCC services. There were many system commands such as download program, change the processor to RUN or PROG mode and such kind of stuff. I have been unable to find this document on the Rockwell knowledge base. If you have such document as it is something that can be publicly released, I could do some testing with the Molex tool and see if we can figure out how to read that kind of diagnostic information you need.
Are you talking about this doc?
https://literature.rockwellautomation.com/idc/groups/literature/documents/rm/1770-rm516_-en-p.pdf
 
Thanks, this is the DF1 Protocol and Command Set. Id does not cover services for ControlLogix or CompactLogix. I think that manual had more pages. Sorry, it was a long time ago.
 
Sorry, I thought you want DF1 commands that can be encapsulated in PCCC. This doc was published in 1996 2 years before ControlLogix release.
I don't recall a dedicated PCCC manual, maybe it was a white paper or something.
 
Hi. I have a CompactLogix and just confirmed that it does not support class 0x45 (Originator Connection List). As well, I confirmed it does not support optional attributes of the Connection Manager object.
I am intrigued about service 0x56 "Get Connection Data" on class 0x06 instance 1 (Connection Manager). Never used this. Will test this next.

Try service code 0x8 on class 0x45 on your L16. It’s a dynamic class, so you have to tell it to create an instance before operating on it. Then you can try service 0x4C to read from the new instance.

I’m not sure if the 5370s implement it, but 5x80s do.

If you perform a 0x01 (GetAttributesAll) on the Message Router (0x02) Instance 1, it should return all the classes the controller implements in attribute 1.
 
Last edited:

Similar Topics

Hi, First time poster, long time reader. I've got a mass flow controller device for controlling the flow of gas. It has a flowmeter and an...
Replies
4
Views
278
Hi Folks! Could I use the Studio 5000 to read/monitoring Stratix 5700 parameters? Like switch temperature for example
Replies
11
Views
382
Hola chicos. Tengo un problema con el driver de comucicacion dasabcip 5, y un plc controllogix v34, ya realice la comunicacion pero en ciertos...
Replies
2
Views
166
Wizards, It has been a few, but you all have always done me well. I have acquired a 1769-L33ER and want to use it as my collection PLC to...
Replies
5
Views
526
Hello All, is there any way to fetch remote controllers Mode Run/Remote Prog/Faulted etc. ( AB L8 Series) using CIP message, if yes please share...
Replies
5
Views
826
Back
Top Bottom