My goal is to use Ethernet/IP explicit messaging to communicat with a Keyence SR-650 barcode reader. It has been given its' own class with well defined class, instance, attribute, and service ID's. I am able to transfer information with Get_Attribute_Single, but do not know how to send/receive serice data. What I need to know is how the LabVIEW toolkit implements the service part of the ODVA Ethernet/IP specification, and how to use it.
I'm looking into this a bit more, but I have a few questions to help clarify. What service data are you attempting to send/receive? Can you post the specification for the barcode reader? What specifically would you like to know about the LabVIEW toolkit? How service codes are implemented?
Apologies for the misunderstanding. Thanks!
The entire manual is 282 pages, I have attached a 6 page excerpt that covers the subject at hand. This custom class 105 has only one assembly (pages 1,2), which I am able use, but it is limited in scope to mostly status and minor bit control. The bulk of operation is done through services (page 3). I am most interested in invoking service 75 (Start), 76 (Stop), 85 (Get Data), 90 (clear read) and 83 (clear error). It would also be nice to be able to invoke the Ethernet/IP standard service 5 (reset) on the standard identity class 1 (page 3). Pages 4 and 5 explain clearly how to use Class/Instance/Service to achieve a desire result, The explanation also includes the service data that must be sent and data that is received after the service is performed.
I have been reading and writing attribute data on assemblies quite sucessfully for several projects. The toolkit is able to use services 14 and 16 to get/set attribute data. The answer I am seeking is how to use the toolkit to invoke any other service on a Class/Instance.
Thank you for assisting me with this question.
The interface NI EIP toolkit expose Set/Get_Attribute_Single, so the services that you are interested 75 (Start), 76 (Stop), 85 (Get Data), 90 (clear read) and 83 (clear error) can not be achieved directly.
I'd suggest you use a combination of Set/Get_Attribute_Single VIs to read/write the attributes available to achive the same.
For example, 90 (clear read) means "Clears the Read Complete and Read Failure bits", and should be achieved if you use Set/Get_Attribute_Single to write 0 to class 105 instance 1 attribute 100 the second UINT.
This class suppoort s service 14, get attribute single, but regretfully does not support service 16, set attribute single, which implies everything in the assembly is read only. Also, I could not find an equivalent assembly attrribute for service 85, which returns the barcode data in a BYTE array. The assembly just returns counts and status in UINT's, but not the actual data.
This device also supports TCP socket connections, and I have been able to use that to communicate. I prefer using Ethernet/IP because the protocol manages the connection for me, whereas sockets require I manage the connection myself. Not a big deal, but it still makes the toolkit easier to use.
Please consider augumenting your toolkit to expose service requests that support input argument and output result arrays. Keyence is a major player in the vision industry, and most of their devices, barcode readers, visions systems, etc. implement this custom-class with service based operation.
Thank you very much for the input. I'll put that in track as a task. Hopefully it can be implemented not too late.