CMW-DIP Gateways Overview CMW – Controls Middleware from BE-CO

Slides:



Advertisements
Similar presentations
CMW CORBA-based Controls Middleware at CERN
Advertisements

Controls Middleware (CMW) Presentation to the Controls Board The Middleware Team October 31, 2000.
CERN Middleware OVERVIEW 25th april 2013
 M.A - BIS Workshop – 4th of February 2015 BIS software layers at CERN Maxime Audrain BIS workshop for CERN and ESS, 3-4 of February 2015 On behalf of.
controls Middleware – OVERVIEW & architecture 26th June 2013
Wojciech Sliwinski for BE-CO group Special thanks to: E.Hatziangeli, K.Sigerud, P.Charrue, V.Baggiolini, M.Sobczak, M.Arruat, F.Ehm LHC Beam Commissioning.
E. Hatziangeli – LHC Beam Commissioning meeting - 17th March 2009.
A. Dworak BE-CO-IN, CERN. Agenda 228th June 2012  Sum up of the previous report  Middleware prototyping  Transport  Serialization  Design concepts.
Ph. Gayet2 nd FCC Workshop1Ph. Gayet2 nd FCC Workshop1 FCC Control Systems Concepts: Why it's not too early to speak about it !!! Ph. Gayet FCC Washington.
W. Sliwinski – eLTC – 7March08 1 LSA & Safety – Integration of RBAC and MCS in the LHC control system.
06/05/2004AB/CO TC RF controls issues Brief overview & status Requested from AB/CO Hardware, Timing, VME/FESA for LEIR, SPS, LHC Controls for LHC RF Power.
Middle-tier servers for CMW Bartek Paszkowski AB-CO-FC.
Log analysis in the accelerator sector Steen Jensen, BE-CO-DO.
FAIR Accelerator Controls Strategy
LHC Cryogenics Control: INTEGRATION OF THE INDUSTRIAL CONTROLS (UNICOS) AND FRONT-END SOFTWARE ARCHITECTURE (FESA) APPLICATIONS Enrique BLANCO Controls.
Eugenia Hatziangeli Beams Department Controls Group CERN, Accelerators and Technology Sector E.Hatziangeli - CERN-Greece Industry day, Athens 31st March.
Wojciech Sliwinski for the BE-CO Middleware team: Wojciech Buczak, Joel Lauener Radoslaw Orecki, Ilia Yastrebov, Vitaliy Rapp (GSI)
LHC BLM Software revue June BLM Software components Handled by BI Software section –Expert GUIs  Not discussed today –Real-Time software  Topic.
Session 1 Introduction  What is RADE  Technology  Palette  Tools  Template  Combined Example  How to get RADE  Questions? RADE Applications EN-ICE-MTA.
Wojciech Sliwinski BE/CO for the RBAC team 25/04/2013.
MA CS workshop Adriaan Rijllart1 LabVIEW integration into the LHC control system The LHCLabVIEW.
© 2001 By Default! A Free sample background from Slide 1 The Equipment Access API WG Report 6 th February 2003 V. Baggiolini,
Connecting LabVIEW to EPICS network
Strategy to achieve smooth upgrades during operations Vito Baggiolini BE/CO 1.
Post ACCOR until LS2: End of Life for CMW products CO3 meeting, 25th June 2015 Wojciech Sliwinski for the BE-CO Middleware team.
1 Channel Access Concepts – IHEP EPICS Training – K.F – Aug EPICS Channel Access Concepts Kazuro Furukawa, KEK (Bob Dalesio, LANL)
RDA3 Transport Joel Lauener on behalf of the CMW team 26th June, 2013
© 2001 By Default! A Free sample background from Slide 1 Controls for LEIR AB/CO Technical Committee - 18 th March 2004.
MARCO control system Munich Lukasz Zwalinski – PH/DT Maciej Ostrega – PH/DT.
Industrial Control Engineering Session 1 Introduction  What is RADE  Technology  Palette  Tools  Template  Combined Example  How to get RADE 
CMW – LHC-era controls middleware CMW – Controls Middleware from BE-CO workshop, 13th April 2016 Wojciech Sliwinski for the BE-CO Middleware team:
Software tools for digital LLRF system integration at CERN 04/11/2015 LLRF15, Software tools2 Andy Butterworth Tom Levens, Andrey Pashnin, Anthony Rey.
LabVIEW Core I with RADE introduction EN/ICE/MTA.
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved DISTRIBUTED SYSTEMS.
Frank Tecker - AB/OP for the CTF3 Team Frank Tecker CTF3 Control System Hardware Equipments Software Examples.
General Purpose Grid Computing LCA. Specification The system will provide a multi-threaded, shared memory environment that is distributed across a loosely.
FESA Overview Leandro Fernandez On behalf of the FESA Team 6/22/2010FESA Overview1.
V4.
Introduction Current Status Outlook and Time Schedule
Deploying Web Application
Overview of TANGO Control system
A monitoring system for the beam-based feedbacks in the LHC
Introduction to RBAC Wojciech Sliwinski BE/CO for the CMW/RBAC team
CO HW Monitoring Architecture
Programmable Logic Controllers: I/O
SLC-Aware IOC LCLS Collaboration Jan 26, 2005
Cross Platform Development using Software Matrix
CS-Framework Overview
Computing infrastructure for accelerator controls and security-related aspects BE/CO Day – 22.June.2010 The first part of this talk gives an overview of.
Building Scalable Ignition Enterprise Architectures
Middleware – ls1 progress and planning BE-CO Tc, 30th september 2013
A Messaging Infrastructure for WLCG
FESA evolution and the vision for Front-End Software
Magnet Safety System for NA61/Shine
RDA3 high-level – API & architecture 26th JUNE 2013
Middleware renovation – technical overview 16th april 2013
#01 Client/Server Computing
Chapter 3: Windows7 Part 4.
Java Messaging Service (JMS)
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
Java Messaging Service (JMS)
Kris Kostro Roland Swoboda
Lecture 4: RPC Remote Procedure Call CDK: Chapter 5
Ivan Reid (Brunel University London/CMS)
Channel Access Concepts
EPICS: Experimental Physics and Industrial Control System
LHC BLM Software audit June 2008.
Chapter 14 Web-Based Management 14-1 Chapter 14
Channel Access Concepts
#01 Client/Server Computing
Presentation transcript:

CMW-DIP Gateways Overview CMW – Controls Middleware from BE-CO ALICE workshop, 28th June 2019 Wojciech Sliwinski for the BE-CO CMW team

CMW – Controls Middleware from BE-CO CMW-DIP Gateways Overview

Our clients: CERN Accelerators CMW-DIP Gateways Overview

CMW-DIP Gateways Overview CMW System Overview High Level Applications Experiments / Tech. Infra. LSA/InCA Sequencer SIS ATLAS CMS LHCb PMA CESAR CMW Services & APIs ALICE COMPASS Conc. … REMUS … High Level Applications JMS Gateway RBAC DIP JMS RDA Proxy Directory Service RDA Accelerator Equipment Magnets Instruments Interlocks DIP – Data Inter-change Protocol JMS – Java Message Service RBAC – Role-Based Access Control RDA – Remote Device Access Kickers Cavities Collimators … CMW-DIP Gateways Overview

Controls Software Architecture CTRL TCP/IP communication services ETHERNET NETWORK TIMING GENERATION T OPERATOR CONSOLES FIXED DISPLAYS CERN GIGABIT ETHERNET TECHNICAL NETWORK FILE SERVERS APPLICATION SERVERS SCADA SERVERS RT Lynx/OS VME Front Ends WORLDFIP Front Ends PLC ACTUATORS AND SENSORS CRYOGENICS, VACUUM, ETC… QUENCH PROTECTION AGENTS, POWER CONVERTERS FUNCTIONS GENERATORS, … BEAM POSITION MONITORS, BEAM LOSS MONITORS, BEAM INTERLOCKS, RF SYSTEMS, ETC… WorldFIP SEGMENT PROFIBUS FIP/IO OPTICAL FIBERS Presentation Layer C++ Java Controls Middleware (CMW), RMI, JMS CMW Purpose: Reliable and scalable transport of data between controls processes (Java & C++) Business Layer C++ Java Communication Controls Middleware (CMW) Front End (Back End) Layer 4’000 CMW servers 85’000 devices 2’000’000 IO-points Uses ZeroMQ C++ C++ CMW-DIP Gateways Overview

CMW-DIP Gateways Overview CMW mandate & scope Core communication layer -> critical Reliable communication in distributed system Decentralized (no brokers, etc.) -> scalable Centrally managed middleware services Directory/Naming, RBAC, Proxies, DIP Gateways, … Access syntax -> Device-Property model Device: addressable IO point (e.g. channel, slot, module) Device: e.g. LHC.BPM.P5.B1, LHC.BPM.P5.B2 Property: exposed operation or method Property: e.g. Acquisition, Status, Alarm, Setting Widely deployed for all CERN accelerators Used in all Eqp. groups (3 deps: BE, EN, TE) CMW-DIP Gateways Overview

RDA3 – CMW core communication library Uses ZeroMQ for low-level networking Built upon lock-free, async (event driven) architecture Operations/Calls: Get, Set, Subscribe All communication implicitly asynchronous Public API for developing clients & servers Provided for several platforms C++ & Java, next Python Dependencies: ZeroMQ, Boost (C++) Linux (64-bit), Windows (64-bit) Integrated with several frameworks FESA, FGCD, WinCCOA, LabVIEW, C2MON Provides comprehensive diagnostics Admin GUI, command line tools, Kibana reports Exportable -> used in GSI (DE), LG (S. Korea) CMW-DIP Gateways Overview

CMW-DIP Gateways Overview RDA3 vs DIP Context/Area RDA3 DIP Communication model Peer to peer Domain Accelerator control system Experiment control system Access point device/property topic Paradigm Request/Reply Publish/Subscribe Publish/Subscribe Data type Generic data or exception Generic data + quality CMW-DIP Gateways Overview

CMW Gateway basic architecture DIP to CMW RDA3 server DIP subscriber CMW DIP notification RDA3 client publication DIP publisher RDA3 server CMW to DIP RDA3 client DIP publisher DIP subscriber notification publication CMW-DIP Gateways Overview

CMW-DIP Gateways Overview Critical: Handshake, Luminosity, RunControl GW-ALICE GW-ATLAS GW-INJ-GPNDIP GW-LHC-BPM GW-LHC-CONF GW-LHC-EXP-GPN GW-LHC-INFO GW-SERVICES GW-BL4S GW-LHC-BCT GW-LHCB GW-LHC-CRITICAL-EXP GW-LHCF GW-NORTH GW-CMS GW-GPNDIP-INJ GW-LHC-BLM GW-LHC-COLLIM GW-LHC-CRITICAL GW-LHC-GPNDIP GW-RADMON GW-TOTEM CMW-DIP Gateways Overview

CMW-DIP Gateways Overview Resources General documentation: https://wikis.cern.ch/display/expcomm/ Publications from the LHC: https://wikis.cern.ch/display/expcomm/DIP+LHC CMW Service: https://wikis.cern.ch/display/MW/ DIP Service: https://readthedocs.web.cern.ch/display/ICKB/DIP+and+DIM Emails: cmw-support@cern.ch (CMW related questions, requests, etc.) dip-support@cern.ch (DIP related questions, requests, etc.) icecontrols.support@cern.ch (BE-ICS support) CMW-DIP Gateways Overview

CMW-DIP Gateways Overview Backup slides CMW-DIP Gateways Overview

What are main CMW features? Device/Property model Basic operations: Get, Set, Subscribe Get/Set: Synchronous or asynchronous Grouping execution by device (default) Subscription: First-update Ordering of notifications Multiplexing: Cycle selector for requests Cycle information for acquisitions Rich data types (scalars, N-arrays, structures) Authentication and authorization Tracing and diagnostics CMW-DIP Gateways Overview

Data flow for RDA3 calls … … Get & Set calls Subscribe calls RDA3 client RDA3 client ZeroMQ ZeroMQ [3] Lookup [3’] Lookup [4] Get / Set [4’] Subscribe [5’] Publish Directory Service [1] Bind [1’] Bind RDA3 server Cache (Devices & Servers) RDA3 server [0] Load devices & servers Device1/PropertyA Device11/PropertyA [2 & 2’] Save Device2/PropertyB … Device22/PropertyB … Database DeviceN/PropertyX DeviceNN/PropertyX ZeroMQ ZeroMQ CMW-DIP Gateways Overview

CMW-DIP Gateways Overview Example – sync Get call #include <iostream> #include <cmw-rda3/client/service/ClientServiceBuilder.h> ... // First create ClientService and keep it for all further communication auto_ptr<ClientService> client = ClientServiceBuilder::newInstance()->build(); // Get AccessPoint by providing device name & property name AccessPoint & accessPoint = client->getAccessPoint(”LHC.BPM.P5.B1", ”Acquisition"); // Perform sync GET call auto_ptr<AcquiredData> acqData = accessPoint.get(); // The resulting data is obtained by calling getData() method on the AcquiredData instance const Data & data = acqData->getData(); cout << data.toString() << endl; // Data -> supports scalars, arrays of scalars(1D, 2D, N-D), structures (nested Data) // Additionally AcquiredData contains also AcquiredContext, which provides meta-data about the call const AcquiredContext & acqContext = acqData->getContext(); cout << acqContext.toString() << endl; CMW-DIP Gateways Overview

Example – async Get call with callback #include <iostream> #include <cmw-rda3/client/service/ClientServiceBuilder.h> ... class Callback : public AsyncGetCallback { public: void requestCompleted(const RequestHandle & request, auto_ptr<AcquiredData> acqData) { cout << acqData->getData().toString() << endl; } void requestFailed(const RequestHandle & request, auto_ptr<RdaException> exception) { cout << exception->what() << endl; } }; auto_ptr<ClientService> client = ClientServiceBuilder::newInstance()->build(); AccessPoint & accessPoint = client->getAccessPoint(”LHC.BPM.P5.B1", ”Acquisition"); // Perform async GET call with callback accessPoint.getAsync(AsyncGetCallbackSharedPtr(new Callback())); // Continue while GET is being performed CMW-DIP Gateways Overview

Example – async Get call with future #include <iostream> #include <cmw-rda3/client/service/ClientServiceBuilder.h> ... auto_ptr<ClientService> client = ClientServiceBuilder::newInstance()->build(); AccessPoint & accessPoint = client->getAccessPoint(”LHC.BPM.P5.B1", ”Acquisition"); // Perform async GET call with future RdaGetFutureSharedPtr future = accessPoint.getAsync(); … // Continue processing while GET is being performed cout << “Is GET completed: ” << future->isDone() << endl; // Perform blocking call until GET data is ready auto_ptr<AcquiredData> data = future->get(); cout << data->getData().toString() << endl; CMW-DIP Gateways Overview

Example code – sync Set call #include <iostream> #include <cmw-rda3/client/service/ClientServiceBuilder.h> ... // First create ClientService and keep it for all further communication auto_ptr<ClientService> client = ClientServiceBuilder::newInstance()->build(); // Get AccessPoint by providing device name & property name AccessPoint & accessPoint = client->getAccessPoint(”LHC.BPM.P5.B1", ”Setting"); // Prepare data to be sent to server // Data -> supports scalars, arrays of scalars(1D, 2D, N-D), structures (nested Data) auto_ptr<Data> data = DataFactory::createData(); data->append("value", 10); data->append(”gain", 5.1234); // Perform sync SET call accessPoint.set(data); Analogically async Set versions with callback & future CMW-DIP Gateways Overview

Example – Subscribe call #include <iostream> #include <cmw-rda3/client/service/ClientServiceBuilder.h> ... auto_ptr<ClientService> client = ClientServiceBuilder::newInstance()->build(); AccessPoint & accessPoint = client->getAccessPoint(”LHC.BPM.P5.B1", ”Status"); // Perform SUBSCRIBE call SubscriptionQueueSharedPtr queue = accessPoint.subscribe(); // Continue processing while subscription is being established // Blocking wait for a single notification with a timeout of 5000 ms std::auto_ptr<Notification> notification = queue->poll(5000); // also with no timeout: poll() cout << “Received notifications count: ” << queue->getQueueSize() << endl; // Process the received data auto_ptr<AcquiredData> acqData = notification->get(); cout << acqData->getData().toString() << endl; Analogically Subscribe version with callback CMW-DIP Gateways Overview

Latency stability measured by BE-CO Timing team Setup: 500B message payload, CCC machines, 1 server/publisher, 1-1100 clients/subscribers latency client # local time latency client # client # CMW-DIP Gateways Overview

Observations from operational use of RDA3 TCP/IP CORBA RDA2 client RDA2 server ZeroMQ RDA3 client RDA3 server RDA2 framework RDA3 framework Great performance for subscriptions (thanks to async transport & internal batching) Good scalability for many clients (>1000) No more problem of slow clients (solved properly thanks to async transport) Much smaller footprint (CPU & memory), mainly thanks to zero-copy ZeroMQ - no surprises & very reliable! CMW-DIP Gateways Overview