📖HomeBack The Logic engine is single threaded. This means that ClearSCADA only runs one Logic program at a time. To protect Logic programs from being affected by poorly written Logic programs that cannot execute correctly, ClearSCADA includes an Instruction Limit. The Instruction Limit prevents programs with infinite loops from 'locking out other programs.
A Logic program will run:
At regular intervals (On Interval). The intervals are defined in the Logic program's configuration.
At regular intervals but only if its inputs have changed (On Interval with Input Change Detection enabled) The intervals are defined in the Logic program's configuration.
At regular intervals only if the source of the Trigger has changed value (the Trigger is a value that is not used as an input in the Logic program). The source of the value is defined in the Trigger setting of the Logic program's configuration.
At regular intervals only if the trigger has changed value and the Logic program's inputs have changed.
When its inputs are processed (On Input Processed). Each point or variable update is queued and the Logic program will run once for each input update. The input updates are queued according to the time at which the server receives the updated values.
When it is triggered by a change to a value in the database
When the Execute action/method is triggered by a user, master station schedule, script, VB program etc.
When a Logic program is due to run, it is added to an execution queue. If there are no other Logic programs waiting in the queue, the Logic program will run immediately. However, if there are other Logic programs in the queue or another Logic program is already running at that time, the Logic program will not be executed immediately - it waits in the queue. When the running Logic program has executed successfully, the next Logic program in the queue is run. The queue orders the Logic programs according to the times at which they were intended to run.
It is rare for Logic programs to still be running when another Logic program is set to run. This is due to the Instruction Limit setting for Logic programs preventing the programs from taking an excessive amount of time to run. It also prevents Logic programs with infinite loops from 'locking' out other programs.
Each Logic program can be allocated a Priority number (0 by default). If multiple Logic programs are set to run at the same time, the Priority numbers of the Logic programs are used to determine the order in which the Logic programs are run. ClearSCADA will run the Logic program with the lowest Priority number first. The Priority number is only used when multiple Logic programs are set to run at the same time. At all other times, the Logic programs are run according to the time at which they were added to the execution queue.
If there are Logic programs set to run at the same time and these programs also have the same Priority numbers, ClearSCADA will run the Logic programs according to the amount of time for which they have been queued. The Logic program that has been queued the longest will be executed first.
There are three Logic programs: ST Program 1, ST Program 2, and ST Program 3. ST Program 1 has a Priority number of 3, ST Program 2 has a Priority number of 5 and ST Program 3 has a Priority number of 0. All of the ST Programs are scheduled to run at 10:00.
A Function Block Diagram named 'FBD 6' has a Priority number of 0 and is scheduled to run at 10:01.
At 10:00, ClearSCADA runs ST Program 3 as it has the lowest Priority number (0). When ST Program 3 has run, ClearSCADA will run ST Program 1 as it has a Priority number of 3, and when ST Program 1 has run, ClearSCADA will run ST Program 2 as that has the highest Priority number (5).
ST Program 2 is not run until 10:02. The Function Block Diagram 'FBD 6' has not been executed, despite being scheduled to run at 10.01 and having a lower Priority number than ST Program 2. This is because ST Program 2 was scheduled to run before 'FBD 6'. The Priority number is only used if Logic programs are scheduled to run at the same time.