Menu

howto-taurus-epics

Carlos Pascual

Howto try the taurus-epics scheme

Recipe for testing the taurus epics scheme

Based on:
- https://prjemian.github.io/epicspi/
- http://cars.uchicago.edu/software/python/pyepics3/overview.html
- http://epics.nsls2.bnl.gov/debian/
- http://ics-web.sns.ornl.gov/kasemir/CSS/Training/FRIB/2%20EPICS%20Database.pdf

Installation of a basic epics system

Based on a debian system (tested on a debian stretch):

As root:

# wget -qO - http://epics.nsls2.bnl.gov/debian/repo-key.pub | apt-key add -
OK
# echo 'deb http://epics.nsls2.bnl.gov/debian/ jessie/staging main contrib' >> /etc/apt/sources.list.d/epics.list
# aptitude update
(...)
# aptitude install epics-dev          
The following NEW packages will be installed:
  epics-catools{a} epics-dev epics-msi{a} libepics3.14.12.3{a} 
(...)
# pip install pyepics
(...)

Create and start a basic softIoc

We do this as a regular user.

Create a file called testioc.db with the following content:

record(ao,"XXX:a"){
  field(DTYP,"Soft Channel")
  field(VAL,0)
  field(UDF,1)
  field(FLNK,"XXX:sum")
}
record(ao,"XXX:b"){
  field(DTYP,"Soft Channel")
  field(VAL,0)
  field(UDF,1)
  field(FLNK,"XXX:sum")
}
record(calc,"XXX:sum"){
  field(INPA,"XXX:a")
  field(INPB,"XXX:b")
  field(CALC,"A+B")
}
record(calc, "XXX:random"){
  field(SCAN, "1 second")
  field(INPA, "XXX:a")
  field(CALC, "RNDM*A")
}

And start this new ioc:

$ softIoc -d testioc.db 
Starting iocInit
############################################################################
## EPICS R3.14.12.3-11 $Date: Mon 2012-12-17 14:11:47 -0600$
## EPICS Base built May 11 2015
############################################################################
iocRun: All initialization complete
epics> 

Test with pyepics

Running the following python script:

from epics import PV
import time

a = PV('XXX:a')
b = PV('XXX:b')
sum = PV('XXX:sum')
r = PV('XXX:random')

print "ctrvars=", a.get_ctrlvars()
a.value = 2
b.value = 3

time.sleep(1)
print "%f + %f = %f" % (a.value, b.value, sum.value)

print "r:"
for i in range(5):
    time.sleep(1)
    print r.value

Outputs this:

ctrvars= {'status': 0, 'lower_disp_limit': 0.0, 'upper_disp_limit': 0.0,
'severity': 0, 'upper_ctrl_limit': 0.0, 'lower_alarm_limit': nan, 
'precision': 0, 'upper_alarm_limit': nan, 'lower_warning_limit': nan,
'upper_warning_limit': nan, 'units': '', 'lower_ctrl_limit': 0.0}
2.000000 + 3.000000 = 5.000000
r:
0.516304264897
1.86718547341
0.736461432822
1.36296635386
1.78036163882

Test with taurus

With taurus 3.6.1: (with taurus>=4 remove the "//")

$ taurusform epics://XXX:random epics://XXX:a epics://XXX:b epics://XXX:sum 

Shows a form showing the 4 corresponding PVs


Related

Wiki: Home

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.