Digitizer IOCs: Difference between revisions

From GammaSphere DAQ
Jump to navigation Jump to search
(Created page with "== Digitizer IOCs == The IOC, or ''Input/Output Controller'' of a VME crate is an MVME5500E embedded processor module. The processors use the [https://www.windriver.com/pr...")
 
Line 11: Line 11:
** The "Soft IOC" program that acts like all the other IOCs, participating in the shared database; and
** The "Soft IOC" program that acts like all the other IOCs, participating in the shared database; and
** The "DGSCommander" GUI that links GUI controls (buttons, indicators, drop-downs, graphs, etc.) to PVs in the distributed database.
** The "DGSCommander" GUI that links GUI controls (buttons, indicators, drop-downs, graphs, etc.) to PVs in the distributed database.
When any of the VME-based IOC processors is rebooted, the boot script automatically initiates the EPICS thread and connects the processor to the portion of the database that is specific to that processor.  The overall purpose of EPICS as implemented is to ''monitor'' whenever any PV value is changed (by the GUI or execution of a shell script) and to then ''report'' that to the entire database.  Within each IOC, the EPICS thread there listens to those global reports.  When a PV is changed, the specific IOC that has responsibility to react to a given PV (because that PV is in that IOCs part of the database) is then supposed to "do something" when the PV changes.
Exactly what the "do something" means is '''''NOT''''' part of EPICS.  '''EPICS does not actually do any VME transactions'''.  In any of the VME processors the EPICS thread sets a flag or updates a variable in response to a PV changing, but any ''action'' that is supposed to occur in response to a change in a PV ''is the responsibilty of a different thread''.

Revision as of 15:48, April 20, 2019

Digitizer IOCs

The IOC, or Input/Output Controller of a VME crate is an MVME5500E embedded processor module. The processors use the [[vxWorks operating system. VxWorks is capable of supporting multiple concurrent threads. The major thread types used in the Digital Gammasphere setup are shown in the white boxes within the picture of the IOC.

EPICS

EPICS, or the Experimental Physics and Industrial Control System, is the main thread that runs on the IOCs. EPICS implements a distributed database architecture in which a large number of Process Variables (PVs) are distributed across multiple processors. In Digital Gammasphere the mesh of processors consists of

  • Eleven MVME5500s that each manage one VME backplane with four digitizer modules (VME01, VME02, ..., VME11)
  • One MVME5500 that manages the VME backplane where the trigger modules are plugged in (VME32)
  • The Linux computer DGS1, that is hosting two different processing threads related to EPICS:
    • The "Soft IOC" program that acts like all the other IOCs, participating in the shared database; and
    • The "DGSCommander" GUI that links GUI controls (buttons, indicators, drop-downs, graphs, etc.) to PVs in the distributed database.

When any of the VME-based IOC processors is rebooted, the boot script automatically initiates the EPICS thread and connects the processor to the portion of the database that is specific to that processor. The overall purpose of EPICS as implemented is to monitor whenever any PV value is changed (by the GUI or execution of a shell script) and to then report that to the entire database. Within each IOC, the EPICS thread there listens to those global reports. When a PV is changed, the specific IOC that has responsibility to react to a given PV (because that PV is in that IOCs part of the database) is then supposed to "do something" when the PV changes.

Exactly what the "do something" means is NOT part of EPICS. EPICS does not actually do any VME transactions. In any of the VME processors the EPICS thread sets a flag or updates a variable in response to a PV changing, but any action that is supposed to occur in response to a change in a PV is the responsibilty of a different thread.