Applies To:
  • CitectSCADA

After upgrade from V6.x to V7.x some tags using ABRSLINX driver fail with 4001f error (data item is greater than max allowed). These same tags can be written to successfully. It is just the read that fails. The default ABRSLINX driver version in v7.0 is v1.02.14.001 however the problem exists still if I make V7.x use the same ABRSLINX driver version as I was using in V6.x, so the problem appears to be unrelated to the driver version.

Since both driver versions are behaving the same, the issue here is in the V7 communcations model which is different from prior versions.

Example of the error (as captured with DriverTrace logging)

 <+05cd8204 09.906 Cmd: 04 CTDRV_READ         ErrDriver 262175 (0x4001f) and took 9ms
 <+05cd8204 09.906 UnitType: 786446 (0xc000e), UnitAddr: 6560 (0x19a0), BitWidth: 1, UnitCount: 1328, RawType: DIGITAL

There are a couple of possible reasons for this occurring in V7 (and not before).

The default blocking constant in use before V7 came from the protdir.dbf file and was 912 bits (114 bytes) in V7 this comes only from the ini file setting (the protdir is no longer used for this). The default for ABRSLINX is 192 ie larger than before.

This can be set back to the previous setting in the citect.ini file (this was the solution for this customer)


The second possibility for causing this is, before V7 the system would only request from the PLC, tags that were actually in use in the project (even if some extras were in the variable.dbf they would not get requested). This has changed in V7 as it optimises the way it requests its data from the PLC at startup, based on the tags in the variable.dbf

So if by chance there are tags defined in the variable dbf that are not used in the project and don't exist in the PLC, then in V6 this would not have been a problem, in V7 it would cause the error you are seeing.

Please refer also to the related article KB Q4190 on [ABRSLINX]MaxReqSize