Logic Execution - Johnson Controls - Metasys - LIT-12011147 - Software Application - Controller Configuration Tool - 13.1

Controller Tool Help

Product name
Controller Configuration Tool
Document type
User Guide
Document number
Revision date

Table 1 answers common questions about how logic executes within the tool.

Table 1. Logic Execution



Does each module (activity, hybrid activity, or logic block) in the tool translate into one independent process?

The Control Sequence is a single process in the control engine. The Control Sequence executes its application as follows:

  • On startup, the Control Sequence executes every module (activity, hybrid activity, or logic block) at the Control Sequence level one time.
  • After startup completes, only those modules that have an input change, or an internal logic block that requests execution run. This means that not every activity executes on every execution of the Control Sequence. This also applies to the logic blocks and sub-activities inside an activity or hybrid activity.

Do all processes execute once on startup, without the need to see a change of state?


Do processes execute in any particular order (top-to-bottom or left-to-right) based on how they appear on the screen?

A sequence order is generated based on the connections between the modules. Logic is generally executed following the data flow (typically, a left-to-right flow across the logic diagram).

Does each process trigger on any binary change of state, analog COV, or on some predetermined timer?

Each module within the control sequence (or logic block or activity within a module) executes whenever an input changes. An input change happens when a change occurs in the value, reliability, or reference signature. PID loops execute based on the process period, not based on change of input values.

Is there any way to exclude selected triggers?


If a loop is created within a process, including one or more LVs, when and where does the loop start and stop and what controls the number of times the loop executes?

The last blocks to execute within a module are always the Last Value blocks. Otherwise, the execution follows the data flow. The process only executes once per input change. If the process feeds the output of the Last Value block back around to one of the inputs of the block, the process executes again in a short amount of time. This amount of time depends on how busy the processor is at that particular moment.

Do the State Tables execute as a single large process or as independent tables?

The State Tables execute as a single large process. Each column is evaluated top-to-bottom when the State Selection table runs due to an input change.

For Hybrid Activities, does each Layer translate into an independent process, with one of these processes enabled and the rest disabled at any given time?

Yes. On an input change, the Event section executes to determine the active State. Then, that State executes the blocks within it.

If a piece of unreliable data makes it through to one of the hardware outputs, what gets written to that output?

The last reliable value. If the hardware output has never received a reliable value, it uses the Relinquish Default value.

If a hardware input changes its value but is flagged as unreliable, do the affected process executions continue?

Unreliable inputs are not processed. Instead, the failsoft, default, or last reliable value is used.

Does the Timer block require a change of state to execute for the first time? For example, the input of an On Delay is set to True on at startup; however, the timer function does not execute.

No. The timer logic blocks are set as On Delay with a duration of 60 seconds. Figure 1 shows an example timer application. During Simulation or Commissioning in a controller, both of the outputs connected to the Enum Outputs come on at the same time. The top Timer block input defaults to True.

Figure 1. Timer Logic Execution Example