Title: CMW CORBA-based Controls Middleware at CERN
1CMWCORBA-based Controls Middleware at CERN
- CMW team, CERN
- Kris Kostro, Nikolai Trofimov, Steen Jensen, Jens
Andersson, Francesco Calderini, Vito Baggiolini,
Francois Chevrier, Slawek Maludzinski
2Layout
- CMW motivation
- Architecture
- Remote Device Access (RDA)
- CMW servers and clients
- Administration services
- Naming and configuration services
- Current status
- Experience
3Motivation 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
4CMW 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)
SL-Equip Server
PS-GM Server
OPC Gateway
New Servers
Physical Devices (RF, BT, BI, Powering)
5Device 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
6RDARemote 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
7(No Transcript)
8CMW 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
9CMW server framework
10Server 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
11Server Example OPC
Windows (NT, 2000)
CMW OPC Server
Hardware
OPC server
RDA
CORBA
Server Classes
Configurationfrom Database
Mapping between OPC items And device/properties
12CMW 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
13(No Transcript)
14Narrow API
- DeviceBase device new DeviceBase("BPM1)
- cs new DefaultCycleSelector("211e0101")
- Data result device.getData("Pos", cs)
15System Administration
- Administration facilities have been described as
CORBA interface. All CMW servers implement this
interface RDA servers and also directory and
database servers.
16System Administration (cont.)
17System 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.
18(No Transcript)
19Naming 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)
20Naming and configuration
CMW Directory server (Java)
Device name resolution
Java Control Programs
JDBC
Device access
ORACLE
OMG Naming Service
CMW DB server (Java)
Server configuration from SQL query
JDBC
ORACLE
21CMW 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)
22Supported platforms
- Java
- Client and server APIs
- 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
23Actual 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)
24Experience 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?
25Some 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
26References
- 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.