epics-dim interface

6
EPICS-DIM Interface EPICS-DIM Interface Peter Zumbruch Experiment control systems group GSI (KS/EE)

Upload: adanna

Post on 24-Jan-2016

56 views

Category:

Documents


0 download

DESCRIPTION

EPICS-DIM Interface. Peter Zumbruch Experiment control systems group GSI (KS/EE). Implementation as “ device support module” Running DIM SERVER Providing read/write access to EPICS variables DIM CLIENT - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: EPICS-DIM Interface

EPICS-DIM InterfaceEPICS-DIM Interface

Peter Zumbruch

Experiment control systems group GSI

(KS/EE)

Page 2: EPICS-DIM Interface

December 6, 2009December 6, 2009 EPICS - DIM Interface - Peter Zumbruch - GSIEPICS - DIM Interface - Peter Zumbruch - GSI

EPICS DIM InterfaceEPICS DIM Interface

• Implementation as “device support module”• Running

– DIM SERVER• Providing read/write access to EPICS variables

– DIM CLIENT• Interfacing DIM services and commands for single variables to

EPICS process variables

– Successfully used for 5 weeks continous HADES beam time

• On demand– String transport mode (DIM provides strings converted by the

Interface to single data types, easier to handle by EPICS)– Array and structures support– More EPICS records

DIM (protocol)

DIM (protocol)

EPICSEPICSEPICS-DIM

Interface

Clie

ntS

erve

r Device

Page 3: EPICS-DIM Interface

December 6, 2009December 6, 2009 EPICS - DIM Interface - Peter Zumbruch - GSIEPICS - DIM Interface - Peter Zumbruch - GSI

Embedded EPICS on ETRAXEmbedded EPICS on ETRAX

• install embedded Linux on ETRAX chip CPU (axis.com) based front-end systems

• 2 step approach:1. Install DIM on ETRAX and use EPICS-DIM Interface to

communicate via network with external EPICS clients or IOCs• Suitable for development:

– DIM protocol also accessible via other controls software, i.e. LabVIEW, or CS, etc.

– But locally no (EPICS) logic (database, (fast) sequencing, alarming) provided

2. Install EPICS Embedded on ETRAX• Provides all features of EPICS• Local fast EPICS based logic, network independent• By „turning the direction of the interface“ users may still see a DIM

device, mimicked by EPICS using the EPICS – DIM interface

CS

Page 4: EPICS-DIM Interface

December 6, 2009December 6, 2009 EPICS - DIM Interface - Peter Zumbruch - GSIEPICS - DIM Interface - Peter Zumbruch - GSI

DownloadDownload

Contact:

WWW - http://wiki.gsi.de

Mail - epics_at_gsi.de

(p.zumbruch_at_gsi.de)

Page 5: EPICS-DIM Interface

December 6, 2009December 6, 2009 EPICS - DIM Interface - Peter Zumbruch - GSIEPICS - DIM Interface - Peter Zumbruch - GSI

Record databaseRecord database

Example general purpose record record($(record), "$(user):$(pvName)"){

field(DESC, "caDIMInterface_$(record)")field(DTYP, "caDIMInterface")

field($(INPOUT), "$(Type)$(serviceName)$(serviceFormat)$(commandName)$(commandFormat)$(dnsAddress)$(dnsPort)$(scanMode)$(scanInterval)$(serverName)$(defaultGet)$(defaultPut)$(any)")

field(VAL, "$(value)")field(SCAN, "$(scanPeriod)")

…field(PREC, "$(precision)")

}

Page 6: EPICS-DIM Interface

December 6, 2009December 6, 2009 EPICS - DIM Interface - Peter Zumbruch - GSIEPICS - DIM Interface - Peter Zumbruch - GSI

Startup command fileStartup command fileExample startup file:

#!../../bin/linux-x86/caDIMInterface

< envPaths

cd ${TOP}

## Register all support componentsdbLoadDatabase("dbd/caDIMInterface.dbd")caDIMInterface_registerRecordDeviceDriver(pdbbase)

## Load record instances

dbLoadRecords("db/dbDIMInterface.db", "any=, record=ai, INPOUT=INP, user=$(USER), pvName=DoubleValClient, value=100, Type=@T\=C, serviceName=@S\=TEST/DOUBLEVAL, serviceFormat=@Sf\=D:1, commandName=, commandFormat=, serverName=, dnsAddress=, dnsPort=, defaultPut=, defaultGet=, scanMode=, scanInterval=, scanPeriod=Passive, precision=2")

dbLoadRecords("db/dbDIMInterface.db", "any=, record=ai, INPOUT=INP, user=$(USER), pvName=IntValClient, value=0, Type=@T\=C, serviceName=@S\=TEST/INTVAL, serviceFormat=@Sf\=I:1, commandName=, commandFormat=, serverName=, dnsAddress=, dnsPort=, defaultPut=, defaultGet=, scanMode=, scanInterval=, scanPeriod=Passive, precision=0")

dbLoadRecords("db/dbDIMInterface.db", "any=, record=ai, INPOUT=INP, user=$(USER), pvName=KillTestServer, value=0, Type=@T\=C, serviceName=, serviceFormat=, commandName=@C\=TEST-SERVER/EXIT, commandFormat=@Cf\=L:1, serverName=, dnsAddress=, dnsPort=, defaultPut=, defaultGet=, scanMode=, scanInterval=, scanPeriod=Passive, precision=2")

dbLoadRecords("db/dbDIMInterface.db", "any=, record=ao, INPOUT=OUT, user=$(USER), pvName=ServerAo, value=10, Type=@T\=S, serviceName=, serviceFormat=, commandName=, commandFormat=, serverName=, dnsAddress=, dnsPort=, defaultPut=, defaultGet=, scanMode=, scanInterval=, scanPeriod=Passive, precision=2")

cd ${TOP}/iocBoot/${IOC}iocInit()