Skip to topic | Skip to bottom
Home
Epics

Start of topic | Skip to actions
Epics@GSI Webhome
EPICS site GSI | Projects & Activities | EPICS site APS

2nd PANDA - EPICS tutorial & workshop - December 13, 2011

Date and Location

  • Location:
    • PANDA XXXIX. Collaboration Meeting, KBW Seminar Room, GSI
  • Time and Date:
    • December 13, 2011, 11:00 - 13:00

Organizers:

  • Peter Zumbruch, ITEE/KS, GSI, Germany
  • Florian Feldbauer, University of Bochum, Germany

Participants:

  • PANDA
  • NuSTAR
  • else

Topic

EPICS tutorial
2 hour class introduction to EPICS - Experimental Physics and Industrial Control System

    Introductory talks

    Tools Overview (FB)

    hadcon streamDevice IOC / Accessing serial ASCII device via StreamDevice/Asyn
    • by-hand/telnet
      1. login to hadcon via telnet (twice → a/b)
        $ telnet etraxXYZ
      2. a) open listener:
        $ cat /dev/ttyS1
      3. b) send command:
        $ echo "VERS" > /dev/ttyS1
      4. a) will respond:
        $ RECV VERS 4.3
    • via EPICS using streamDevice:
      1. have an installation of EPICS
      2. create example IOC TOP directory
        $ mkdir -p <myTopDir> && cd <myTopDir>
      3. create example IOC
        $ makeBaseApp.pl -t ioc <myApp>
        $ makeBaseApp.pl -t ioc <myApp>
      4. extend configure/RELEASE file for streamDevice support
        add to it:
        1. ASYN=$(EPICS_HOME)/modules/soft/asyn/asyn-4.9
        2. STREAM=$(EPICS_HOME)/modules/soft/StreamDevice
      5. build streamDevice extended example IOC
        $ cd <myTopDir> && make
      6. make protocol directory
        $ mkdir -p <myApp>App/protocols && cd <myAppr>App/protocols
      7. create protocol file <myProto>.proto
        1. header:
          Terminator = LF;
          LockTimeout = 5000;
          ReplyTimeout = 4000;
          ReadTimeout = 500;
          WriteTimeout = 3000;
          ExtraInput = Ignore;

        2. basic debug protocol function:
          # Connect a stringin record to this to get
          # a generic command interface.
          # After processing finishes, the record contains the reply.

          debug {
                 ExtraInput = Ignore;
                 out "%s";
                 in "%39c";
          }
        3. create your own protocol function to get the return value of VERS command
          • up to you as string %s or float %f
          • solution to come
      8. create your database
        1. change to Db database directory
          $ cd <myTopDir>App/Db
        2. create db file <myDb>.db (by hand or by using vdct:
          1. stringin debug record:
            record(stringin, "$(PREFIX)$(HADCON):debug)") {
                   field(DTYP, "stream")
                   field(SCAN, "Passive")
                   field(OUT, "@<myProto>.proto debug $(device)")
            }
          2. create your new records stringin, ai
          • up to you as string %%s or float %%f
          • solution to come
        3. edit Makefile
          • add line: DB += <myDb>.db
        4. make
          $ make
      9. edit your start-up configuration file st.cmd
        1. change to ioc database directory
          $ cd iocBoot/ioc<myAppr>
        2. edit st.cmd
          1. add correct path to protocols
            epicsEnvSet("STREAM_PROTOCOL_PATH", "$(TOP)/<myAppr>App/protocols")
          2. add register entry
            streamHadcon_registerRecordDeviceDriver pdbbase
          3. add asyn serial port configuration, e.g.
            drvAsynSerialPortConfigure("hadcon","/dev/ttyS1",0,0,0)
                   asynSetOption("hadcon",0,"baud","115200")
                   asynSetOption("hadcon",0,"bits","8")
                   asynSetOption("hadcon",0,"parity","none")
                   asynSetOption("hadcon",0,"stop","1")
                   asynSetOption("hadcon",0,"clocal","Y")
                   asynSetOption("hadcon",0,"crtscts","N")
          4. add your database instance <myDb>.db, e.g.
            dbLoadRecords ("db/<myDb>.db", "HADCON=${HOSTNAME}, PREFIX=PANDA:IOC:, device=hadcon")
          5. optional export and the end of script your record names to a file , e.g.
            dbl > ${TOP}/iocBoot/${IOC}/${HOSTNAME}.dbl
      10. start your ioc
        $ cd iocBoot/ioc<myAppr>
        $ ../../bin/<operating system>-<architecture>\<myApp> st.cmd
      11. use caput, caget, camonitor, or CSS, or any other client to test it

    Examples
    • Have a look at the other extended tutorials and their examples of EpicsTraining


-- PeterZumbruch - 30 Nov 2011
to top

You are here: Epics > EpicsTraining > EpicsTrainingPandaTutorialDecember2011

to top

Copyright © 1999-2013 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Impressum, Urheberrecht und Haftungsausschluss
Ideas, requests, problems regarding Wiki at GSI? Send feedback