nimbuscontrols / EIPScanner

Free implementation of EtherNet/IP in C++
https://eipscanner.readthedocs.io/en/latest/
MIT License
233 stars 93 forks source link

Communicate to a device without config assembly #34

Closed gpenzo closed 3 years ago

gpenzo commented 3 years ago

Hello. I am using the EIPscanner with a plc and it works perfectly. But I also have a second device which doesnot have a config assembly. Only input and ouput assemblies. What do I need to do with the follow line of code to communicate to the device. parameters.connectionPath = {0x20, 0x04,0x24, 151, 0x2C, 150, 0x2C, 100}; // config Assm151, output Assm150, intput Assm100 Does EIPScanner support a device without input assembly?

Many thanks Grayson Penzo

jadamroth commented 3 years ago

Hi Grayson, thanks for using the library.

  1. Out of curiosity, and for my own knowledge, what kind of PLC are you using?
  2. Will you please provide the model of the second device and a eip/cip datasheet if you have one?
  3. Have you downloaded the EDS file yet? - https://github.com/nimbuscontrols/EIPScanner/blob/master/examples/FileObjectExample.cpp
gpenzo commented 3 years ago

The first PLC is a safety plc with a ethernetIP gateway. See sick FX0-GENT Second plc without a config assembly is a navigation module from bluebotics. Attached the eds file from the company. I try FileObjectExample but it does not support it. In wireshark I see :Service not supported. I try to debug it but I do not have access to the Ethernet/IP specification yet. I was surprised that I need to be in the odva club to get it. I use your library because it is the only one which works out of the box. Thanks for the effort.

ANTEtherNetIP.txt

jadamroth commented 3 years ago

Sorry for the confusion. I meant eip/cip datasheet for the device your using. For example, RA has this one for their Powerflex 755 - https://literature.rockwellautomation.com/idc/groups/literature/documents/um/750com-um001_-en-p.pdf

The EDS you sent me is the same one that's usually downloaded from the FileObjectExample.cpp I provided, so this is a good start. From first glance, your device looks like it should support implicit connections

We have not tested implicit connections nearly as much as explicit messaging, but it appears you've looked at this example given the connection path you've provided - https://github.com/nimbuscontrols/EIPScanner/blob/master/examples/ImplicitMessagingExample.cpp

I'm busy for the next few days, so may not be as quick to respond until the weekend, but try these

  1. What does the console response and wireshark dump say when you try to connect with implicit
  2. Try following along similarly from this issue - https://github.com/nimbuscontrols/EIPScanner/issues/30 and this example - https://github.com/nimbuscontrols/EIPScanner/blob/master/examples/vendors/yaskawa/mp3300iec/Yaskawa_AssemblyObjectExample.cpp
gpenzo commented 3 years ago

They do not have a eip/cip data sheet. I ask them to send me a wireshark log of a device talking to it. And I see the connectionpoint id are different than mention in the EDS file. In the EDS file it only say Assem1 and Assem2. But the connection point is 0x69 and 0x70. Will try it tomorrow and let you know if it works. So the array should be parameters.connectionPath = {0x20, 0x04,0x24, 0x03, 0x2C, 0x70, 0x2C, 0x69};

gpenzo commented 3 years ago

Hello. Just to let you know it is working. The problem is with the plc it does not behave as it should. the date from the PLC towards the library does not go to port 2222. But it goes towards the port source port of the O->T message. I changed the library to use the source port as receiving port when getting data form this vendor. Thanks for the help.