Intro/features DCBD tool architecture Software used Dynamic library loader EPICS Device support modules DCDB-server DCDB-client RPM packages & Build server Demo Contents 2
Intro 3
Changing parameters IP address, port number, HW parameters, macros, etc. Need to recompile IOCs Takes time (~hours) Problems 4 ?
DCDB tool is a control system configuration tool (a la SDD editor), which provides an easy-to-use interface for quick configuration of the whole accelerator in just a few clicks. Features: IOC/alarms/archive configuration Generation and deployment of st.cmd scripts Start/stop/restart IOC Change IOC parameters (PV macros) on the fly Restart alarm/archive servers Utilizes dlloader Compliant with CODAC v4 (ESS, ITER, ELI-NP) Siemens S7PLC support StreamDevice support Features 5
DCDB architecture 6 DCDB-server (Python) MySQL (BLED) DCDB-client (Excel) IOC dlloader-procServ ssh,scp json EPICS device support modules signal generator, PLC, power supply, camera, detector, etc. Google spreadsheets
MySQL database Python back-end (flask-restful, sqlalchemy, paramiko) Microsoft Excel front-end (C#.NET) Google spreadsheets (JavaScript) ESS CODAC v.4.1, ITER CODAC v4.3 Also tested on Ubuntu 14.04, Mac OSX 10.9, CentOS 6 procServ (developed by Ralph Lange) customized by CSL dlloader (Dirk Zimoch, PSI) Software 7
dLLoader is an EPICS-based tool that allows you to load EPICS device support libraries by just adding its’ definitions in the startup script Features: load device support without the need to compile IOCs Just issue require, in the epics shell integrated in CODAC 4.x supports procServ comes in the form of an IOC (dlloader-procServ, dlloader- screen) or library (not tied to IOC: just start softIoc, load dlloader using dlload and start loading your device support modules) Dynamic library loader 8
Support modules consist of: a library file (lib/linux-x86_64/xxx.so) a database definition file (dbd/xxx.dbd) db/substitution files (db/xxx.db) init.cmd init-pre.cmd init-post.cmd Device support modules 9
10 DAQ_X1 LINK DataAcquisition # Signal from data acquisition module (left). DEFAULT_ALARM ALARM # Default alarm. dbLoadRecords "db/BPM.db", "MODULE_INSTANCE_NAME=${MODULE_INSTANCE_NAME}, DAQ_X1=${DAQ_X1}, DAQ_Y1=${DAQ_Y1}, DAQ_X2=${DAQ_X2}, DAQ_Y2=${DAQ_Y2}" require BeamPositionMonitor dbpf ${DAQ_X1}.FLNK $(MODULE_INSTANCE_NAME):CALC dbpf ${DAQ_Y1}.FLNK $(MODULE_INSTANCE_NAME):CALC dbpf ${DAQ_X2}.FLNK $(MODULE_INSTANCE_NAME):CALC dbpf ${DAQ_Y2}.FLNK $(MODULE_INSTANCE_NAME):CALC init.cmd init-pre.cmd init-post.cmd
Create support modules (using dlloader epics template): Device support modules 11 Register support module using DCDB import tool: Files to deploy: mvn newunit –Dunit=m-BeamPositionMonitor cd m-BeamPositionMonitor mvn newdlloader mvn clean compile test package install dcdb Usage: dcdb [--pom=] [--pre=] [--db=] [-v] [--help] [--version] [[-delete]]
REST server written in Python Uses JSON as the data exchange format Uses SSH to deploy configuration onto IOCs Supports logging Deployed as CODAC-service: DCDB server 12 dcdb-server Usage: dcdb-server {start|stop|status|restart|fg|log} [--port=]
Excel client / IOC 13 IOC configuration
Overview of all support modules: Excel client / Modules 14
Excel client / Module Instances 15 Adding EPICS support module instances
PLC support Excel client / PLC 16
m-common (dlloader support) m-maven-iter-plugin (dlloader support) m-codac-unit-api (dlloader support) m-epics-dlloader (IOC, library, EPICS templates, stcmdsaver service) m-python-modules (vendor python packages) m-python-bled-rest (REST server, import tool) m-dotnet-bled-ribbon (client in the form of a MS Excel add-on) RPM packages 17
Build server 18 Using Jenkins for automatic builds (nightly)
DCDB-lite lightweight version for non-CODAC environments PLC support Google spreadsheets New features 19
Links 20
THANK YOU Pavel Maslov, MSc COSYLAB Tel.: Web: