06-05-2009 05:40 PM
Hi Ed,
The yellow question mark is expected because Rockwell's software does not have a known profile for NI's device. This will not cause any loss of functionality when using the Generic EtherNet/IP Module profile.
I believe that error on the PLC is a timeout error indicating it is not getting packets from the remote device. It sounded like you were using a laptop so I am assuming the LabVIEW side is running Windows. Is that correct? Since the remote I/O data is sent as UDP multicast data from the I/O device to the PLC, it is required that your networking hardware support this multicast traffic. Can you describe what kind of network devices sit between the laptop and the PLC? Is it possible you can try replacing the switch you are using with a basic non-managed one that just treats multicast as broadcast?
if you continue having issues, you may want to check and ensure it is not some sort of firewall issue on your PC. You could try downloading a copy of Wireshark and having it capture traffic on your network port and ensure that the I/O data is being sent out. If you create such a capture you could attach it and I could verify that the data is going out.
Eric
06-05-2009 05:59 PM
I'm using a crossover cable between my laptop and the controllogix PLC. I turned off the McAfee Security on my laptop and it didn't make any difference.
I'll download and try Wireshark on Monday.
Ed.
06-05-2009 06:33 PM
Ed,
Also verify that your IP configuration correctly set on both devices connected via the cross-over cable... If you are using the identical configuration for messaging then it would indicate that it is likely set up correctly.
Eric
06-08-2009 07:02 AM
06-08-2009 10:08 AM
Hi cruz,
Could you elaborate on your question a bit? If you're alking about the "Demo EIP Adapter.zip" Class 1 adapter demo I posted, there should be no IP addressing information needed. In that case the PLC initiates the communucation with the LabVIEW system, so you configure the IP address info of the LabVIEW system into RSLogix5000. If you use the Messaging VIs, they do take network addressing info because the LabVIEW side initiates the communication with the PLC.
Does this help?
Eric
06-10-2009 12:09 PM
Hi,
I have been able to communicate from LV 8.6 to AB CompactLogix L32E fairly easily... the problem I am having is the LV program is looping at 300mS waiting for a 'trigger' from the PLC... very often [every 20 seconds or so] the EIP Read VI times out. I have increased the loop rate, timeout, etc... For now, I am clearing the error and continuing... but it seems to be the result of a deeper issue... any ideas?
Thanks in Advance,
Bill lG
06-10-2009 01:00 PM
Hi Bill,
I ran into an issue with another customer that was also using a CompactLogix and getting timeouts. After debugging it with Wireshark it revealed that we were getting packet loss on the network link that was causing TCP re-transmissions that ended up making the transaction request/ack take longer than the timeout period. Upon further investigation, the cause of the packetloss apeared to be the result of a duplex mismatch between the CompactLogix's Ethernet port and the network switch it was plugged into. I would check and see if you can confirm that the speed/duplex that the CompactLogix reports is identical to whatever it is plugged into. If your switch is managed and can give statistics you might want to check and see if it shows any CRC errors. You can also check the statistics counters of the CompactLogix's ethernet port inside of RSLogix5000.
Another option you can try (although it doesn't solve the root problem) is you could use the Class1 Adapter mode. In this communication mode it uses UDP in a scheduled fashion and if a packet is lost it will get data at the next cycle time rather than try to retransmit data. You may find this works better for your application anyways if you want to poll for your trigger at a high speed.
Eric
06-10-2009 01:41 PM
Eric,
Thanks for your speedy reply! It IS a managed switch, but on the PLC and the switch, I see no CRC errors [or any other physical layer errors]. I will likely just re-write to use the I/O [Class 1] method... Thanks again!
-Bill
06-10-2009 04:53 PM
Hi,
I've had success with LV 8.6.1 reading and writing DINTs from a ControlLogix PLC using ethernet IP however I'm having problems reading and writing to controller scoped Boolean arrays. I can read the whole arrays, but I cannot read beginning at a certain offset. For example if the tag is a boolean array ( BOOL[32]), I can retrieve all the values by reading BOOL, I cannot however just read BOOL[3]. (I understand that by reading the entire array I have the data in element 4,, the more important problem is with writing to elements of the array.)
The error I get when trying to read BOOL[3] is:
Error -251723760 occurred at EthernetIP Tag Read BOOL.vi;
Details: CIP Error - Extended status may be available
CIP Status: 0x5 (Invalid destination/class/instance/structure)
I also cannot write to a boolean array. I can only write to a non-arrayed boolean tag.
When I try to write to BOOL the error I get is:
Error -251723760 occurred at EthernetIP Tag Write BOOL.vi;
Details: CIP Error - Extended status may be available
CIP Status: 0xff (General error)
CIP Extended Status: 0x2107 (Type is invalid)
When I try to write to BOOL[1] the error I get is:
Error -251723760 occurred at EthernetIP Tag Write BOOL.vi;
Details: CIP Error - Extended status may be available
CIP Status: 0x5 (Invalid destination/class/instance/structure)
For DINTs, I can read begining at an offset and write beginning at an offset. For example I can read and write the five elements of a DINT[32] beginning at say DINT[7] and ending at DINT[11]. I cannot however access the particular bits on a DINT word. For example I cannot read or write DINT[3].4 (The fifth bit of the fourth word.)
Any thought on what my issue might be?
Thanks
Carter
06-10-2009 05:17 PM
I was just now playing around with reading and writing booleans and bits within DINTs, and these weren't working right. Everything else has worked by the way. Reading DINTs has worked and DINT arrays has worked, but is it possible to read a bit within a DINT or DINT array? For example if there was a DINT variable array named DINTest, is it possible (and what is the correct syntax) to read, say, DINTest[3].5 (this is bit 5 of the element 3 in the DINT array). I tried using it directly entered as DINTest[3].5 in the Tag Name field, but it didn't work. I tried it with both a DINT read and a BOOL read. Under the bool read, it gave error "CIP Status: 0x5 (Invalid destination/class/instance/structure)". Same error for a DINT read.
Another problem I had along these lines is accessing an individual boolean in a boolean array. Say there is one called Booltest that is an array of 32 booleans. If I just want to read (or write) Booltest[6] for example, I couldn't figure out the syntax for this, or if this was even possible.
I believe I also tried some options including different element sizes ("Number of Elements") of 0 and 1.
The help for these blocks allude to this being possible indicating to use dot fields and square brackets, so I assumed this would work. If there is something funky here, then I suggest the help be updated to reflect this and indicate what is and isn't possible.