Modbus-based EPICS support for the Pixsys Electronics ATR142 multi-setpoint controller.
Though it may work on other versions, the driver was tested on these:
- EPICS base 3.14.12.3 http://www.aps.anl.gov/epics/
- asyn 4-21 http://www.aps.anl.gov/epics/modules/soft/asyn/
- Modbus 2-4 http://cars9.uchicago.edu/software/epics/modbus.html
- EDM http://ics-web.sns.ornl.gov/edm/log/getLatest.php Screens are provided in $TOP/op/edl for EDM.
-
Install EPICS
- If using a Debian-based system (e.g., Ubuntu), use the packages here http://epics.nsls2.bnl.gov/debian/
- If no packages are available for your distribution, build from source
-
Edit configure/RELEASE
- Point the directories listed in there to the appropriate places
- If using the Debian packages, everything can be pointed to /usr/lib/epics
-
Edit iocBoot/iocatr142/st.cmd
-
Change the shebang on the top of the script if your architecture is different than linux-x86:
#!../../bin/linux-x86/atr142
(check if the environment variable EPICS_HOST_ARCH is set, or perhaps
uname -a
, or ask someone if you don't know) -
Change the communications settings. If using RS-485 over a serial device server, set the IP address and port in the following:
## For tcp/ip: epicsEnvSet("ATR142_HOST", "$(ATR142_HOST=10.0.0.10)") epicsEnvSet("ATR142_PORT", "$(ATR142_PORT=4014)") epicsEnvSet("ASYN_PORT", "$(ASYN_PORT=ATR142)") epicsEnvSet("MODBUS_PORT", "$(MODBUS_PORT=MOD_$(ASYN_PORT))")
-
If instead using serial directly connected to the machine, uncomment and set the port and rate:
## for serial: #epicsEnvSet("ATR142_SERIALPORT", "$(ATR142_SERIALPORT=/dev/ttyS1)") #epicsEnvSet("ATR142_BAUD", "$(ATR142_BAUD=19200)") Comment out drvAsynIPPortConfigure and uncomment: ## for direct connection to the machine's serial port: # drvAsynSerialPortConfigure("$(ASYN_PORT)", "$(ATR142_SERIAL_PORT)", 0, 0, 0) # asynSetOption("$(ASYN_PORT)",0,"baud","$(ATR142_BAUD)") # asynSetOption("$(ASYN_PORT)",0,"parity","none") # asynSetOption("$(ASYN_PORT)",0,"bits","8") # asynSetOption("$(ASYN_PORT)",0,"stop","1")
-
Set the slave address according to what was set in the front panel:
# slaveAddress = 1 (device default is 254) epicsEnvSet("SLAVE_ADDR", "1")
-
For each atr142 configured, Set PREFIX, MODBUS_PORT, ASYN_PORT, SLAVE_ADDR and run load_atr142.cmd for each device:
< load_atr142.cmd
-
-
Go to the top directory and
make
-
If all goes well:
$ cd iocBoot/iocatr142 $ chmod +x st.cmd $ ./st.cmd
-
Run EDM:
$ export EDMDATAFILES=$TOP/op/edl:$EDMDATAFILES $ edm -x -m "P=E1:ATR142:" atr142_all