Experiment Control System Choice

From GlueXWiki
Revision as of 15:11, 30 January 2008 by Wolin (Talk | contribs)

Jump to: navigation, search

Introduction

Experiment controls systems can loosely be divided into three layers: the experiment control layer (ECS), slow controls layer (aka SCADA or DCS), and the field-bus level that actually communicates with sensors and actuators. Here I discuss the ECS, the level that has overall control of the entire running environment. See Slow Controls Framework Choice and Slow Controls Specifications for discussions of the two lower layers.

The LHCb web page puts it nicely: "(The) Experiment Control System is in charge of the configuration, control and monitoring of all the components of the online system. This includes all devices in the areas of: data acquisition, detector control (ex slow controls), trigger, timing and the interaction with the outside world."


State Machines

ECS's often involve use of software state machines that step through a pre-defined sequence in order to move the experiment from one state to another (e.g. booted to configured to downloaded to ...). These state machines change often, unlike those in factories, which remain fairly stable once they are tuned. Thus in factories the state machines usually reside in PLC's and are programmed by process engineers. In contrast, it is impractical to deploy many of our state machines in PLC's due to their rapidly evolving nature and the need for physicists to modify them, so we use high-level software instead.


AFECS from the JLab DAQ Group

The JLab DAQ group has been working on experimental controls for some time, first as a framework for DAQ run control, and then as a complete ECS. Although stand-alone state machine software is available (SMI++/DIM, others), the DAQ group product AFECS seems to meet all our needs. AFECS stands for Agent Framework for Experimental Control Systems, and the main innovation is that agent-based techniques are used throughout. Agents are software constructs that represent real outside entities. To communicate with an outside entity you simply talk to its representative agent in the software world in a standard way, and the agent takes care of the actual communication (via Ethernet, through a bus or controller, via a special protocol, etc).