Applies To:
  • CitectSCADA 6.XX
  • CitectHMI 6.XX

While developing a new project I noticed a strange thing when the communication breaks to a PLC.

If the communication breaks then the last values are cached on the page itself.  I have configured a rectangle object with yellow as the ON color and white as OFF.
- we start off with normal communication and the variable is true.
- then break the communication, the rectangle object remains ON (yellow colour) and a dotted grid is shown over it. Manually refreshing the page will result in the object updating to OFF(white colour).

Is it possible to get the values on the page to go to 0 when the communication breaks without manually updating the page ?

We are using citect version 6.10 and the PS-Direct driver, but all drivers seem to have this problem.

This is normal behaviour for Citect. The IO information is cached on a per page basis. The only commitment of CitectSCADA on Comms fail is that it will show the dotted grid over animations and #COM for numerical animations. Changing the page would load a fresh cache which would be empty since there are no comms.  Loss of comms is not expected to flush the local page cache.

It is possible to refresh the page when a communications failure occurs. Using cicode functions to check the communication status and refresh the page when necessary.

The following functions can be used to refresh the page when a communications failure occurs.

1.SetEvent(7, 0)
2.OnEvent(7, ReloadPage)

Note: Event 7 indicates a Page communication error.  Refer to CitectSCADA help files for a detailed description on the functions.

You would then write a cicode function (in this example called "ReloadPage") which gets the current page and refreshes it.  Either Pagegoto() or PageDisplay() can be used. 

OnEvent, SetEvent, Refresh Page after comms failure