DISTRIBUTED COMPONENTS IN CONTROLS

We have built a control system framework that uses and extends modern component-based, distributed computing and object-oriented concepts. The basic entities of the system are accelerator devices that are represented as CORBA objects. Each device is further composed of property objects that correspond to what is called channels in EPICS. Properties support get/set commands, event-driven monitors and alarms, asynchronous and synchronous communication, logging, access to the database, etc. As all devices and their properties have common functionality, the servers for those CORBA objects are generated with a wizard-like program generator. Another generator creates one Java Bean component for each CORBA object. The client applications, written in Java, are then composed of those "accelerator components" in any commercial development tool, often using visual and graphical programming. The Beans are essentially components wrapped around CORBA, because standard CORBA components do not exist as yet. However, they are more powerful as they contain a pluggable interface that connects to any communication framework apart from CORBA, such as CDEV or even a generic simulation of devices and properties. The plugs are determined and switched at run-time. Generic applications that cover all basic needs including machine physics applications have been made using CORBA dynamic invocation and Java reflection. The functionality of the system is rounded up by a series of tools based on a remote management framework, which is composed of security/authorization mechanisms, object and process management, configuration database versioning and rollback, control event logging, and similar.