Controls Section PSI 2010 Dr. Dirk Zimoch and Dr. Elke Zimoch

Slides:



Advertisements
Similar presentations
1 1999/Ph 514: Channel Access Concepts EPICS Channel Access Concepts Bob Dalesio LANL.
Advertisements

EPICS Base R and beyond Andrew Johnson Computer Scientist, AES Controls Group.
SNS Integrated Control System Running IOC Core on Windows and Linux Dave Thompson Wim Blokland Ernest Williams.
Channel Access Protocol Andrew Johnson Computer Scientist, AES Controls Group.
Dirk Zimoch, EPICS Collaboration Meeting, Vancouver 2009 Real-Time Data Transfer using the Timing System (Original slides and driver code by Babak Kalantari)
Linux IOC Operations at NSTX - An Overview P. Sichta 28Mar2005.
9-12 Oct 2000PCaPAC 2000, DESY Hamburg Epics to TINE translator Matthias Clausen, DESY Hamburg Phil Duval, DESY Hamburg Zoltan Kakucs, DESY Hamburg.
Pete Owens MICE Controls & Monitoring Workshop 25th September 2006 MICE Control and Monitoring: General Architecture Subsystem Integration User Interface.
V4 – Executive Summary 1.Provide online add/delete of I/O to support continuous operation. 2.Provide redundant control of remote I/O to support improved.
OPC Overview OPC Device Support (PLC Gateway for 3.14) Ralph Lange – EPICS Collaboration Meeting at SLAC, April 2005.
Dirk Zimoch, EPICS Meeting April 2007, Hamburg Siemens S7 PLC Communication.
Diagnostics and Controls K. Gajewski ESS Spoke RF Source Accelerator Internal Review.
DEMONSTRATION FOR SIGMA DATA ACQUISITION MODULES Tempatron Ltd Data Measurements Division Darwin Close Reading RG2 0TB UK T : +44 (0) F :
Linux Operations and Administration
Dirk Zimoch, KSTAR Meeting 2009 Auto Save and Restore.
INTRODUCTION TO WEB DATABASE PROGRAMMING
Input/Output Controller (IOC) Overview Andrew Johnson Computer Scientist, AES Controls Group.
Elke Zimoch, 3. October 2011 Found on
EPICS and EDM Overview 03 October 2008 Matt Boyes EPICS and EDM Overview Lecture 1 Matt Boyes.
A U.S. Department of Energy Office of Science Laboratory Operated by The University of Chicago Argonne National Laboratory Office of Science U.S. Department.
A U.S. Department of Energy Office of Science Laboratory Operated by The University of Chicago Argonne National Laboratory Office of Science U.S. Department.
1 Experimental Physics and Industrial Control System (EPICS) Database Bob Dalesio, May 31,2010.
Experimental Physics and Industrial Control System (EPICS) Database Bob Dalesio, June 27,2001.
Ralph Lange: OPC Gateway (Device Support) OPC Gateway (Device Support) Ralph Lange – EPICS Collaboration Meeting March SSRF.
IRMIS 2 Overview Andrew Johnson Computer Scientist, AES Controls.
Introduction to EPICS (Ned Arnold, John Maclean).
EPICS Overview 25 August 2009 Matt Boyes EPICS Overview Lecture 1 Matt Boyes.
EPICS Direction to Support Large Projects and Incorporate New Technology Leo R. Dalesio 09/21/99.
A U.S. Department of Energy Office of Science Laboratory Operated by The University of Chicago Argonne National Laboratory Office of Science U.S. Department.
Computer Emergency Notification System (CENS)
A U.S. Department of Energy Office of Science Laboratory Operated by The University of Chicago Argonne National Laboratory Office of Science U.S. Department.
Managed by UT-Battelle for the Department of Energy Kay Kasemir ORNL/SNS Jan Control System Studio, CSS Overview.
EEDEED Tuesday, May 18, VBA & Process Variables  System Overview  Setup (What installations are needed)  What are Process Variables and what.
Writing a Channel Access Client in EPICS Bob Dalesio, April 5, 2000.
Writing a Channel Access Client in EPICS Bob Dalesio, April 5, 2000.
EPICS EPICS Limitations Bob Dalesio Marty Kraimer.
Fast Fault Finder A Machine Protection Component.
EPICS Release 3.15 Bob Dalesio May 19, Features for 3.15 Support for large arrays - done for rsrv in 3.14 Channel access priorities - planned to.
1 EPICS January 2009What is an EPICS Database What is an EPICS Database? Andrew Johnson APS (modified by Philip Taylor & Andy Foster )
1 1999/Ph 514: Flow of Control EPICS Flow of Control Marty Kraimer APS.
Control System Overview J. Frederick Bartlett Fermilab June 1,1999.
1. LabVIEW and EPICS Workshop EPICS Collaboration Meeting Fall 2011.
Controls & Monitoring Overview J. Leaver 03/06/2009.
Managed by UT-Battelle for the Department of Energy EPICS Database Kay Kasemir, SNS/ORNL Many slides from Andrew Johnson, APS/ANL Sept
Advanced Photon Source Channel Access, CaSnooper, and CASW Kenneth Evans, Jr. Presented November 7, 2003 Argonne National Laboratory.
Linux Operations and Administration
B. Dalesio, N. Arnold, M. Kraimer, E. Norum, A. Johnson EPICS Collaboration Meeting December 8-10, 2004 Roadmap for IOC.
11 th February 2008Brian Martlew EPICS for MICE Status of the MICE slow control system Brian Martlew STFC, Daresbury Laboratory.
1 1999/Ph 514: What is an EPICS Database? EPICS What is an EPICS Database? Andrew Johnson APS.
1 1999/Ph 514: Supported Hardware EPICS Supported Hardware Ned D. Arnold APS.
1 Channel Access Concepts – IHEP EPICS Training – K.F – Aug EPICS Channel Access Concepts Kazuro Furukawa, KEK (Bob Dalesio, LANL)
EPICS and LabVIEW Tony Vento, National Instruments
1 EPICS Flow of Control: EPICS Workshop at IHEP, Beijing, August 2001 EPICS Flow of Control Marty Kraimer APS.
Matthias Clausen, DESY EPICS Training – Client Tools/ CSS EPICS collaboration meeting EPICS Training Client Tools EPICS collaboration meeting 2008.
Managed by UT-Battelle for the Department of Energy Kay Kasemir Jan Experimental Physics and Industrial Control System.
EPICS Records J. Frederick Bartlett Fermilab June 1,1999.
Control System Overview J. Frederick Bartlett Fermilab June 1,1999.
EPICS Overview EPICS Training INFN October 13, 2008 Presented by: Andrew Johnson Based on previous versions by Marty Kraimer, Ned Arnold, John Maclean,
ICS WP3 – Software Core Components Suzanne Gysin Work Package Lead November 25, 2014.
An Introduction to Epics/Tango Steve Hunt Alceli EPICS Meeting 2008 INFN Legnaro 15 Oct 17:15.
1 1999/Ph 514: Lab #2 : IOC Database EPICS Lab #2 IOC Database.
Monitoring Dynamic IOC Installations Using the alive Record Dohn Arms Beamline Controls & Data Acquisition Group Advanced Photon Source.
This material is based upon work supported by the U.S. Department of Energy Office of Science under Cooperative Agreement DE-SC , the State of Michigan.
Using COTS Hardware with EPICS Through LabVIEW – A Status Report EPICS Collaboration Meeting Fall 2011.
SNS Integrated Control System ORACLE –JERI DB Generation April 27, 2004 Coles Sibley Jeff Patton.
Getting Started with EPICS A lecture Series
Marty Kraimer Advanced Photon Source Argonne National Laboratory
Channel Access Concepts
EPICS: Experimental Physics and Industrial Control System
Current EPICS Developments at PSI
Presentation transcript:

Controls Section PSI 2010 Dr. Dirk Zimoch and Dr. Elke Zimoch EPICS Training @ PSI Controls Section PSI 2010 Dr. Dirk Zimoch and Dr. Elke Zimoch

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 EPICS Training @ PSI

Contents Introduction to EPICS What are Records Set up an IOC on your PC Overview of S7 PLC driver Include S7 PLC communication into your IOC IOC monitoring EPICS Training @ PSI

What is EPICS? EPICS is an abbreviation for: Experimental Physics and Industrial Control System EPICS is: A collaboration A tool kit A control system architecture EPICS Training @ PSI

The History In1989 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 Collaborative efforts vary Assistance in finding bugs Share tools, schemes, and advice GTA: Ground Test Accelerator APS: Advanced Photon Source EPICS Training @ PSI

The architecture of EPICS Network based Client/Server Model (hence the EPICS logo) EPICS A Server provides information and service A Client uses the service or asks for the information CA CA Client Client CA CA Server Server For EPICS, client and server refer to their Channel Access role i.e. Channel Access Client and Channel Access Server EPICS Training @ PSI

What is Channel Access A protocol how to transfer data A single data unit is called Process Variable A Process Variable has a unique name, which is used to refer to the data The detailed operation of Channel Access is unimportant for most programmers (it already works…) Channel Access is not dependent on a single programming language EPICS Training @ PSI

Channel Access network flow 1. Query: Broadcast CA Client 2. Answer: direct connection 3. All further queries and answers work directly (Point-To-Point) Network CA Server 1 CA Server 2 CA Server 3 EPICS Training @ PSI

Control System Architecture A network based “Client/Server” Model, whose smalest data set is a Process Variable The Channel Access Protocol defines, what data (Process Variable) is transferred between server and client The entire set of Process Variables establish a Distributed Real-time Database of machine status, information and control parameters Process Variables CAS EPICS Database EPICS Training @ PSI

Standard Model of EPICS Client Software MEDM ALH StripTool TCL/TK Perl Scripts OAG Apps Many, many others … Output IOC CAS IOC Channel Access Input CA Server Software EPICS Database consists of Process Variables Custom Programs Realtime control Sequence Programs Records Commercial Instruments Custom hardware Technical Equipment EPICS Training @ PSI

Typical Realisation IOC CAS IOC Commercial Instruments Custom hardware Desktop IOC CAS IOC Laptop Most CAServer applications are based on Unix/Linux or Windows IOCs are based on vxWorks (VME), Linux and Windows (SoftIOC) Commercial Instruments Custom hardware Technical Equipment EPICS Training @ PSI

What is an IOC A special CA Server and CA Client IOC means Input Output Controller A special CA Server and CA Client A computer running “IOC Core” This computer may be: VME based, operating system vxWorks (only possibility 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 An EPICS control system is based on at least one Channel Access Server (normally an IOC) An IOC runs a record database, which defines what this IOC is doing EPICS Training @ PSI

Inside an IOC The major software components of an IOC (IOC Core) LAN (Network) IOC Channel Access Database Sequencer Device Support I/O Hardware EPICS Training @ PSI

Some CA Clients (from the EPICS Website - incomplete) ALH: Alarm Handler BURT: Backup and Restore Tool CASR: Host-based Save/Restore CAU: Channel Access Utility Channel Archiver (SNS) Channel Watcher (SLAC) EDM: Extensible Display Manager (ORNL) JoiMint: Java Operator Interface and Management INtegration Toolkit (DESY) Knobs: Knob Manager und KnobConfig, eine Schnittstelle zu SunDials MEDM: Motif Editor und Display Manager StripTool: Strip-chart Plotting Tool and many more … EPICS Training @ PSI

Examples: medm EPICS Training @ PSI

CA Commands – command line Client Read a PV named <NAME> caget NAME Write a PV named <NAME> caput NAME value Get information about that Record cainfo NAME Start a monitor camonitor NAME (Cancel with [Ctrl] + [c]) EPICS Training @ PSI

Channel Access Commands “connection request” or “search request” “get” or “caget” “put” or “caput” “set a monitor” Change its value to 30.5 Notify me when the value changes Who has a PV named “S1A:H1:CurrentAO”? What is its value? Channel Access Client CA Client CA Server I do. 25.5 AMPS OK, it is now 30.5 It is now 20.5 AMPS It is now 10.5 AMPS It is now 0.0023 AMPS Channel Access Server Process Variables: “put complete” S1A:H1:CurrentAO S1:P1:x S1:P1:y S1:G1:vacuum 30.5 is too high. It is now set to the maximum value of 27.5. “post an event” or “post a monitor” or You are not authorized to change this value or EPICS Training @ PSI

Contents Introduction to EPICS What are Records Set up an IOC on your PC Overview of S7 PLC driver Include S7 PLC communication into your IOC IOC monitoring EPICS Training @ PSI

Close look at a Measured Value 295,5 Value with a data type with a unit mA with a time stamp 17.2.2005 14:21:16 with a severity (alarm state) NO_ALARM with technical limits 0 bis 400 with graphical limits 0 bis 370 with a description „Beam current in SR“ A measured value is an object with multiple related information EPICS Training @ PSI

What are Records? A Record is an object with a unique name properties (fields) that contain information (data) the ability to perform actions on that data unique name XYZ1234 Employee : James Bond Badge Number: 007 Address : Whitehall, London Salary : £70070.07 fields Data EPICS Training @ PSI

From Measured Value to Record record (ai, "ARIDI-PCT:CURRENT") { with a unique name ARIDI-PCT:CURRENT 295,5 A value with a data type ai field (EGU, "mA") field (EGUF, "400") field (EGUL, "0") with a unit mA with a time stamp 17.2.2005 14:21:16 field (HOPR, "370") field (LOPR, "0") with a severity (alarm status) NO_ALARM field (DESC, "Beam current in SR") with technical limits 0 bis 400 field (DTYP, "HY8401") field (INP, "#C3 S0 @") with graphical limits 0 bis 370 } with a description „Beam current in SR“ Readback from hardware: EPICS Training @ PSI

A Process Variable name A PV name is comprised of two parts The record name, and the name of a field belonging to that record For example… ARIDI-PCT:CURRENT . EGU A Process variable name A record name A dot to join them A field name Note that if no field name is given, Channel Access will default to using the .VAL field i.e. “ARIDI-PCT:CURRENT” = “ARIDI-PCT:CURRENT.VAL” EPICS Training @ PSI

What do Records do? 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) What a record does depends upon its type and the values in its fields A wide range of records have already been created New record types can be added to a new application as needed A record does nothing until it is processed EPICS Training @ PSI

Some Record Types 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 EPICS Training @ PSI

IOC view of a Record EPICS Training @ PSI record(ao,"DemandTemp") { field(DESC,"Temperature") field(ASG,"") field(SCAN,"Passive") field(PINI,"NO") field(PHAS,"0") field(EVNT,"0") field(DTYP,"VMIC 4100") field(DISV,"1") field(SDIS,"") field(DISS,"NO_ALARM") field(PRIO,"LOW") field(FLNK,"") field(OUT,"#C0 S0") field(OROC,"0.0e+00") field(DOL,"") field(OMSL,"supervisory") field(OIF,"Full") field(PREC,"1") field(LINR,"NO CONVERSION") field(EGUF,"100") field(EGUL,"0") field(EGU,"Celcius") field(DRVH,"100") field(DRVL,"0") field(HOPR,"80") field(LOPR,"10") field(HIHI,"0.0e+00") field(LOLO,"0.0e+00") field(HIGH,"0.0e+00") field(LOW,"0.0e+00") field(HHSV,"NO_ALARM") field(LLSV,"NO_ALARM") field(HSV,"NO_ALARM") field(LSV,"NO_ALARM") field(HYST,"0.0e+00") field(ADEL,"0.0e+00") field(MDEL,"0.0e+00") field(SIOL,"") field(SIML,"") field(SIMS,"NO_ALARM") field(IVOA,"Continue normally") field(IVOV,"0.0e+00") } EPICS Training @ PSI

The Record Reference Manual In English (American style) Explains database concepts and record types All fields are explained for common record types Test: What does the field HSV of an ai Record Common fields for all records are described in the first part The explained records are part of the EPICS base release More Records exist. Find their documentation in the internet EPICS Training @ PSI

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 Event driven: Events include Hardware interrupts Request from another record via links EPICS Events Channel Access Puts EPICS Training @ PSI

calculation: if switch = On Example Power Supply: switch on and off and read and set voltage readback value (ai) set value (ao) switch: On/Off (bo) output value calculation: if switch = On then Out = set val else Out = 0 (calc) output input EPICS Training @ PSI

Contents Introduction to EPICS What are Records Set up an IOC on your PC Overview of S7 PLC driver Include S7 PLC communication into your IOC IOC monitoring EPICS Training @ PSI

Steps towards your IOC (1) What you need before you start Build tools: gcc, make, tar, gzip Perl scripting language 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 From PSI EPICS page http://epics.web.psi.ch Get s7plc driver Ask your system administrator EPICS Training @ PSI

Steps towards your IOC (2) Extract Base and Extension packages tar xvfz baseR3.14.12-rc1.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-rc1 make export PATH=~/base-3.14.12-rc1/bin/linux-x86:$PATH Test the installation softIoc EPICS Training @ PSI

Steps towards your IOC (3) 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-rc1 make cd ../src/medm3_1_5 export PATH=~/extensions/bin/linux-x86:$PATH Test the installation medm This is something you often have to do with EPICS components EPICS Training @ PSI

Steps towards your IOC (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-rc1 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 e.g. /opt/epics/base-3.14.12 and /opt/epics/extensions or /usr/local/epics/… EPICS Training @ PSI

Steps towards your IOC (5) Ready to start ! We will start with the power supply simulation Go to your home directory, create a new directory for your IOC and create some files. You will need 2 files for the beginning. cd mkdir myFirstIoc cd myFirstIoc nedit st.cmd PowerSupplySimu.db & EPICS Training @ PSI

Create your records from the Example Comment # interface records record (bo, "PowerSupply1:Switch") { field (DESC, "Switch On or Off") field (ZNAM, "Off") field (ONAM, "On") field (FLNK, "PowerSupply1:Calculation") # after switch set calc output } record (ao, "PowerSupply1:SetValue") { field (DESC, "Nominal set value") field (EGU, "V") field (PREC, "2") record (ai, "PowerSupply1:Readback") { field (DESC, "Actual readback from HW") field (INP, "PowerSupply1:OutputValue") field (SCAN, ".1 second") EPICS Training @ PSI

Create your records from the Example 2 # private records (do not use them on clients) record (calc, "PowerSupply1:Calculation") { field (DESC, "Combine Switch and SetValue") field (INPA, "PowerSupply1:Switch") field (INPB, "PowerSupply1:SetValue") field (CALC, "A=0?0:B") # if switch=Off then Null else setValue field (FLNK, "PowerSupply1:OutputValue") # after calculation write output } record (ao, "PowerSupply1:OutputValue") field (DESC, "Value send to HW") field (EGU, "V") field (PREC, "2") field (DOL, "PowerSupply1:Calculation") # get the output value field (OMSL, "closed_loop") EPICS Training @ PSI

Startup script st.cmd EPICS Training @ PSI

Start your IOC In the directory where you have your PowerSupplySimu.db file the st.cmd file use the command softIoc st.cmd EPICS Training @ PSI

Read your records from Client side From the command line: caget PowerSupply1:Readback caput PowerSupply1:SetValue 6.3 caput PowerSupply1:Switch On camonitor PowerSupply1:Readback Or use a GUI (medm): medm simpleDisplay.adl EPICS Training @ PSI

Templates and substitutions Problem: Imagine you have a second power supply There are two possible solutions: Copy the db file and change all names Change from db files to a combination of substitution and template files ... We will show the second approach EPICS Training @ PSI

substitution file EPICS Training @ PSI

template file # interface records record (bo, "$(Name):Switch") { field (DESC, "Switch On or Off") field (ZNAM, "Off") field (ONAM, "On") field (FLNK, "$(Name):Calculation") # after switch set calc output } record (ao, "$(Name):SetValue") { field (DESC, "Nominal set value") field (EGU, "V") field (PREC, "2") record (ai, "$(Name):Readback") { field (DESC, "Actual readback from HW") field (INP, "$(Name):OutputValue") field (SCAN, ".1 second") EPICS Training @ PSI

template file # private records (do not use them on clients) record (calc, "$(Name):Calculation") { field (DESC, "Combine Switch and SetValue") field (INPA, "$(Name):Switch") field (INPB, "$(Name):SetValue") field (CALC, "A=0?0:B") # if switch=Off then Null else setValue field (FLNK, "$(Name):OutputValue") # after calculation write output } record (ao, "$(Name):OutputValue") field (DESC, "Value send to HW") field (EGU, "V") field (PREC, "2") field (DOL, "$(Name):Calculation") # get the output value field (OMSL, "closed_loop") EPICS Training @ PSI

Startup script st.cmd Comment Out (add # in front) Uncomment (delete # ) EPICS Training @ PSI

Contents Introduction to EPICS What are Records Set up an IOC on your PC Overview of S7 PLC driver Include S7 PLC communication into your IOC IOC monitoring EPICS Training @ PSI

Theory of Operation PLC and IOC exchange blocks of PVs over TCP Blocks can have arbitrary length and layout. Example: PLC sends data periodically (e.g. 0.1 sec) IOC sends data on change Only complete blocks are transmitted. offs pv type 0 status (16 bits) 2 voltage (long int) 6 temperature (float) 10 message (string[12]) 22 EPICS Training @ PSI

Input records SCAN should be “I/O Intr”. Record processes whenever PLC sends new data. On any communication error the connection is closed and reopened Records get INVALID alarm Connection monitor record Special DTYP “S7plc stat” for bi record. Connection monitor: 1 when connected. No alarm by driver. EPICS Training @ PSI

Output records PINI should be “YES”. Initializes output block before first data is sent. Otherwise uninitialized values will be sent as 0. Driver looks for changes periodically. All changes during one interval are collected. If nothing has changed, nothing is sent. Limits network traffic but adds latency. EPICS Training @ PSI

Driver setup Give the PLC a name Ask programmer of PLC for IP address and port Byte order: big endian or little endian Block size and send period PLCIOC Block size and max latency IOCPLC Configure driver in startup script: s7plcConfigure ("PlcName", "IpAddress", TcpPort, PlcToIocSize, IocToPlcSize, bigEndian, ReceiveTimout_ms, SendPeriod_ms) big=1 little=0 approx x 5 EPICS Training @ PSI

Example PLC “dev-x” at address 192.168.0.10 TCP server port 2000 22 byte input from PLC approx every 100 msec allow factor 5 for timeout → 500 msec 2 byte output to PLC with latency 100 msec all outputs within 100 msec in one transfer Big endian byte order s7plcConfigure ("dev-x","192.168.0.10", 2000, 22, 2, 1, 500, 100) EPICS Training @ PSI

Record setup Ask programmer of PLC for DTYP is “S7plc”. Layout of PVs (offset, data type) Meta data (limits, bit shifts, units, etc.) DTYP is “S7plc”. INP / OUT link "@PlcName/offset T=type L=low H=high B=bit" Not all parameters required in all cases. L and H used in analog records for conversion. B used in binary records for bit number. EPICS Training @ PSI

Example 16 bit status word at offset 0 record (mbbiDirect, "$(DEV):status") { field (DTYP, "S7plc") field (INP, "@dev-x/0 T=WORD") field (NOBT, "16") field (SCAN, "I/O Intr") } EPICS Training @ PSI

Example 24 bit integer DAC value in 4 bytes at offset 2 0x00000000 = -24.0V 0x00FFFFFF = + 24.0V record (ai, "$(DEV):voltage") { field (DTYP, "S7plc") field (INP, "@dev-x/2 T=INT32 L=0 H=0x00FFFFFF") field (EGUL, "-24") field (EGUF, "24") field (LINR, "LINEAR") field (EGU, "V") field (PREC, "1") field (SCAN, "I/O Intr") } EPICS Training @ PSI

Example Single precision float temperature (in °C) at offset 6 User wants °F ( = °C * 1.8 + 32) record (ai, "$(DEV):temperature") { field (DTYP, "S7plc") field (INP, "@dev-x/6 T=FLOAT") field (ASLO, "1.8") field (AOFF, "32") field (EGU, "°F") field (SCAN, "I/O Intr") } EPICS Training @ PSI

Example 12 byte string message at offset 10 record (stringin, "$(DEV):message") { field (DTYP, "S7plc") field (INP, "@dev-x/10 L=12") field (SCAN, "I/O Intr") } EPICS Training @ PSI

Example 2 byte command output, bits 4 and 5 for switch 01: switch on, 10: switch off record (mbbo, "$(DEV):switch") { field (DTYP, "S7plc") field (OUT, "@dev-x/2 T=WORD") field (NOBT, "2") field (SHFT, "4") field (ZRVL, "2") field (ZRST, "OFF") field (ONVL, "1") field (ONST, "ON") field (PINI, "YES") } EPICS Training @ PSI

Contents Introduction to EPICS What are Records Set up an IOC on your PC Overview of S7 PLC driver Include S7 PLC communication into your IOC IOC monitoring EPICS Training @ PSI

Architecture Control Room IOC (PC) EPICS Clients Channel Access EPICS Server TCP connection S7 PLC “Hardware” EPICS Training @ PSI

Architecture continued EPICS Clients Channel Access EPICS Server TCP connection S7 PLC “Hardware” EPICS Training @ PSI

Build the driver Create a diver module area Build the s7 driver cd mkdir modules cd modules makeBaseApp.pl –t support dummy rm –rf dummyApp make Build the s7 driver tar xvfz ~/s7plc.tgz cd s7plc EPICS Training @ PSI

Example File PLC.template Blinking watchdog File PowerSupply.subs record (bi, "$(PLC):Watchdog") { field (DESC, "Blinks when PLC runs") field (DTYP, "S7plc") field (INP, "@$(PLCname)/8 T=BYTE B=7") field (ZNAM, "Tick") field (ONAM, "Tack") } watchdog: 0/1 blinking indicator (bi) input File PowerSupply.subs file PLC.template { { PLC = PLC1 } } file PowerSupplySimu.template ... offset 8 bit 7 S7 PLC EPICS Training @ PSI

Include driver to st.cmd # Load drivers and dbd files ============== dlload /home/epics/modules/lib/linux-x86/libs7plc.so dbLoadDatabase /home/epics/modules/dbd/s7plc.dbd s7plc_registerRecordDeviceDriver # Configure the hardware #s7plcConfigure "PLCname","IPaddr",IPport,inSize,outSize, # bigEndian,recvTimeout,sendIntervall s7plcConfigure "PLC1","192.168.0.10",2000,10,10,1,500,100 # Load your record files ================== dbLoadTemplate("PowerSupply.subs") # start the EPICS IOC ===================== iocInit EPICS Training @ PSI

calculation: if switch = On Example 1. Blinking watchdog input 2. Modify Power Supply readback value (ai) set value (ao) switch: On/Off (bo) output value calculation: if switch = On then Out = set val else Out = 0 (calc) output watchdog: 0/1 blinking indicator (bi) input offset 8 bit 7 offset 4 FLOAT offset 4 FLOAT S7 PLC EPICS Training @ PSI

Modify template file EPICS Training @ PSI record (ai, "$(Name):Readback") { field (DESC, "Actual readback from HW") field (EGU, "V") field (PREC, "2") field (DTYP, "S7plc") field (INP, "@$(PLCname)/4 T=FLOAT") # read from PLC field (SCAN, "I/O Intr") } record (ao, "$(Name):OutputValue") field (DESC, "Value send to HW") field (DOL, "$(Name):Calculation") # get the output value field (OMSL, "closed_loop") field (OUT, "@$(PLCname)/4 T=FLOAT") # write to PLC EPICS Training @ PSI

Contents Introduction to EPICS What are Records Set up an IOC on your PC Overview of S7 PLC driver Include S7 PLC communication into your IOC IOC monitoring EPICS Training @ PSI

How does it look like at PSI EPICS Training @ PSI

Alternatives vxStats (APS) iocmon (PSI) pcmon (PSI) devIocStats (SLAC) http://www.aps.anl.gov/epics/modules/soft/vxStats Very old. Only vxWorks, no PC support iocmon (PSI) http://epics.web.psi.ch/software/iocmon vxStats plus extensions, only vxWorks, no PC support pcmon (PSI) http://epics.web.psi.ch/software/pcmon very rudimentary, only Linux devIocStats (SLAC) http://www.slac.stanford.edu/comp/unix/package/epics/site/devIocStats Many different operating systems EPICS Training @ PSI

What's missing? How to install EPICS to a central location Make it available for all users How to compile drivers into the ioc program Avoids loading of driver in startup script How to make a driver loadable Allows loading of driver in startup script (Most drivers don't allow this out-of-the-box) How to build EDM Alternative to MEDM Nicer but more complicated to install EPICS Training @ PSI

10 really neat things about EPICS It is free It is Open Source There are lots of users All a client needs to know to access data is a PV name You can pick the best tools out there … … or build your own The boring stuff is already done There is a lot of expertise available close by A good contribution becomes internationally known It does not matter if you need 10 PVs or 10 million PVs EPICS Training @ PSI

http://www.aps.anl.gov/epics EPICS Web Page The central site for EPICS information - Documentation - CA Clients - Device support (driver) - Tech-talk (mailing list and archive) http://www.aps.anl.gov/epics EPICS Training @ PSI