Private
Public Access
11
1

Update Realtime Sampler Configuration

2024-06-05 14:38:45 +02:00
parent 308d752d08
commit 91f7dfc33f

@@ -1,15 +1,17 @@
Introduction
# Introduction
The Pixelator/Orocos system includes a feature that allows a data channel (that can be slow to respond) to be sampled at a fast rate and thus allow the data channel to be recorded on a pixel-by-pixel basis. This is used at PolLux to record variations in the storage ring current. At the time of writing, this is only implemented for EPICS channels, but it is easy to implement for other positioner types by copying code that references "rtDetector" in [PixelatorController/src/EpicsPositioner.cc](https://gitlab.psi.ch/microspectro/pixelator/-/blob/master/PixelatorController/src/EpicsPositioner.cc) into the code for other positioner types.
The Pixelator/Orocos system includes a feature that allows a data channel (that can be slow to respond) to be sampled at a fast rate and thus allow the data channel to be recorded on a pixel-by-pixel basis. This is used at PolLux to record variations in the storage ring current. This has been implemented for both the obsolete "Orchestra" realtime system (i.e. "Orchestra Detector") and the currently recommended "Orocos" realtime system. At the time of writing, this is only implemented for EPICS channels, but it is easy to implement for other positioner types by copying code that references "rtDetector" in [PixelatorController/src/EpicsPositioner.cc](https://gitlab.psi.ch/microspectro/pixelator/-/blob/master/PixelatorController/src/EpicsPositioner.cc) into the code for other positioner types.
Configuring a realtime sampler requires:
- An `Orocos` type controller (just one for all realtime sampler channels)
- An `OrocosSampler` type detector (just one for all realtime sampler channels)
- A positioner with the appropriate "rtDetector" fields (one for each channel)
- The positioner configuration includes the fields:
- "rtDetector" whose value is the name of the `OrocosSampler` type detector
- "rtDetectorChannelIndex" whose value is an unique channel index integer
Example from the PolLux Configuration
# Example from the PolLux Configuration
Orocos Controller
## Orocos Controller
```
"Orocos1" : {
"active" : 1,
@@ -17,8 +19,9 @@ Orocos Controller
"nAxes" : 3
},
```
Note that the controller only needs to exist. The `nAxes` field refers to the [axis configuration](PixelatorControllerSettings#axis) and is not related to the realtime sampler. See [Config_Controller#orocos](Config_Controller#orocos) for full details.
OrocosSampler Detector
## OrocosSampler Detector
```
"OrocosDetector1" : {
"active" : 1,
@@ -29,8 +32,12 @@ OrocosSampler Detector
"nexus_name" : "orocos1"
},
```
Note that only one `OrocosSampler` Detector is needed. See [Config_Detector#orocos](Config_Detector#orocos) for full details.
## Positioner
Note that any positioner can be added to the realtime sampler by adding the appropriate fields.
Positioner
```
"Ring_Current" : {
"active" : 1,