A Web Based Configuration Tool for Large Scale Vacuum Control Systems A
Total Page:16
File Type:pdf, Size:1020Kb
17th Int. Conf. on Acc. and Large Exp. Physics Control Systems ICALEPCS2019, New York, NY, USA JACoW Publishing ISBN: 978-3-95450-209-7 ISSN: 2226-0358 doi:10.18429/JACoW-ICALEPCS2019-MOPHA123 VACUUM CONTROLS CONFIGURATOR: A WEB BASED CONFIGURATION TOOL FOR LARGE SCALE VACUUM CONTROL SYSTEMS A. Rocha†, I. Amador, S. Blanchard, J. Fraga, P. Gomes, G. Pigny, P. Poulopoulou, C. Lima CERN, Geneva, Switzerland Abstract communication between the SCADA and PLCs, and configure all SCADA functionalities such as The Vacuum Controls Configurator (vacCC) is an automatically-generated graphical interfaces, archiving, application developed at CERN for the management of alarms, and sharing of data with external systems. large-scale vacuum control systems. The application was In addition, the vacDB-Editor provides a functionality to developed to facilitate the management of the import equipment and sectorization data from CERN’s configuration of the vacuum control system at CERN, the Layout database. All of the described functionalities (user largest vacuum system in operation in the world, with over interface, configuration exporter, Layout DB synchronizer, 15,000 vacuum devices spread over 128 km of vacuum and data validation & persistence) are packaged into a chambers. It allows non-experts in software to easily single monolithic application, which runs on each user’s integrate or modify vacuum devices within the control desktop computer. system via a web browser. It automatically generates configuration data that enables the communication The Need for Upgrading the vacDB-Editor between vacuum devices and the supervision system, the Over the past years it has become increasingly difficult generation of SCADA synoptics, long and short term to maintain and upgrade the existing vacDB-Editor archiving, and the publishing of vacuum data to external application. This is due to its obsolete technology stack, systems. VacCC is a web application built for the cloud, written in Java 6, using an old version of Oracle‘s ADF dockerized, and based on a microservice architecture. In framework, whose development is dependent on a no this paper, we unveil the application's main aspects longer supported IDE, JDeveloper 10g, released in 2007 concerning its architecture, data flow, data validation, and [1]. Because of mandatory upgrades of the Java runtime generation of configuration for SCADA/PLC. environment at CERN, the vacDB-Editor, using older INTRODUCTION versions of Java, became more and more unstable, with frequent bugs and crashes reported by the users. In the early 2000’s, during the construction of the LHC In late 2018 it was announced at CERN that a mandatory and anticipating a considerable increase in the number of update had to be performed to upgrade Oracle databases vacuum devices to be controlled, a software application [2], from version 11g to 18c, on all of CERN’s production (vacDB-Editor) and a set of databases (vacDB) were 2019). Any distribution of this work must maintain attribution to the author(s), title of the work, publisher, and DOI. instances, affecting vacDB. Since Oracle 18c requires a © developed to homogenize and automate the configuration more recent JDBC driver, not available in JDeveloper 10g, of the SCADA and PLCs for CERN’s vacuum systems. an unsupported migration of the vacDB-Editor was Figure 1 shows a simplified overview of this application performed to support the new driver. While this migration with its main building blocks. was extremely difficult to perform, it appears to have been vacDB Editor successful. It is however impossible to be sure that it will UI continue working as new Java runtime environments get SCADA Configuration Files SCADA server User Consoles deployed at CERN. Combining the technical reasons above Survey DB LayoutDB Synchronizer with the scarce user base of ADF and JDeveloper, it was decided to rewrite the vacDB-Editor application using Export Module PLC Configuration Files PLCs Controllers vacDB modern technologies, on a micro-service architecture, Data Validation and vacDB CRUD allowing us to be more resilient to technological Layout DB advancements in the future. The new version of the vacDB- Editor is called vacCC, short for Vacuum Controls Figure 1: vacDB-Editor overview. Configurator. Users interact with the vacDB-Editor user interface, where they can modify the configuration of the control HIGH LEVEL ARCHITECTURE system (adding/removing equipment, modifying vacCC is based on a microservice architecture, where equipment attributes, configuring vacuum sectors, alarms). each functionality is handled by an independently After validating user input, data is persisted in vacDB, and deployable application [3]. Although more complex to from it, an export functionality generates the configuration implement due to the increasing number of software parts, files that are used by both the SCADA (WinCC-OA) and interactions, and underlying infrastructure, the usage of PLCs (Siemens S7/TIA). These files allow PLCs to microservice architectures has been shown to bring communicate with device controllers, enable the important advantages over monolithic applications. We MOPHA123 Content from this work may be used under the terms of the CC BY 3.0 licence ( Software Technology Evolution 511 17th Int. Conf. on Acc. and Large Exp. Physics Control Systems ICALEPCS2019, New York, NY, USA JACoW Publishing ISBN: 978-3-95450-209-7 ISSN: 2226-0358 doi:10.18429/JACoW-ICALEPCS2019-MOPHA123 consider the following advantages to be the most relevant Figure 3 illustrates the architecture of vacCC in for our case: production and development environments. An Openshift • Allows for individual upgrades of each microservice, router exposes the application to CERN’s General Purpose as opposed to monolithic applications, where the entire Network (GPN). Based on the request URL, the router will application needs to be upgraded at once. forward HTTPs requests to the appropriate load balancer, • Improved service resilience as the failure of a which will in turn forward the request to a microservice microservice will not affect the behaviour of other Pod [7] in a round-robin fashion. In addition to forwarding functionalities. requests to Pods, load balancers provide a service • Allows different programming languages to coexist in discovery feature. Every time a new Pod of a certain the same application, enabling us to choose the right microservice is created, the load balancer will tool for the job. automatically detect it and will start forwarding requests • Provides a logical separation of concerns, making once it becomes available. This feature, combined with the software better organized, and therefore easier for stateless nature of all microservices, allows vacCC software developers to master, develop, test and microservices to scale horizontally and to perform zero- maintain their code. downtime updates. The following sections explain with a greater detail the vacCC implementation of the front end, validation & persistence, exporter, and synchronizer microservices. FRONT END Validation Front End and Exporter Synchronizer The front end microservice provides the user interface of Persistence the application. It allows users to be abstracted from the complexity of vacDB, enabling them to modify vacuum machine parameters (e.g. equipment and their attributes, sectors, archiving, data sharing, etc.) that are required for the export of the SCADA and PLC configuration for the control system. The application is built as a single page vacDB application, implemented using the React Framework [8]. The graphical styling is provided by the Ant Design Figure 2: vacCC microservices. framework [9], which includes pre-made enterprise-class UI design components that can be added to the application According to Figure 2, the application logic was divided with minimal configuration, enabling significant time- into 4 microservices: savings during development, while ensuring a consistent • Front end: the web graphical interface that allows look and feel of the application. 2019). Any distribution of this work must maintain attribution to the author(s), title of the work, publisher, and DOI. © users to edit the configuration of the control system. Figure 4 illustrates the architecture of the front end • Validation & persistence: exposes RESTful APIs [4] application. The application is organized following the for other services to interact with vacDB, ensuring the React model, where web elements such as pages and their validity of data used in CRUD operations. elements (buttons, tables, forms, etc.) are hierarchically • Exporter: generates SCADA and PLC configuration organized into components. Components interact with files from vacDB data. backend services (validation & persistence, exporter, and • Synchronizer: synchronizes CERN’s accelerator synchronizer microservices) using REST and WebSockets equipment database (Layout DB) with vacDB. [10], the latter being used in special cases of long lasting All vacCC microservices are containerized and requests with intermediate steps that need to provide orchestrated in Openshift [5], a Kubernetes [6] application feedback to the UI. Request data is stored in the application platform. store, using Redux [11], that components can access Load Balancers directly. / FrontEnd FrontEnd PODs www.vacdbeditor.cern.ch /backend Validation Validation and and Persistence Persistence PODs vacDB Router /exporter Exporter Exporter PODs /synhronizer Synchronizer Synchronizer PODs Figure 3: Deployment architecture. Figure