06-18-2009 01:49 PM
Vincent,
Unless you have a need to cancel pending operations or you are doing something uncommon such as using VI server to load and run the EtherNet/IP VIs and want to ensure the session remains open between calls, you should not need to mess with the sessions. You can leave the inputs as the default session and LabVIEW will handle determining when to open and close it.
Keep in mind the SLC500 is likely using an older 10Mbit network connection and likely has a slower CPU than newer PLCs. If there is an HMI polling at high speeds as well you may be contending for limited messaging resources on the PLC as well as bandwidth bottlenecks. If you want to see the pure PLC servicing time minus whatever overhead the driver adds you could download and install Wireshark to sniff the network connection and simply look at the time delta between the request being sent out and the response coming back from the PLC.
Eric
06-18-2009 01:51 PM
Hi Eric,
It really clarifies.
Best regards.
Vince
06-24-2009 03:06 PM
Is there a array size limit on this driver? If I access 100 elements of my 10000 element array the code works fine. If I try little more than 100 elements I get the following error. I have the timeout set for 5 seconds but I get the error before 5 seconds.
Error -251723760 occurred at EthernetIP Tag Read REAL.vi;
Details: CIP Error - Extended status may be available
CIP Status: 0x6 (Partial data sent)
06-24-2009 03:17 PM
Dazach,
The amount of data that can be encapsulated in a standard explicit message is ~504 bytes (depending on what you are doing, some data may be taken up in headers). Since each REAL takes 4 bytes, you are likely getting very close to this limit at 100 elements. If you try to read/write more than that you will likely get an error such as what you got. The PLC is saying it can't send that much data into a single message.
You will likely need to split your request into multiple chunks below the maximum size.
Hope this helps,
Eric
06-28-2009 11:19 PM
Hi Eric,
I tried with Raw Read vi to read a 2-D array of DINT. The data read back is a 1-D array of single byte. With some conversion I can have the data I want. But with Raw write vi I'm not sure how I can send a 2-D array. So I think I will go with the 1-D array of DINT using DINT read and write vi.
For the I/O assembly I followed the way in your demo code and it's working.
Thank you so much for the help.
06-29-2009 11:12 AM
Is there an updated statement of direction for NI support of Ethernet/IP?
I'm in need of standard Ethernet/IP _client_ functionality in LabVIEW. I need LabVIEW to access an Ethernet/IP-enabled industrial sensor and receive data from it using the implicit (background-polled/strobed/cyclic/changeofstate) methods.
It appears that I can use the NI library and/or Sivamgr's (generously contributed) code to do _explicit_ messages to the device. This will help to some extent to prove the concept but it falls short.
I'm seeing a disconnect between statements in some of the whitepapers and videos of NI folks talking about the direction of Ethernet/IP support. At some point, the project re-focused on becoming an adaptor (server) for AB controllers. This is fine, but it seems somewhat of a departure from past network support, such as Modbus, where simple functionality was added to LabVIEW to let it be the controller for multiple networked sensors and devices.
Of course this project had to start somewhere, and I'm not complaining. But as a strong NI supporter I feel the need to point out the discrepancies so it can be made stronger. I'd like to close by saying I really encourage you to support the use-case of someone like me needing to simply plug in an industrial EIP device, load in the EDS into LabVIEW, and start reading and writing data right away. That is the kind of situation that impresses uninitiated managers that LabVIEW is a serious tool and not just a "toy with pretty graphs for programmers who have trouble typing".
So, I hope someone can take a moment to create a "roadmap" of Ethernet/IP support that goes beyond AB PLC-centered functionality. Also, if I have mis-stated anything here, _please_ let me know so I can get back on track.
Thanks,
Mike
06-29-2009 05:12 PM
07-01-2009 02:21 PM
I'm trying to read/write tags from a ControlLogix5550 controller on backplane 1, slot 0 with IP address 10.10.100.5. I believe the correct network path is "10.10.100.5,1,0" but no matter how I set that up I still get the "-251723767, Unable to connect to the network path specified" error. I am connected from the PC to the PLC through a switch.
In keeping with previous posts, I tried wiresniffer and it shows an incorrect header checksum on the packet going from the PC out to the 5550 (checksum 0x0000, should be 0xb4d8). Does this sound familiar to anyone? Thanks,
Charlie
07-01-2009 02:38 PM
Charlie,
It sounds like you may have an IP connectivity issue you need to figure out first. The error message would indicate a local connectivity issue rather than the PLC returning an error that the path is incorrect. It is likely that your IP configuration between the PLC and the PC does not match. What is the output of "ipconfig" from the command line on the PC? Can you ping the PLC?
With regards to the incorrect checksum, this is expected behavior with most network cards/drivers these days. The network card does checksum offloading and computes the checksum before it goes onto the wire. The network sniffer is sitting higher-up in the software layers before this checksum is added and thus does not ever see the filled-in checksum.
Eric
07-15-2009 11:41 AM
This is a question about configuration of Rockwell's RSLogix 5000. I'm using version 16.03.
I'm able to use the ETHERNET-MODULE-generic I/O module to communicate with my home-brew Ethernet/IP adaptor device. The generic ethernet module process completely bypasses using an EDS file.
I don't have a copy of RSNetWorx for Ethernet/IP so I don't know what it does with an EDS file, but having used RSNetWorx for DeviceNet, I understand how the EDS is used to configure a scanner module attached to the PLC, but I know the ControlLogix controllers don't need RSNetWorx.
The big question is how to create my own custom add-on I/O module for my device so that it may be added to the I/O Tree within RsLogix 5000, instead of using the "generic" module. Just poking around in the filesystem, I see that some XML files are involved, etc. Is there a published spec for this? A Rockwell developer's program that I must join, etc?
Thanks,
Mike