CompileDES  3.13
Executable-Code Generation from Synchronised libFAUDES Automata

CompileDES translates a set of automata to executable code that exhibits a runtime behaviour to match the synchronous composition of the input data. There are various options to set execution priorities and to associate input and output signals with specific events; see Execution Semantics. Code generation is organised by a hierarchy of classes with the common base CodeGenerator to address the target languages C and IEC 61131-3 Structured Text; see also Implementation Outline.

Command-Line Tool

For convenient generation of code, a command-line wrapper is provided; see compiledes.cpp for details.

~/compiledes> ./bin/compiledes -?
compiledes: usage:
compiledes [-q][-v] -t <target> -o <outfile> <srcfile>
<desfile>: code generator configuration file
-q: less console output
-qq: absolutely no console output
-v: more console output
-vv: even more console output
-t <target>: target platform, see also below
-o <outfile>: base name of output file(s)
compiledes: target platforms: atm ec geb k20 pox st

Example configurations are provided in the .compiledes/examples directory. The *.cgc-files configure the source automata, event execution attributes and code-generation options. The overall configuration is then compiled by compiledes to produce the target code. E.g., the ATmega hello-world adaption blink_atm.c is generated from blink_atm.cgc by invoking

~/compiledes> ./bin/compiledes -t atm -o blink_atm.c examples/blink/blink_atm.cfc

This particular example is configured for an Arduino Nano board. Compiling the resulting blink_atm.c with an AVR8 C-compiler and downloading the binary to the board will result in the desired behaviour ... play along.

Download & Build

The CompileDES project is provided for download from the FAUDES-archive as faudes_compiledes_x_yyz.tar.gz with x_yyz representing the corresponding libFAUDES version. Although the package includes pre-compiled executables, you may need to re-compile to obatin an executable for your particular platform (this is specifically the case for Linux based systems).

A GNU-Makefile is provided for to build CompileDES itself, i.e.,

~/compiledes> make -f Makefile_GMake

should build the executable ./build/compiledes by using the GNU-toolchain; inspect the makefile for details. If this fails, you will also need to re-compile the provided libFAUDES; see Build Process

This project actually started of as an libFAUDES application template, so there is an extensive documentation of the build process and on how to import the project in the C++ IDEs Qt Creator and MS Visual Studio; again see Build Process.

Copyright & License

The current implementation of the code-generator is a re-design from scratch, taking into account the experiences gathered in the course of earlier student projects conducted by Silke Figgen (Step7 AWL), Johannes Tautz (IEC 61131 IL), Nicklas Rüffler (Step7 SCL), Frank Schieber (refined controller semantics) and Jakub Lachky (Step7 SCL and AWL), with respective supervisors Klaus Schmidt, Thomas Wittmann and Thomas Moor. Copyright of the current implementation is with Thomas Moor. CompileDES is distributed under terms of the GPL; see LICENSE. If you need access under a different license, this can be arranged.

Copyright (c) 2010, 2016-2019, 2024 Thomas Moor.