Download presentation
Presentation is loading. Please wait.
1
Elke Zimoch, 3. October 2011 Found on http://www.semanticmetadata.net/category/comic/
2
Wir schaffen Wissen – heute für morgen Elke Zimoch, 3. October 2011 Paul Scherrer Institut Elke Zimoch Introduction to EPICS
3
Elke Zimoch, 3. October 2011 Acknowledgment Some slides in this talk came form the „Getting started with EPICS“ lecture series of APS. My special thanks go to Ned Arnold and John Maclean from the Advanced Photon Source. The original talks can be found on www.aps.anl.gov/epics/docs/GSWE.php More people to thank for support: Timo Korhonen, Detlef Vermeulen, Dirk Zimoch
4
Elke Zimoch, 3. October 2011 Contents Morning: Introduction to EPICS Lecture What is EPICS? Examples from the EPICS tool box What are Records? How to set up an IOC? Conclusion Afternoon: Hands-on training Implementation of a Cooling System (IOC) Some simple clients (medm) Some more exercises
5
Elke Zimoch, 3. October 2011 What is EPICS? EPICS is: A collaboration A software tool kit A control system architecture EPICS is an abbreviation for: Experimental Physics and Industrial Control System EPICS: supports distributed control systems for large research facilities like accelerators uses Client/Server and Publish/Subscribe methods uses the Channel Access (CA) network protocol EPICS
6
Elke Zimoch, 3. October 2011 Who uses EPICS? Some members of the collaboration (very incomplete!): –ANL (APS Accelerator, APS Beamlines, IPNS), Chicago, USA –LANL, Los Alamos, USA –ORNL (SNS), Oak Ridge, USA –SLAC (SSRL, LCLS), Standford, USA –JLAB (CEBAF), Newport, USA –DESY, Hamburg, Deutschland –BESSY, Berlin, Deutschland –Gemini 8m-Telescope, Hawaii, USA –PSI (SLS, SwissFEL), Villigen, Switzerland –KEK, Tsukuba, Japan –DIAMOND Light Source (Rutherford Appleton Laboratory), Oxfordshire, England –Australian Synchrotron, Melbourne, Australia –Iter (Test Fusion Power Plant), South France –ESS (European Spallation Source), Lund, Sweden
7
Elke Zimoch, 3. October 2011 History In 1989 started a collaboration between Los Alamos National Laboratory (GTA) and Argonne National Laboratory (APS) (Jeff Hill, Bob Dalesio & Marty Kraimer) More than 150 licenses agreements were signed, before EPICS became Open Source in 2004 Team work on problems, for example over “Tech Talk” mailing list and webpage: http://www.aps.anl.gov/epics/ Two collaboration meetings every year (spring and autum) in turns in America, Asia, and Europa Collaborative efforts vary –Assistance in finding bugs –Add manpower: Share tools, schemes, and advice GTA: Ground Test Accelerator APS: Advanced Photon Source
8
Elke Zimoch, 3. October 2011 Are there alternatives to EPICS? System Name: EPICS TANGO DOOCS Tine PVSS (Cern) Pro: Bugs are already found Contra: Complicated to adapt to your problems Pro: Your problems solved perfectly Contra: You are on your own (no one can help) Pro: Outsource your problems Contra: Expensive Collaborations: Used at more than one Lab Single Site Systems: Developed and used in one Lab Commercial System
9
Elke Zimoch, 3. October 2011 The architecture of EPICS For EPICS, client and server refer to their Channel Access role: i.e. Channel Access Client and Channel Access Server This standard control system architecture is often called 3 tier architecture or 3 layer model Network based Client/Server Model (hence the EPICS logo): EPICS Client CA Client CA Server CA Server CA Client Layer Server Layer Connection Layer
10
Elke Zimoch, 3. October 2011 What is Channel Access? A protocol how to transfer data over network A single data unit is called Process Variable A Process Variable has a unique name, which is used to refer to the data (Naming convention needed!) The detailed operation of Channel Access is unimportant for most programmers (it already works…) Channel Access is not dependent on a single programming language (native library in C/C++, Java, and C# available) The entire set of Process Variables establish a Distributed Real-time Database of machine status, information and control parameters Process Variables CAS Process Variables CAS Process Variables CAS Process Variables CAS Process Variables CAS Process Variables CAS Process Variables CAS EPICS Database
11
Elke Zimoch, 3. October 2011 Some Details of Channel Access CA Client CA Server 1CA Server 2CA Server 3 Network 1. Query: Broadcast (UDP) 2. Reply: direct connection (UDP) 3. All further queries and replies work directly (Point-To-Point) (TCP) Default UDP ports: 5064 and 5065 Default TCP ports: 5064 and 5065 Defined in environment variables Need to be free in firewall!
12
Elke Zimoch, 3. October 2011 Channel Access Commands Process Variables: Channel Access Server S1A:H1:CurrentAO S1:P1:x S1:P1:y S1:G1:vacuum Channel Access Client Who has a PV named “S1A:H1:CurrentAO”? I do. What is its value? 25.5 AMPS Change its value to 30.5 “connection request” or “search request” OK, it is now 30.5 30.5 is too high. It is now set to the maximum value of 27.5. You are not authorized to change this value Notify me when the value changes It is now 20.5 AMPS It is now 10.5 AMPS It is now 0.0023 AMPS “put” or “caput” “get” or “caget” “set a monitor” “post an event” or “post a monitor” “put complete” or CA Server CA Client For all fuctionality see http://www.aps.anl.gov/epics/docs/ca.php for EPICS R3.14 Channel Access Reference Manual
13
Elke Zimoch, 3. October 2011 Contents Morning: Introduction to EPICS Lecture What is EPICS? Examples from the EPICS tool box What are Records? How to set up an IOC? Conclusion Afternoon: Hands-on training Implementation of a Cooling System (IOC) Some simple clients (medm) Some more exercises
14
Elke Zimoch, 3. October 2011 Examples from the EPICS software tool box Output Input CA Server IOC Control Room CA Client CA Server Server Programs: (user programs) iocCore Records Client Programs: alarmhandler Striptool, medm, many more … (user programs) Cannel Access: (UDP/TCP) 4th Layer Hardware: maybe controllers and PLCs
15
Elke Zimoch, 3. October 2011 What is an IOC? A special CA Server and CA Client (IOCs can “talk” to each other) A computer running the “IOC Core” program (at least once) This computer may be: -VME based, operating system vxWorks (only possibility for old EPICS Versions up to 3.14) or RTEMS -PC, operating system Windows, Linux, RTEMS -Apple, operating system OSX -UNIX Workstation, operating system Solaris An IOC normally is connected to input and/or output hardware (otherwise called softIOC) An IOC runs a record database, which defines what this IOC is doing IOC means Input Output Controller We will come back to details of EPICS Records later
16
Elke Zimoch, 3. October 2011 Some EPICS Client Programs (from the EPICS Website – very incomplete, selection is no assessment) ALH: Alarm Handler BURT: Backup and Restore Tool CASR: Host-based Save/Restore CAU: Channel Access Utility Channel Archiver (SNS) CSS and BOY: Control System Studio and Best OPI,Yet Channel Watcher (SLAC) EDM: Extensible Display Manager (ORNL) JoiMint: Java Operator Interface and Management INtegration Toolkit (DESY) Knobs: Knob Manager and KnobConfig, an Interface to SunDials MEDM: Motif Editor und Display Manager StripTool: Strip-chart Plotting Tool and many more … + Command line tools (caget, caput, …)
17
Elke Zimoch, 3. October 2011 Client Program: Command line tools Read a PV named caget NAME Write a PV named caput NAME value Get information about that Record cainfo NAME Start a monitor camonitor NAME (Cancel with [Ctrl] + [c]) >caget ARIDI-PCT:CURRENT ARIDI-PCT:CURRENT 350.56 > >caput ARIDI-PCT:CURRENT 401.5 Old: ARIDI-PCT:CURRENT 350.56 New: ARIDI-PCT:CURRENT 401.5 > >cainfo ARIDI-PCT:CURRENT ARIDI-PCT:CURRENT State: connected Host: sls-cagw-1 Access: read, no write Data type: DBR_DOUBLE Element count: 1 > >camonitor ARIDI-PCT:CURRENT ARIDI-PCT:CURRENT 250.542 ARIDI-PCT:CURRENT 250.537 ARIDI-PCT:CURRENT 250.533 ARIDI-PCT:CURRENT 250.525 >
18
Elke Zimoch, 3. October 2011 Client Program: medm
19
Elke Zimoch, 3. October 2011 Client Program: StripTool time channel values
20
Elke Zimoch, 3. October 2011 Client Program: Alarmhandler Records have predefined alarm states (SEVR): –NO_ALARM –MINOR –MAJOR –INVALID –not connected to the client (no Record state) everything ok warning alert (non controls problem) CA server ok, hardware error No server! Tree structure of Records Guidance Panel with more Information
21
Elke Zimoch, 3. October 2011 Contents Morning: Introduction to EPICS Lecture What is EPICS? Examples from the EPICS tool box What are Records? How to set up an IOC? Conclusion Afternoon: Hands-on training Implementation of a Cooling System (IOC) Some simple clients (medm) Some more exercises
22
Elke Zimoch, 3. October 2011 What are Records? A Record is an object with – a unique name – properties (fields) that contain information (data) different data types can appear in different fields – the ability to perform actions on that data XYZ1234 Employee : James Bond Badge Number: 007 Address : Whitehall, London Salary : £70070.07 unique name fieldsData
23
Elke Zimoch, 3. October 2011 Configured by developer Make a Record from a Measured Value VAL SEVR TIME 295,5 with a unit mA 17.2.2005 14:21:16 NO_ALARM with technical limits 0 bis 400 with graphical limits 0 bis 370 with a description „Beam current in SR“ A value with a data type with a unique name ARIDI-PCT:CURRENT ai record (ai, "ARIDI-PCT:CURRENT") { with a time stamp Readback from hardware/driver with a severity (alarm status) field (EGU, "mA") field (EGUF, "400") field (EGUL, "0") field (HOPR, "370") field (LOPR, "0") field (DESC, "Beam current in SR") field (DTYP, "HY8401") field (INP, "#C3 S0 @") }
24
Elke Zimoch, 3. October 2011 Records and Channel Access Process Variables A PV name is comprised of two parts –The record name, and –the name of a field belonging to that record For example… A record name ARIDI-PCT:CURRENT A field name EGU. A dot to join them A Process variable name No dots allowed in Record names! Note that if no field name is given, Channel Access will default to using the VAL field “ ARIDI-PCT:CURRENT ” is interpreted as “ ARIDI-PCT:CURRENT.VAL ” that means: most record fields can be accessed individually
25
Elke Zimoch, 3. October 2011 What do Records do? Analog in Analog out Binary in Binary out Calculation Calculation out Compression Data fanout Event Fanout Histogram Motor Multi bit binary input Multi bit binary output PID control Pulse counter Pulse delay Scan Select Sequence String in String out Subarray Subroutine Waveform Depends on 1.Record Type 2.Field values Records are active, they do things –Get data from other records or from hardware –Perform calculations –Check values are in range and raise alarms –Put data to other records or to hardware –Activate or disable other records –Wait for hardware signals (interrupts) record do nothing until they are processed incomplete list!
26
Elke Zimoch, 3. October 2011 Record Processing Record processing can be periodic or event driven Periodic: Standard scan rates are… –10, 5, 2, 1, 0.5, 0.2 and 0.1 seconds –Custom scan rates can be configured up to speeds allowed by operating system and hardware –No precise timing! Event driven: Events include –Hardware interrupts –Request from another record via links –EPICS Events –Channel Access Puts means: Trigger Record to do what it is configured to do.
27
Elke Zimoch, 3. October 2011 The Record Reference Manual Explains records from the EPICS base release Explains database concepts, record types, and record fields New Version as Wiki: http://www.aps.anl.gov/epics/wiki/index.php/RRM_3-14 Old Version (R3.13): html : http://www.aps.anl.gov/epics/EpicsDocumentation/AppDevManuals/RecordRef/Recordref-1.html pdf: http://www.aps.anl.gov/epics/EpicsDocumentation/AppDevManuals/RecordRef/Recordref.pdf More Records exist. For example Motor Record (part of synApps package): http://www.aps.anl.gov/bcda/synApps/index.php
28
Elke Zimoch, 3. October 2011 Example: Measure a Value Operator Value (34 °C) CA Client: medm Driver Device Support Record Support record … field (SCAN, “.1 second”) field (DTYP, “Hy8401”) field (INP, “#C3 S0 @”) field (VAL, “34”) every 0.1 seconds the record asks the driver for a value and the driver reports back medm sets a CA monitor every time the value changes record triggers callback IOC
29
Elke Zimoch, 3. October 2011 Contents Morning: Introduction to EPICS Lecture What is EPICS? Examples from the EPICS tool box What are Records? How to set up an IOC? Conclusion Afternoon: Hands-on training Implementation of a Cooling System (IOC) Some simple clients (medm) Some more exercises
30
Elke Zimoch, 3. October 2011 IOC Overview: What has to be done? EPICS base some functions: dbLoadDatabase dbLoadTemplate iocInit driver (optional) seq (snl code) (optional) your own C-code (optional) make startup script: st.cmd call iocCore functions text file dbd files:xxxApp.dbd (data base definitions) EPICS Version dependent! additional files for drivers text files substitution files template file text files database files (db) text files configure Records comes with EPICS base or drivers configures what the IOC does iocCore xxxApp
31
Elke Zimoch, 3. October 2011 Steps towards your IOC (1/4) What you need before you start –Build tools: gcc, make, tar, gzip –Perl scripting language –Development package of readline –Development packages of X11 and Motif –A text editor (e.g. nedit, kwrite, emacs) Browse EPICS home http://aps.anl.gov/epics –Get latest Base –Get Extensions: Config files 3.14, medm for EPICS extensions like medm the latest is not always best: have a look at techTalk, read “Known Problems” and “Release Notes” read “Installation Instructions” (Read Me) as well … We use baseR3.14.12-1 today On MS Windows you need cygwin in addition
32
Elke Zimoch, 3. October 2011 Steps towards your IOC (2/4) Extract Base and Extension packages tar xvfz baseR3.14.12-1.tar.gz tar xvfz extensionsTop_20070703.tar.gz tar xvfz medm3_1_5.tar.gz –C extensions/src Build Base export EPICS_HOST_ARCH=linux-x86 cd base-3.14.12-1 make export PATH=~/base-3.14.12-1/bin/linux-x86:$PATH Test the installation softIoc vxWorks-ppc604 win32 cygwin-x86
33
Elke Zimoch, 3. October 2011 Steps towards your IOC (3/4) Build Extensions (here: medm) cd extensions/configure –Edit the RELEASE file nedit RELEASE Set correct path to EPICS Base, e.g. EPICS_BASE=/home/epics/base-3.14.12-1 make cd../src/medm3_1_5 make export PATH=~/extensions/bin/linux-x86:$PATH Test the installation medm This is something you often have to do with EPICS components
34
Elke Zimoch, 3. October 2011 Steps towards your IOC (4/4) Make environment variables permanent –Edit ~/.basrc and add variables: export EPICS_HOST_ARCH=linux-x86 export EPICS_BASE=/home/epics/base-3.14.12-1 export EPICS_EXTENSIONS=/home/epics/extensions export PATH=$EPICS_BASE/bin/$EPICS_HOST_ARCH:\ $EPICS_EXTENSIONS/bin/$EPICS_HOST_ARCH:$PATH EPICS can also be installed centrally (and maybe should) –e.g. /opt/epics/base-3.14.12 and /opt/epics/extensions –or /usr/local/epics/…
35
Elke Zimoch, 3. October 2011 How does an st.cmd file look like (on Linux)? set environment on the IOC load dbd files and register them load records start IOC configure hardware (depends on driver) start Application “trainingIOC” should be meaningful (not exampleIOC or myIOC) more IOC functions in EPICS Application Developer's Guide: http://www.aps.anl.gov/epics/base/R3-14/12-docs/AppDevGuide.pdf
36
Elke Zimoch, 3. October 2011 How to create a record 1: db file Record TypeRecord Name Driver information periodic Record processing Records can be created in any editor Graphical creation with VDCT (not used at PSI)
37
Elke Zimoch, 3. October 2011 How to create a record 2: substitutions and templates What to do if you have more than one instance of a device? –Multiply the record and change the name works ok –If you have 20 motors db file gets lengthy –If the device not only needs one record but more (BPM with at least x, y, and intensity) db file gets even more lengthy and confusing [spell maintenance nightmare] Solution provided by EPICS: substitution (with macro definition) and template files
38
Elke Zimoch, 3. October 2011 How to create a record 2: substitutions and templates DEVICE = MTRT1 $(DEVICE)-TEMP:READ MTRT1-TEMP:READ there is no standard file extension for substitution and template files in EPICS! At PSI: xxx.subs and yyy.template
39
Elke Zimoch, 3. October 2011 IOC System in real … step by step 1.Prepare Application (make EPICS base + driver) 2.Write startup script (st.cmd file) 3.Write records (db file or substitution + template files) 4.Save to boot directory 5.Set boot parameters of VME computer 6.Reboot –Load and start operating system (vxWorks) –Load and start st.cmd Load dbd files Configure hardware Load records Start IOC (iocInit) and create records 7.Test functionality 8.Debug files and go to step 6 IOC Development: configure text files (no code, no make)
40
Elke Zimoch, 3. October 2011 Contents Morning: Introduction to EPICS Lecture What is EPICS? Examples from the EPICS tool box What are Records? How to set up an IOC? Conclusion Afternoon: Hands-on training Implementation of a Cooling System (IOC) Some simple clients (medm) Some more exercises
41
Elke Zimoch, 3. October 2011 10 really neat Things about EPICS 1.It is free 2.It is Open Source 3.There are lots of users 4.All a client needs to know to access data is a PV name 5.You can pick the best tools out there … 6.… or build your own 7.The boring stuff is already done 8.There is a lot of expertise available close by 9.A good contribution becomes internationally known 10.It does not matter, if you need 10 or 10 million PVs (it is scalable) 11. It is fun (but maybe do not tell this to your management)
42
Elke Zimoch, 3. October 2011 Where to learn more? EPICS home page http://www.aps.anl.gov/epics/ Tech Talk: listen (and learn) http://www.aps.anl.gov/epics/tech-talk/index.php Getting Started with EPICS lecture series http://www.aps.anl.gov/epics/docs/GSWE.php Collaboration Meeting (twice a year) http://www.aps.anl.gov/epics/meetings.php
43
Elke Zimoch, 3. October 2011 Contents Morning: Introduction to EPICS Lecture What is EPICS? Examples from the EPICS tool box What are Records? How to set up an IOC? Conclusion Afternoon: Hands-on training Implementation of a Cooling System (IOC) Some simple clients (medm) Some more exercises
44
Elke Zimoch, 3. October 2011 Problem: In the LINAC we have a water chiller that must be turned ON whenever the average temperature of two temperature sensors rises above a set point. The set point is nominally 45 degrees centigrade. Example: Cooling System Binary out MTRT1-LI:COOL-SW Calculation MTRT1-LI:CALC CALC: ( (A+B)/2 ) > C C: 10 SCAN: 10 second Analog In MTTR1-LI:TEMP1 EGU: deg C VAL INP EGU: deg C VAL INP INPB INPA VAL DOLOUT T2 Sensor T1 IOC Database ADC Binary I/O Chiller Analog In MTRT1-LI:TEMP2
45
Elke Zimoch, 3. October 2011 files prepared in directory Training/vxWorks Installation directory: /home/ioc/MTEST-VME-T1 Installation: copy (cp) st.cmd and db file cp st.cmd /home/ioc/MTEST-VME-T1 cp COOLER.db /home/ioc/MTEST-VME-T1
46
Elke Zimoch, 3. October 2011 medm – say it with Pictures MTRT1-LI-COOL:TEMP1
47
Elke Zimoch, 3. October 2011 IOC System in real … step by step 1.Prepare Application (make EPICS base + driver) 2.Write startup script (st.cmd file) 3.Write records (db file or substitution + template files) 4.Save to boot directory: /home/ioc/ 5.Set boot parameters of VME computer 6.Reboot: type reboot in minicom window –Load and start operating system –Load and start st.cmd Load dbd files Configure hardware Load records Start IOC (iocInit) and create records 7.Test functionality 8.Debug files and go to step 6
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.