Very basic ASYN devGpib based IOC Exercise

This document was originally written by John Dobbins from Cornell, but since then, I have edited to fit our need for STAR EPICS VM environment. I have edited some files to reflect the current EPICS Base used on the STAR EPICS VM environment.

This is an example of creating device support for an Omega DP41-S strain gauge meter communicating through the local serial port.

This tutorial has very little explanation of what you are doing. However, as I started out with EPICS, I have found something like this was much easier to understand what sort of things are needed to use Asyn support to write an IOC.

If you don't have a real DP41, then, you can use an Arduino board instead. I have written a sketch for that. It can be downloaded here. It's not necessary the best one, but it gets the job done. It will reply a random integer value back when the IOC makes a scan.

Finally, this tutorial has almost no explanation on what's going on with each steps. Upon the completion of the tutorial, please read this tutorial written by Eric Norum to understand each steps really means here.


1. mkdir DP41

2. cd DP41
(i.e. cd /home/sysuser/DP41/ )

3. makeSupport.pl -t devGpib DP41

4. cd configure
(i.e. cd /home/sysuser/DP41/configure )

5. verify that the file RELEASE shows the correct path to base and asyn
ASYN=/usr/local/epics/soft/asyn4-28
EPICS_BASE=/usr/local/epics/base-3.14.12.5
6. cd ../DP41Sup
(i.e. cd /home/sysuser/DP41/DP41Sup/ )

7. edit devDP41.c, this file shows the code removed in red and code added in green

8. edit devDP41.db to look like this

9. edit devDP41.dbd to look like this

10. cd ..
(i.e. cd /home/sysuser/DP41 )

11. make

12. cd ..
(i.e. cd /home/sysuser )

13. mkdir DP41_TEST

14. cd DP41_TEST
(i.e. cd /home/sysuser/DP41_TEST )

15 makeBaseApp.pl -t ioc DP41_TEST

16. makeBaseApp.pl -i -t ioc DP41_TEST

17. cd configure

18. verify that file RELEASE shows the correct path to base, add entries for asyn and DP41, now reads as:
EPICS_BASE=usr/local/epics/base-3.14.12.5
ASYN=/usr/local/epics/soft/asyn4-28
DP41=/home/sysuser/DP41
19. cd ../DP41_TESTApp/src/

20. edit Makefile to look like this, added code shown in green

21.  Note: as I put the only record I use in device support I don't need to add any records here. I probably should have defined the record here instead of in device support.

22. cd ../../iocBoot/iocDP41_TEST
(i.e. cd /home/sysuser/DP41_TEST/iocBoot/iocDP41_TEST )

23. edit st.cmd to look like this, added code in green
NOTE: Depending upon your serial port/device situation, you may have to change /dev/ttyS0 to something else.

24. cd ../..
(i.e. cd /home/sysuser/DP41_TEST )

25. make

26. go into directory iocboot/iocDP41_TEST
(i.e. cd /home/sysuser/DP41_TEST/iocBoot/iocDP41_TEST )

27. ../../bin/linux-x86/DP41_Test st.cmd

28. ioc and ioc shell should start up.

Upon completion, you should create an MEDM (or EDM, BOY, caQtDM etc) screen that displays the PV value and demonstrate that you can indeed have an IOC that can read value via devGpib support.