From 91f7dfc33f20a447286ac7e26a78c6067da1343c Mon Sep 17 00:00:00 2001 From: watts Date: Wed, 5 Jun 2024 14:38:45 +0200 Subject: [PATCH] Update Realtime Sampler Configuration --- Realtime-Sampler-Configuration.md | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/Realtime-Sampler-Configuration.md b/Realtime-Sampler-Configuration.md index 27102cd..02bd595 100644 --- a/Realtime-Sampler-Configuration.md +++ b/Realtime-Sampler-Configuration.md @@ -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,