250 likes | 376 Views
CMW CORBA-based Controls Middleware at CERN. CMW team Kris Kostro, Nikolai Trofimov, Steen Jensen, Jens Andersson, Francesco Calderini, Vito Baggiolini, Francois Chevrier, Slawek Maludzinski. Layout. CMW motivation Architecture Remote Device Access (RDA) CMW servers and clients
E N D
CMWCORBA-based Controls Middleware at CERN CMW team Kris Kostro, Nikolai Trofimov, Steen Jensen, Jens Andersson, Francesco Calderini, Vito Baggiolini, Francois Chevrier, Slawek Maludzinski
Layout • CMW motivation • Architecture • Remote Device Access (RDA) • CMW servers and clients • Administration services • Naming and configuration services • Current status • Experience
Motivation for the new middleware • Support for OO programming, in particular Java. • Support for publish/subscribe paradigm and event-driven programming • Support for industrial standards in controls (OPC, SCADA, Windows) • New middleware for the LHC era
User written Middleware Existing or off-shelf CMW Architecture Java Control Programs RAD programs (VB, Excel) C++ programs Clients Middleware Client API Device/Property Model Topic Model Naming Service CMW Infrastructure RDA, CORBA, JMS Configu- ration Service Server Framework API (C++, Java) Servers Virtual Devices (Java, C++) New Servers SL-Equip Server PS-GM Server OPC Gateway Physical Devices (RF, BT, BI, Powering)
Device Model • Control system consists of named devices (position monitor, beam line) • Devices are composed of properties(position, current) • Operations on properties set, get, subscribe, unsubscribe • Devices are organized into device classes
RDARemote Device Access • RDA implements the device model • Properties are represented by name, the API is a narrow one • get() & set() operations implemented as blocking CORBA calls. • Subscription updates implemented as CORBA callbacks in user code. • Update operations implemented as one-way calls • Data objects similar to CDEV data
CMW servers • CMW servers are normally written in C++ and run on LynxOS VME front-ends • Windows servers for OPC, Linux for gateways • Server framework to support polling and synchronize with timing system • They are often generic servers configured from Oracle DB
Server Example: SL-Equip LynxOS Front-End CMW Equip Server Hardware MIL1553 driver RDA CORBA SFW OPC Server eqsrv Servers Hardware Server Classes Timing events from network SVMQ Configurationfrom Database
Server Example: OPC Windows (NT, 2000) CMW OPC Server Hardware OPC server RDA CORBA Server Classes Configurationfrom Database Mapping between OPC items And device/properties
CMW clients • Java clients are the main category • C++ clients to connect to SCADA systems (PVSS driver) • C++ clients for legacy Motif applications • VB and Excel applications behind a Java or C++ front-end
Narrow API DeviceBase device = new DeviceBase("BPM1”); cs = new DefaultCycleSelector("211e0101"); Data result = device.getData("Pos", cs);
System Administration Administration facilities have been described as CORBA interface. All CMW servers implement this interface: RDA servers and also directory and database servers.
System Administration (cont.) The CMW management console allows browsing the server namespace and displaying server state • The general state of the server (OK, BAD, WARNING) is requested periodically • More details about server as well as server and client statistics can be obtained through separate methods. • Servers can be shut-down or restarted remotely and log levels can be set.
Naming and configuration • Device names are resolved to server names via CORBA directory server connected to Oracle database • Server names are resolved to CORBA RDA DeviceServerBase objects via the OMG Naming Service (ORBacus Names) • Servers register their names with Naming Service on startup • Servers can auto configure via a CORBA database server (no Oracle for LynxOS)
Device Server In Front-End Physical Device Naming and configuration CMW Directory server (Java) Device name resolution Java Control Programs Device access JDBC ORACLE OMG Naming Service CMW DB server (Java) Server configuration from SQL query JDBC ORACLE
CMW current state • All CERN equipment can be accessed via CMW • Operational in PS since March 2002 • Naming and configuration services are operational • Main use is in Java, C++ client recently developed • Currently working on consolidation and improvements (version 2.0)
Supported platforms • Java • Client and server API’s • Administration tools, CMW Explorer, directory and configuration servers are in Java • C++ Server framework supported on: • PowerPC LynxOS 3.1.0 • Linux Intel • Windows 2000 • C/C++ Client API on: • Linux • Windows 2000
Actual CORBA implementations In use • ORBacus OBE 1.0.1 for C++ • LynxOS 3.1.0 • Linux (i686) • ORBacus JOB 3.3.4, JOB 4.0.4 Have also been used • OrbExpress • Omniorb (not in CMW)
Experience with CORBA • CORBA simplifies middleware development • Fits well in OO development but … • Actual ORB implementations require several MB of memory. This restricts use of Middleware. • Quality ORBs are rare birds • Can we stick with ORBacus?
Some hick-ups • The first “commercial” ORB which we acquired for LynxOS was unusable • We had to improve performance of subscription updates (batch update) • Any is inefficient, we switched to use variants instead • Strategy to deal with “misbehaving” subscription clients: unreachable, slow etc. • Mostly TCP, not CORBA phenomena
References • The Web page of the Controls Middleware project: http://proj-cmw.web.cern.ch/proj-cmw • K. Kostro, N Trofimov, V. Baggiolini, F. Calderini, F. Chevrier, S. Jensen, R. Swoboda “Controls Middleware - The New Generation”, EPAC 2002, Paris, 2-7 June 2002 • N. Trofimow, V. Baggiolini, S. Jensen, K. Kostro, F. Di Maio, A. Risso, “Remote Device Access in the New Accelerator Controls”, ICALEPCS ’01, San Jose, USA, 27-30 Nov. 2001.