## 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:

- The basics of the CIF language.

- The synthesis-based engineering approach.

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:

- Synthesis-based engineering example

- Synthesis-based engineering in practice example