controlsscada

Setting up an EPICS controller/IOC


I am running a service on a Beagle Board Black to control some shift-mechanism hardware. Currently all commands to this system are handed to the service via a standard IP socket.

In the next step, I'd like to control my shift-mechanism from a Qt GUI, communicating with the BBB via EPICS-Channel Access.

I can't find any good documentation on how to start such a project on the EPICS site. I'd highly appreciate someone telling me step by step, what I need to install in order to get this running.


Solution

  • I'll post a short to-do list here. Otherwise, I recommend you to join the EPICS community (tech-talk mail list) and ask there. In fact, there is a lot of material accumulated over the years, so I would search there (e.g. this).

    In short:

    1. Install EPICS on to your Beagle Board Black (you must build it from sources).
    2. Create an IOC (CA-server) using makeBaseApp.pl
    3. Add your device support libraries into the Makefile
    4. Write your custom device support code (in C or C++)
    5. Create a .db file with your records
    6. Run make to build your IOC
    7. Run the resulting executable. This will start the IOC shell.
    8. Test your IOC if it's accessible from your PC using caget, caput and/or camonitor
    9. Eventually write your custom CA-client (Qt, Control System Studio, Python, Java, etc.)

    I assume you will be reading/writing signals from your hardware, so as for point 4. on my list I recommend using ASYN driver or even better NDS. These are high-level APIs that hide a lot of EPICS complexities.

    HTH