This project is the Activity Execution Engine (AEE). It is an automated execution engine for the activity modeling formalism. Activities are specified using LSAT (https://esi.nl/research/output/tools/lsat). The engine reads the '.activity', '.setting', '.machine' and the '.dispatching' files, for feed-forward models, and executes the individual actions. For models that have feedback, it reads '.ioa' file instead of the dispatching file. More information about event outcomes can be found in Time- and Behavior-Preserving Execution of Determinate Supervisory Control, Alireza Mohammadkhani et al., to be published.
"Time- and Behavior-Preserving Execution of Determinate Supervisory Control", Alireza Mohammadkhani et al., IET-CPS,2025, to be published.
The Activity Execution Engine sends message to an Action Controller. The Action Controller is a layer specific to the machine being controlled that translates the action descriptions in the '.activity' file into API calls for the machine. You can find the Action Controller for xCPS as an application in the xCPS software git (https://git.ics.ele.tue.nl/cps/xcps/software/-/tree/main/API/apps). The return messages from API are then passed to the AEE. These are either action completion messages, or event outcomes.
This repository contains the Activity Execution Engine as a cmake project in the folder 'ActivityExecutionEngine' and the base library for Action Controllers as a cmake project in the ActionController folder. The ActionController folder also contains a 'dummy' Action Controller, ACLogger, which is a stand-in Action Controller that does not actually controls any machine, but instead logs the activities. It can log the activities to the terminal, to a trace file that can be passed to the cmtrace tool to make a Gantt chart visualization, or to a trace file that can be used with the Trace4CPS tool to create a Gantt chart visualization and analysis.
The software can be built using cmake from the ActivityExecutionEngine directory. See the readme file.
An Activity Execution Engine needs a plant-specific Action Controller that it wil control. ACLib is a library on which specific ACs can be built. This repository includes a demonstration AC, called ACLogger. Check the readme file in the ActionController folder for instructions on how to build them.
(only for internal users for now, see Replication of Published Results for a public demo usage.)
The activity execution engine can be used with the xCPS (virtual) as follows.
- from the
xCPS/softwarerepository (https://git.ics.ele.tue.nl/cps/xcps/software)- build and run VxCPS following the instructions in the repository. This includes:
- running the
sioserverapplication (HAL\VHAL\sioserver) to set up the Socket.IO network - running the
dttranslationlayerapplication (VxCPS\dttranslationlayer) to translate between HAL layer and messages to the VxCPS digital twin. - running the VxCPS Unreal model (
VxCPS\UnrealEngine\VxCPSUE51.uproject) - set up the VxCPS model with the right initial configuration of top/bottom products
- running the
- Build and run the xCPS Action Controller (
HAL\apps\AC)- build it with the HAL with cmake.
- run it with the command:
./AC -o TTA
- run the activity execution engine with the command
./AEE -m <path to model> -t 3
- build and run VxCPS following the instructions in the repository. This includes:
- if everything is OK so far, the virtual xCPS model should start moving now...
To replicate the published results of "Time- and Behavior-Preserving Execution of Determinate Supervisory Control", IET-CPS,2025, please look at models/iet-cps-paper-2025 folder after you have built and successfully run one experiment from the instructions above.