Skip to Main Content
In the SMI ++ framework, the real world is viewed as a collection of objects behaving as finite-state machines. These objects can represent real entities, such as hardware devices or software tasks, or they can represent abstract subsystems. A special language (SML) is provided for the object description. The SML description is then interpreted by a logic engine (coded in C++) to drive the control system. This allows rule-based automation and error recovery. SMI++ objects can run distributed over a variety of platforms, all communication being handled transparently by an underlying communication system, DIM. This framework was first used by the DELPHI experiment at CERN for the experiment control. The BaBar experiment at SLAC has adopted this framework for the design and implementation of their Run Control system. For this purpose, the framework was significantly upgraded. The BaBar Run Control and the underlying SMI++ framework has been in production since the beginning of 1999. SMI++ has recently been adopted at CERN by all LHC experiments for their detector control systems, as recommended by the Joint Controls Project. The main features of the framework and, in particular, of the SML language, as well as recent and near future upgrades, will be discussed. SMI++ has, so far, been used only by large particle physics experiments. It is, however, equally suitable for any other control applications.