Since a week or so we have the following error popping up at our production machines:
CAdsWatchServerR0::AdsParseSymbol invalid array index!
The error are generated each plc cycle, filling up the windows event logger, because we forward the events:
The errors disappear after a reboot of the PLC, but after some time they reappear.
What is the cause of this error? And how can we locate its origin?
Answer from the Beckhoff support:
In the new ADS *.dll the accesses via ADS are better monitored. This message means that you try to access an array index in the controller from a C# or other high level language via ADS, which is not available.
Example: In the PLC project a
test :ARRAY[0..2] OF INT;
was defined. However, in the high-level language program you want to access e.g.Test[3]
, which is not defined in the PLC.
In our case it turned out to be the HMI (TF2000). There was a user control in the HMI which had a symbol link to an array index which was no longer there.