Applies To:
  • CitectSCADA 5.50
  • CitectHMI 5.50

With version 5.5, changes where made to the I/O Server cache handling code to allow blocked reads to get data from several cache DCBs if they contain data.

Previously, if a read could not get its data from a single cached DCB, it would be #COM or #WAIT. On writes, the DCB for the data in cache is purged. This means other data in the cached DCB is no longer available for reads. Thus #COM or #WAITs will occur. A new option exists to not purge the cache DCB on writes and update the cache data after the write has been confirmed. The new parameter


is used to control the behaviour for finding a DCB in an I/O Server unit cache.


A NEW INI parameter has been included to use new cache features. The default is the existing Citect handling.

[IOSERVER]CacheOptMode=0 ! default 0

This parameter is used to control the behaviour for finding a DCB in an I/O Server unit cache. By default, the I/O Server only searches for a DCB to be within or equal to a single cache DCB. e.g. cache has points 1 to 10, and then 11 to 20, and a DCB wants 5 to 6, all is OK. If however the read was for items 9 to 11, the system would not return a match and would request a read from the driver.

For a disconnected dialup unit, this would cause a #COM or #WAIT.

CacheOptMode Values are :

1 - First come first served - Tells the I/O Server to search through all cached DCBs looking for the data, once it is found return.

2 - Scan all cache for latest entries - Forces the scan to look through ALL cached items to find data which is the MOST recent.

4 - An incomplete match is OK - Tells the system that if some items match and some are not found, to consider this a total find.

+8 - Allow behaviour on all devices, by default the settings above only apply to remote units.

+16 - Allow written data not to remove cache item and update value on return, e.g. 1 to 10 in the cache, write to 8. The default behaviour would be to remove the whole cache item so a fresh read of 1 to 10 would be needed on a write to 8. With +16 added, then 1 to 10 stays in the cache, and item 8 would be updated on the REPLY from the driver.

Normally for dialup devices, CacheOptMode=1 would cover most requirements.