Execution Rules

Execution of an application for a controller follows these main steps within a loop:
  1. Read input
  2. Consume bound variables
  3. Execute target independent code (TIC)
  4. Process
    ISaGRAF®
    eXchange Layer (IXL) messages
  5. Produce bound variables
  6. Write outputs
  7. Save retain variables
  8. Process IXL messages
  9. Execute other controller tasks including diagnostics, synchronization, and cycle timing
TIP: When you force variable values, the computer running
AADvance-Trusted SIS Workstation software
or AADvance Standalone OPC server sends an IXL write message to the controller.
If the IXL write message is process right after
Execute target independent code (TIC)
in the application execution loop (step 4), the forced value is used for the producer binding, wired output, or retained variable.
If the IXL write message is processed right after
Save retain variables
in the current application execution loop (step 8), the step
Execute target independent code (TIC)
in the next application execution loop may overwrite the forced value with a different value for the producer binding, wired output, or retained variable.
To help achieve deterministic behavior, avoid forcing an:
  • internal variable that is bound as a producer or retained (internal variables cannot be locked)
  • unlocked output variable
  • When bindings are defined, variables consumed by a controller update after inputs are scanned and the variables produced for other controllers are sent before updating outputs.
  • When a cycle time is specified, a controller waits until this time has elapsed before starting the execution of a new cycle. The program organization units (POUs) execution time varies depending on the size of the application. When a cycle exceeds the specified time, the loop continues to execute the cycle but sets an overrun flag. In such a case, the application no longer runs in real time.
  • When a cycle time is not specified, a controller performs all programs then restarts a new cycle without waiting.
Provide Feedback
Have questions or feedback about this documentation? Please submit your feedback here.
Normal