Applies To:
  • CitectSCADA 3.xx, 4.xx, 5.xx, 6.00
  • CitectHMI 3.xx, 4.xx, 5.xx, 6.00

In my project I have configured a large number of Events. I have used the Computer Setup Wizard on my Display Clients to choose the Events that should run, however, upon testing, I have found that only the first twenty of my Events are actually being run when they are triggered. Can you help resolve this?

The maximum length of any parameter in the citect.ini file is 254 characters. A string of this length can be read and written to by the ParameterGet() and ParameterPut () cicode functions, and a local cicode string variable can also contain this many characters. Ordinarily this is sufficient length for parameters but the [Event]Name parameter is one example where this can be an issue.

There are several options to work around this limitation including:

1. Reduce the number of unique event names by renaming events to a common name whenever they are always going to be run together on event servers.
2. Reduce the length of the event names so more events can be run.
3. Use reports instead. Reports can also be triggered by time or an expression. You can execute a report which contains cicode and this will run on the primary report server. It will also run on the standby report server if the [Report]RunStandby=1 parameter is set. To run on clients, you can use Remote Procedure Calls. Refer to MsgRPC in CitectSCADA Help for further information.
4. Use alarm category alarm actions. You may need to create unique alarms and alarm categories to replace each event.

Note, using an alarm event queue allows individual alarm actions to run but then Events are needed to execute when alarm states change. Refer to Q3909 for further information on this topic.
Note also, with Alarm actions you can use the TaskNew() cicode function to launch another function as a background task rather than run in foreground (refer to the CitectSCADA Help for more information). Alarm category actions must execute without delay. Reports are run as background tasks, but do not call Report() directly from alarm category actions as Report() is a blocking function. Refer to Q1077 and Q2588 for further information.