Synthesis-based engineering in practice

This section explains concretely how to use the CIF language and toolset to apply synthesis-based engineering of supervisory controllers. Before reading this section, please familiarize yourself with:

Development process

The process to develop supervisory controllers using the synthesis-based engineering approach typically following several steps. We’ll briefly discuss each of the steps and provide some practical guidance:

Modeling the events

Modeling the actions that can happen in the system as events.

Modeling the plant

Modeling the plant automata that represents the event behavior of the to-be-controlled system.

Modeling plant relations

Modeling the relations between the various plant automata.

Modeling the requirements

Modeling the requirements that restrict the behavior of the plant.

Marking

Dealing with marking of the plant and requirement automata.

Supervisor synthesis

Performing supervisor synthesis on the plant and requirements to automatically synthesize a supervisor.

Verification and validation

Verifying and validating that the synthesized supervisor controls the system correctly and as desired.

Controller implementation

Implementing the validated supervisory controller using automatic code generation.

Advanced topics

Furthermore, the following more advanced information is available:

Incremental controller development

Explains how to incrementally develop your controller to prevent commonly encountered issues when applying synthesis-based engineering.

Resolving issues with too limited behavior

Explains how to resolve issues with too limited controlled system behavior, for instance due to conflicting requirements, revealed through synthesis or validation.

Supervisor synthesis performance

Explains how to resolve performance and memory issues for supervisor synthesis.

Non-monolithic supervisor synthesis

Explains how to incrementally develop your controller to prevent commonly encountered issues when applying synthesis-based engineering.

Practical example

For how this process can be used in practice, based on an example, see: