Hi:
> Lowering the EIP buffer limit from 500 to 480 has alleviated the problem!
Excellent!
480 has been the default since April 2018, so we're good.
> It appears that the error is not related to the specific set of gate valve tags;
> .. I can include .. 256; when I include one more <record> for a total of 257, I get a similar error as before:
> 2020/01/16 12:04:21.2446 EIP process_ScanList: Error in response
>..
> 16) service 0xCC (CIP_ReadData-Reply), status 0x00 (Ok)
> 17) service 0xCC (CIP_ReadData-Reply), status 0x06 (Buffer too small, partial data only)
"Buffer too small" is the normal error indicating buffer size issues.
When you run "drvEtherIP_report 10", you'll see how the driver arranges all the tags into "scan lists", and for each tag it knows how many bytes we need for the request and response.
So when it's time to handle the "1 second scan list", it build a request for reading tag 1 on that list. Is both the request and the expected response < 500 bytes? OK, add tag 2 to the request. Is both the request and the expected response < 500 bytes?
OK, add tag 3 to the list and so on. Once we hit the buffer size, we send that request, handle the response and then move on with the remaining tags in the list, again assembling a request, etc.
In this example, we thought we're OK because the response should be <500 bytes, but the PLC said "Buffer too small" because its buffer is in fact closer to 480 bytes.
So if we stay below 480, we're all happy.
In your original error message, the request must have gotten to large, before we ever got the response.
Yes, packing the data into arrays would be good for performance, but on the other hand, if you're fine with what you have now, then that's OK as well.
-Kay
|