1

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.

ades
  • 227
  • 2
  • 14
bjoekeldude
  • 338
  • 3
  • 11

1 Answers1

2

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

maslick
  • 2,903
  • 3
  • 28
  • 50
  • 1
    Why would you recommend nds/nds3 over asyn here? – ades Jan 10 '22 at 19:03
  • @ades NDS is another layer of abstraction over ASYN, and generally it's not tied solely to EPICS, it could be used for TANGO as well. Personally, for me it's easier to work with NDS, partially because I am biased as I used to work at Cosylab and since I know it's authors Klemen Zagar and Slava Isaev (we used to work at the same team). But it's up to you, really ;) – maslick Jan 11 '22 at 08:14
  • 1
    That's fair enough, @masclick - I asked mainly because I'd otherwise say that asyn both is more widely developed as well as used. – ades Jan 11 '22 at 08:44
  • @ades From my experience, we've been using NDS for our clients at Cosylab, and believe me we've had a lot of clients (take ITER as one of the biggest) covering Europe, the US, China and Japan! Then we open-sourced it, and it's become more accessible. Treat NDS as a sort of a facade, which hides some complexities/weaknesses of ASYN and which is comfortable to work with. – maslick Jan 11 '22 at 09:34