ACS – OVERVIEW OF TECHNICAL FEATURES

The ACS is a CORBA-based framework for the development of Control Systems and higher level data flow and coordination applications. It is used to develop the ALMA software and in particular the ALMA Control System. It currently runs in the ALMA Test Interferometer, in the APEX radiotelescope and in the accelerator ANKA in Karlsruhe. More about ACS status and developments can be found in the article by G. Chiozzi [1]. This paper provides an overview and description of ACS features. ACS uses several standard CORBA services such as notification service, naming service, interface repository and implementation repository. ACS hides all details of the underlying mechanisms, which use many complex features of CORBA, queuing, asynchronous communication, thread pooling, life-cycle management, etc. In addition, ACS provides a powerful XML-based configuration database, synchronous and asynchronous communication, configurable monitors and alarms that automatically reconnect after a server crash, run-time name/location resolution, archiving, error system and logging system. Any logical or physical device (e.g. power supply) in a control system is represented by a component. Component contains properties - entities that can be monitored and controlled, and characteristics which contain static data, such as name, units or description. Component management is handled by the ACS Component/Container model. In this simple model, Containers manage the lifecycle of Components with the help of a centralized Manager. The Component/Container model is language and platform independent and the Manager is capable of deploying, manage the lifecycle and locate Components in appropriate Containers written in C++, Java and Python. Containers provide Components with a very simple way to access common centralized services. Clients written in any CORBA-aware language can access these Containers and Components while the implementation of the servant side in any other of these languages would be easy. The Container also supports transparent XML serialization of complex data entities (like a complete Observing Proposal or an Observing Script) through CORBA. This capability is very important to allow a smooth data flow from high level software down to the Control System. ACS comes with all necessary generic GUI applications and tools for management, display of logs and alarms and a generic object explorer, which discovers all CORBA objects, their attributes and commands at runtime and allows the user to invoke any command. C++ is the main language for the development of core Control System DOs and for real time applications. Work is being done to port ACS to Real Time Linux. Coordination application, clients, GUIs and general higher level applications are written in Java and can run on any JVM-enabled platform. The Java-ACS subset is therefore available as a light separate package that can be installed on any platform where Java is available. In C++, ACS uses the free ORB TAO, which is based on the operating system abstraction platform ACE, ACS has been ported to Windows, Linux, Solaris and VxWorks. On the Java side, JacORB is used. Python clients are based on OmniORB. Accompanying this article, a live demo of ACS will be presented at the conference.