Project Elements

A SynTACS project consists of several types of components


A module encapsulates other components or further modules. Modules provide structural organization and a hierarchy of nomenclature to the project. It is recommended to provide at least one module per physical component.



There exist three event types in SynTACS:

  • Controllable Events – Represent actions by the controller. In principal, controllable events can be blocked by a supervisor if they lead to undesired behavior.
  • Uncontrollable Events – Represent observations on the plant. These events can be defined by conditions over the input lines of the PLC. Since their occurrence reflects something that has already happened physically, they cannot be blocked or prevented.
  • Forcible Events [experimental] – Represent emergency actions triggered directly by the supervisor.



In SynTACS, there are four different types of automata:

Plant automaton – Defines a behavioral aspect of the plant. More precise, it defines the dependencies between a certain set of events, called alphabet.

Specification automaton – Defines illegal behavior. Often, a specification is simply a list of events which are globally prohibited. Nonetheless, a specification can contain multiple states too. For example, when an event b is prohibited to occur between the events a and c but legal otherwise, a two-state specification can be defined.

Synthesis automaton – A synthesis automaton is an intermediate representation, subsuming the aspects of one specification and one or several plant automata in one state representation. If it is not too large, it can be inspected using the automaton editor.

Supervisor – Synthesized by SynTACS from a specification or a synthesis automaton. It blocks only controllable events. Further, all transitions that carry a forcible event will be forced immediately at runtime. Only supervisors can be selected for PLC code generation.



Templates can be used to define the behavior of components generically. A template is an automaton, defined over abstract (or concrete and abstract) events. Abstract events may be organized in abstract namespaces. These can be used to address roles in the template instead of concrete components.

A template can be instantiated in any module. That instance can be used like a normal automaton, except its structure cannot be modified.

An instantiation defines a mapping from abstract onto concrete event. If a concrete event is found in the module containing the instance which has the same name as one of the abstract events of the template, it is mapped automatically. The user can always modify this mapping manually.

Analogously, namespaces can be mapped on modules, provided that the latter contain the required events. This corresponds to assigning a concrete entity to a certain role. An individually mapped event inside a namespace overrides the mapping of its parent.


A timer allows simple time measurements directly from the DES model. Detailed information on how to use timers will be provided soon…