Zélus is a synchronous language extended with Ordinary Differential Equations. It is for programming systems that mix discrete-time and continuous-time behaviors, like, for instance, real-time control software executing in closed loop with a model of its physical environment. More intricate interactions between discrete- and continuous-time behaviors can be expressed, like, for instance, continuous-time PID controllers or hybrid automata with modes defined by ODEs. Zélus provides basic synchronous language constructs—difference and data-flow equations, hierarchical automata, and stream function definitions—in the style of Lustre [12] and Lucid Synchrone [8]. The extension with ODEs for modeling continuous-time behaviors is conservative. The expressiveness of the language is deliberately constrained to statically ensure determinism and the generation of loop-free sequential code that runs in bounded time and space. Moreover, code is generated identically for both embedded targets and simulation. For source programs with ODEs, the generated sequential code is paired with a numerical solver to approximate the continuous-time dynamics. Zélus’s main features are:
A clock is termed discrete if it has been so declared or if it results from the sub-sampling a discrete clock or a zero-crossing. Otherwise, it is termed continuous.
It is possible to reset a continuous variable defined by an ODE on a discrete clock. A zero-crossing occurs when a continuous-time signal crosses zero from a negative value to a positive one during integration. Conceptually, a timer is a particular case of a zero-crossing event, even if the actual implementation is more specific.
Zélus is a research prototype that exhibits a new way of defining a hybrid systems modeling language based on the principles and techniques of synchronous languages. Its expressive power for modeling physics is limited to ODEs, unlike Modelica which is based on DAEs. Research papers on the design, semantics and implementation of Zélus are available at http://zelus.di.ens.fr.
The implementation is written in, and generates programs in OCaml, which must be installed.
Zélus, version 1.2: | http://zelus.di.ens.fr |
Objective Caml, version 4.02.1 | http://www.ocaml.org |
The language is experimental and evolves continuously. Please send comments or bug reports to Timothy.Bourke@inria.fr or Marc.Pouzet@ens.fr.
This software includes the OCaml run-time system, which is copyrighted INRIA, 2015.
This software is a research prototype that takes considerable time to develop. If you find it useful, please consider citing our work [6] and sending us comments.