We recently have experienced an unusual phenomenon in a Logix5000 controller which I'm trying to understand better and am hoping someone can explain.
We discovered the issue after we updated the IGS driver on our iFix SCADA v3.5 server from 7.25f to 7.25i, but we're absolutely mystified as to how that could have caused this issue to show up (and maybe it isn't the cause).
Here's what is happening (sorry for the verbosity, but it's a bit complicated)
We write our batch number from the SCADA server using a TX block to a String data type in the PLC. The IGS driver address is
AI700_PCS.AI700_PCS.CIP_BATCH_NUMBER.DATA/82@STRING
We write just to the .DATA field of the string. The .LEN field of the target String in the PLC updates correctly to match the length of the entered string.
In our PLC code we have a COP statement that copies the batch number to the batch number buffer. The statement is COP CIP_BATCH_NUMBER.DATA[0] CIP_BATCH_NUMBER_BUFFER.DATA[0] 82
i.e. we just copy the .DATA and copy all 82 character fields. However in this case the .LEN field of the BUFFER string DOES NOT update to match the length of the BATCH_NUMBER string. The values in the BUFFER .DATA fields do update, so the string is there.
Later in our batch we read the BUFFER back into our SCADA using a TX block with address AI700_PCS.AI700_PCS.CIP_BATCH_NUMBER_BUFFER.DATA/82@STRING
but the string that gets read by the BUFFER in the SCADA only reads as long as the .LEN. Because the LEN is not updating properly, we have not been getting the correct BUFFER string back into the SCADA (i.e. if .LEN is 0, then the BUFFER string will be empty in the SCADA even though the BUFFER .DATA fields in the PLC have values.)
If I manually change the BUFFER string in the PLC, then the LEN updates properly, but when the string gets updated by the COP statement then the .LEN DOES NOT update.
Has anyone seen this before? What is really strange to us is that this code worked fine just 2 days ago, and again, the only change has been an update to the iFix IGS driver, we have not touched the PLC at all.
Any help is greatly appreciated,
Regards,
Greg Krueger
We discovered the issue after we updated the IGS driver on our iFix SCADA v3.5 server from 7.25f to 7.25i, but we're absolutely mystified as to how that could have caused this issue to show up (and maybe it isn't the cause).
Here's what is happening (sorry for the verbosity, but it's a bit complicated)
We write our batch number from the SCADA server using a TX block to a String data type in the PLC. The IGS driver address is
AI700_PCS.AI700_PCS.CIP_BATCH_NUMBER.DATA/82@STRING
We write just to the .DATA field of the string. The .LEN field of the target String in the PLC updates correctly to match the length of the entered string.
In our PLC code we have a COP statement that copies the batch number to the batch number buffer. The statement is COP CIP_BATCH_NUMBER.DATA[0] CIP_BATCH_NUMBER_BUFFER.DATA[0] 82
i.e. we just copy the .DATA and copy all 82 character fields. However in this case the .LEN field of the BUFFER string DOES NOT update to match the length of the BATCH_NUMBER string. The values in the BUFFER .DATA fields do update, so the string is there.
Later in our batch we read the BUFFER back into our SCADA using a TX block with address AI700_PCS.AI700_PCS.CIP_BATCH_NUMBER_BUFFER.DATA/82@STRING
but the string that gets read by the BUFFER in the SCADA only reads as long as the .LEN. Because the LEN is not updating properly, we have not been getting the correct BUFFER string back into the SCADA (i.e. if .LEN is 0, then the BUFFER string will be empty in the SCADA even though the BUFFER .DATA fields in the PLC have values.)
If I manually change the BUFFER string in the PLC, then the LEN updates properly, but when the string gets updated by the COP statement then the .LEN DOES NOT update.
Has anyone seen this before? What is really strange to us is that this code worked fine just 2 days ago, and again, the only change has been an update to the iFix IGS driver, we have not touched the PLC at all.
Any help is greatly appreciated,
Regards,
Greg Krueger