SMI Tools

A set of tools are available in order develop, implement and test the control system as described in figure 6.

Figure 6: the SMI Tool Set

5.1 Generation and execution of a State Manager

The description of a specific domain in SML is normally stored in a file with extension ".SMI". Each .SMI file corresponds to a domain. The SMI Translator has to be run on this file in order to generate a .SOBJ file which will then be used at run time by a generic SM engine (the logic engine in the figure). The tools involved are:

State Manager behaviour can be affected by various run time options. For details see Run Time Options. .

5.2 Generation and execution of proxies

Proxy skelettons can also be generated from the .SMI files by running the Proxy Generator. The output is a file per proxy called object_name_skel.c. I.e. they are "C" files where the possible states and actions are defined and the user can insert itís own code and decide on the next state of the proxy whenever a command is received. The advised procedure is: to copy the file object_name_skel.c to object_name.c and modify this one, if possible store the user routines in separate files. The resulting C code should be linked with the SMIRTL library (the complete description of the SMIRTL routines will be provided later in this document). At run time this process requires as parameter the domain_name as given to the State Manager.

The tools involved in this creation process are:

5.3 The SMI generic user interface

Included in the Tool Set is a Generic Configurable User Interface for visualisation of a specific domain. The UI allows the visualisation of the states of objects in a certain domain, as well as sending commands to them. The set of objects to be displayed, itís position and the color of itís states are configurable. The GUI can be started by:

smiGUI domain_name

An Example is shown in Fig 7.

Figure 7: example of an SMI display session

5.4 Sending commands to objects from the command line


Full description of this command see here.

5.5 Building your own User Interface

The Generic User Interface provided in the tool set is very usefull for use during the implementation and test phase of a control system, but is not recommended as production user interface for the control system. Normally in the final UI the user would like to combine objects from different domains and also information on quantities like RUN_NUMBER and TRIGGER_RATE that are not available as SMI object states. The SMI Tool Set contains a library that allows easy access to information on objects, states, and available or currently executing actions. The functionality available in this library will be described later in this document). In order to access these functions your user interface should link with:


The SMI User Interface Run-Time library.

This library also allows other processes (not UIs) to send commands to SMI objects and/or to inquire on the state of a particular object somewhere in the system.