Introduction

The aim of the design for this new Control Sysytem we named !CHAOS (Control System based on Highly Abstracted Operating Structure – but not a mess!) is to provide a solution that naturally allows: redundancy of all its parts, intrinsic scalability, minimization of points of failure, hardware hot-integration and auto configuration. To achieve such requirements !CHAOS, basically developed in C++, employs distributed object caching for real-time data access (Live Database) and a key-value database for data archiving (History Database). A Control Library (CL) completely manages data and commands flow, the control processes and the devices configuration. The device’s programmer is only asked to develop the driver for the specific controlled hardware. The CS component hosting the control software for a device (or a family thereof) is called Control Unit (CU) and is the only part that instances the !CHAOS abstraction. The CL also provides, at the CU INIT phase, the syntax and semantics for dataset and command to the Metadata Server (MS) that allows the correct information retrievement. The CL takes also care of the data serialization, the communication with databases, handling of system’s and client’s commands and standard services of CS. The data serialization strategy adopted for !CHAOS is BSON, a binary-encoded JSON (JavaScript Object Notation) [4] documents, optimized for fast storage performance. The conversion from BSON and JSON is fully supported.