Simulation

The DESTool simulation module interprets relevant generators with synchronized events using the executor classes provided by the libFAUDES simulator plug-in. The main objective is to animate a discrete event system design in order to study the effects of a synthesis method. There is no intention to implement a fully featured DES simulator within DESTool.


Configuration

The Animation tab from the project browser provides a configuration button. You can set a filter to simulate plant components and/or supervisor components only. You can also set a log file to record the simulation trace for later analysis.

For hardware-in-the-loop simulation, you can choose an optional faudes IO-device; see IoDevice plug-in. Note, however, that a DESTool animation introduces some latency which may or may not be tolerable for the plant at hand. If timing turns out critical, the fallback is the command-line too simfaudes. A configuration file can be generated via the File-menu, "Export FAUDES files".


Execution

Execution can be controlled by the three buttons Init, Step, and Revert. The button Init resets each generator to its initial state. Since libFAUDES executors are restricted to deterministic generators (i.e. unique successor state when the external event is given), so is the DESTool simulation. Step and Revert will execute one transition or revert to the previous state, respectively.

When more than one event is enabled, the button Step will execute a proposal generated by priority or stochastic event attributes; see the simulator plug-in reference for detailed simulation semantics. You can inspect and set the latter by the context menu of the respective event. You can also choose a particular event to be executed by double-clicking the event or transition. The Exec. Steps button will run the respective number of steps.

Inspection

The Animation tab shows the current state and time (top) and which events are enabled/disabled and proposed (below).

When selecting an event, the colour code in the state section indicates which system enables (green), doesn't care (yellow) or disables (red) the respective event. When selecting a system in the state section, the colour code in the execute section indicates how the system effects each event.

You can view the sequence of events so far ("Trace") and a statistical analysis of simulation conditions ("Statistics") via the Windows menu.

The screen-shot shows the simple machine example after 5 steps of execution. The event alpha_a is disabled since the buffer is full. The colouring in the animation control indicates that alpha_a is in fact disabled by the supervisor.

libFAUDES 2.32b --- 2024.03.08 --- with "synthesis-observer-diagnosis-iosystem-hiosys-multitasking-coordinationcontrol-timed-iodevice-simulator-luabindings"