Repository containing the EPICS IOC support for the R&S SMA100A and SMB100A signal generators
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



Repository containing the EPICS IOC support for the R&S SMA100A and SMB100A signal generators. Some functionalities are exclusive to SMA100A.


The IOC documentation can be found in documentation/. There you can find a manual with the description off all SMX100A signal generator PVs.


To build the IOC, you can follow the standard EEPICS build procedure for IOC applications. The following EPICS modules are required:

  • Asyn (tested with 4.26)
  • StreamDevice (tested with version 2.7.7)

The path to the required EPICS modules should be configured in the file configure/RELEASE, as the example below:


Afterwards, from the root repository directory, run 'make install'. At any time, if a reuild is required, simply run the following commands:

$ make clean uninstall install


For the IOC on this repository, the initialization can be done through the following commands starting at the top level directory:

$ make clean uninstall install
$ cd iocBoot/iocrssmx100a
  • -i IPADDR: device IP address to connect to (required)
  • -p IPPORT: device IP port number to connect to (default: 5025)
  • -d DEVICE: device identifier (SMA|SMB) (required)
  • -P PREFIX: the value of the EPICS $(P) macro used to prefix the PV names
  • -R PREFIX: the value of the EPICS $(R) macro used to prefix the PV names


An example of writing frequency is given below:

$ caput ${P}${R}:GENFreq-SP 1e8


An example of reading frequency is given below:

$ caget ${P}${R}:GENFreq-RB

RSSMX100A PV Structure

The PV's are divided in 7 major groups: GENERAL, FREQ, MOD, TRIG, ROSC, CSYN and NOIS. To set values, use the given name. To read them, add _RBV after it.

  • GENERAL - General functionalities

  • FREQ - Functionalities related to FREQuency

  • MOD - Functionalities related to MODulation

  • TRIG - Functionalities related to TRIGgering

  • ROSC - Functionalities related to Reference OSCillator

  • CSYN - Functionalities related to Clock SYNthesis

  • NOIS - Functionalities related to NOISe

The suffixes indicate the PV type and can be one of the following:

  • SP (Set Point): A non-enumerated value (real number or string). It sets a system parameter.
  • RB (Read Back): A non-enumerated value (real number or string). Read-only. It displays the read back value of a parameter, providing confirmation to changes.
  • Sel (Selection): Enumerated value. Sets a system parameter.
  • Sts (Status): Enumerated value. Read-only. It displays the read back value of an enumerated parameter, providing confirmation to changes.
  • Cmd (Command): Binary command. It causes a given action to be executed.
  • Mon (Monitor): Monitor non-enumerated or enumerated device property variable

IOC Structure

The IOC directory structure is the following:

  • configure (IOC configuration files)
    • RELEASE (It is necessary to edit the support modules' paths before building the IOC)
    • ...
  • rssmx100aApp (Applications sources)
    • Db (The database files can be found here)
      • SMA.db (SMA Signal Generator records)
      • SMB.db (SMB Signal Generator records)
      • rssma100a.proto (Protocol file for SMA records used by Stream Device)
      • rssmb100a.proto (Protocol file for SMB records used by Stream Device)
      • autosave_SMA.req (SMA application autosave request file)
      • autosave_SMB.req (SMB application autosave request file)
      • accessSecurityFile.acf (Access security file)
      • Makefile
    • src (IOC source files)
    • Makefile
  • documentation
    • RSSMX100A_App_User_Guide.tex (SMX LaTeX documentation source)
  • iocBoot (Boot)
    • iocrssmx100a
      • Makefile
      • autosave (Save files are placed here by autosave)
      • RSSMX100A.config (RSSMX100A environment variables)
      • README
      • (Run in procServ)
      • save_restore.cmd (Contain all autosave configurations)
      • (Run SMA PVs)
      • (Run SMB PVs)
      • (Run SMA or SMB mode depending on the given -d option)
      • stSMA.cmd (SMA startup file)
      • stSMB.cmd (SMB startup file)
    • Makefile
  • Makefile (IOC Makefile)
  • op (Operator Interfaces)
    • opi
      • Config_AM.opi
      • Config_AutomLevel-Control.opi
      • Config_ClockSyn.opi
      • Config_FM.opi
      • Config_Freq-Phase.opi
      • Config_Freq-Sweep.opi
      • Config_Level-Sweep.opi
      • Config_LF_FreqSweep.opi
      • Config_LF-Gen_Output.opi
      • Config_Lvl-Attenuator.opi
      • Config_PulM.opi
      • Config_PulseGen.opi
      • Config_ROSC.opi
      • Config_SMA.opi
  • install (Installation scripts)
  • scripts (General scripts)
  • (This file)

Running the OPIs

The op/opi/ directory provide CSS OPIs for easily controlling the signal generator and applications process variables. In order to run the operator interfaces it is necessary to have Control System Studio installed. It is recommended to run cs-studio in the OPIs folder, in order to avoid having to reconfigure CS-Studio preferences.