next up previous
Next: The Event Channel Interface Up: CORBA OBJECTS FOR SLS Previous: The CORBA TRACY Interface

The CORBA CDEV Interface

The SLS accelerator device control system[12] is based on the Experimental Physics and Industrial Controls System (EPICS)[13] whose communications protocol is channel access[14]. The Common DEVice (CDEV) C++ class library (version 1.7.3)[15] provides the API to channel access, supplying functionality for both synchronous and asynchronous interaction with the control system. The CDEV interface takes the form of a device/message paradigm whereby a message constructed from a `verb' and `attribute' is routed to a `device' through channel access. The CORBA CDEV server responds to CDEV type verbs such as `set', `get', `monitorOn' to respectively download set-points, readback device attribute values and monitor selected channels. A change in value of a monitored channel invokes the CDEV callback function, wherein the new data value is both stored in memory and supplied to a CORBA event channel. Clients can either retrieve data from memory through the invocation of a CORBA method or be informed of updated values by subscribing as a consumer to the appropriate event channel. The software architecture allows several clients to connect to the CDEV server. However only a single monitor per channel need ever be enabled, thereby reducing the load on the SLS network and the low-level hardware. The CORBA CDEV interface handles a variety of EPICS records, including analogue and digital input/output records, waveforms and arrays. Use is also made of CDEV collections which serve to present related devices as a logical software entity.


 
Table 2: Retrieval of Slow Controls data from a Java client.

$\backslash\backslash$ Create holder for slow controls (SC) objects
BdCdevSeqHolder SeqCdevScObj= new BdCdevSeqHolder();
$\backslash\backslash$ Fill sequence of SC objects from config file
CdevRef.BdCdevScObj("ConfigFile", SeqCdevScObj);
$\backslash\backslash$ Send CDEV "get" message
CdevRef.BdCdevVerb("get", SeqCdevScObj);
$\backslash\backslash$ Local function prints results
BdCdevPrint (SeqCdevScObj);
 

 

Table 2 shows a Java client performing remote method invocations on the CDEV server. A sequence of `slow control objects', consisting of CDEV device names, attributes, datatypes and values is first loaded with pertinent data from a configuration file or database. A subsequent method invocation employs the CDEV `get' verb to retrieve the corresponding set of controls data. A local function then prints the corresponding set of results.

Data from the real-time control system, however, typically requires recalibration and/or analysis before being displayed by the client. Such tasks are assigned to the Analysis Server which distributes recalibrated data to interested clients through the CORBA Event Channel interface, as illustrated in Fig. 2.


next up previous
Next: The Event Channel Interface Up: CORBA OBJECTS FOR SLS Previous: The CORBA TRACY Interface
Jan Chrin
2000-11-13