@@ -13,6 +13,7 @@ This RFC (carried over from `issue 76
1313proposes the addition of two new interface classes, specific to modules that
1414support longer-running data acquisition.
1515
16+
1617Goal
1718====
1819
@@ -22,11 +23,18 @@ interfaces. This hardware can range in complexity from devices that simply
2223provide values after some acquisition time, to multi-channel detector setups
2324common in large scale facilities.
2425
26+ This is conceptually different from a simple ``Readable ``, where reading a
27+ value is assumed to be always available, without noticeably waiting time.
28+ In contrast, an acqusition cycle represented by these modules can take a
29+ while to complete, maybe providing intermediate values, and deliver a final
30+ value once finished, until the next acquisition cycle is started.
31+
2532
2633Technical explanation
2734=====================
2835
29- It is proposed to add three new interface classes.
36+ It is proposed to add three new interface classes: ``AcquisitionController ``,
37+ ``AcquisitionChannel `` and ``Acqusition ``.
3038
3139
3240Definitions
@@ -49,6 +57,8 @@ Definitions
4957``AcquisitionController `` (no base interface)
5058---------------------------------------------
5159
60+ Descriptive data ``interface_classes ``: ``["AcquisitionController"] ``.
61+
5262Accessibles:
5363
5464``status ``
@@ -77,29 +87,31 @@ command ``stop``
7787 Subsequent ``go `` starts a new acquisition with clearing currently
7888 acquired data.
7989
80-
8190Property:
8291
8392``acquisition_channels ``
8493 A JSON object specifying the channel modules belonging to this AcquisitionController.
8594 The names of the channel modules are represented as the values of the JSON object.
86- The role of the channels are represented by the keys.
95+ The role of the channels are represented by the keys and can be used as such by
96+ an ECS.
97+
8798 The key "t" is predefined as a time channel, which basically ends acquisition when
8899 the time indicated by the ``goal `` parameter of the channel module is reached.
89100
90- Example module property of a controller module "controller":
101+ Example module property of a controller module "controller"::
91102
92- `` {"t": "timechannel", "monitor": "monitor_channel"} ``
103+ {"t": "timechannel", "monitor": "monitor_channel"}
93104
94105 The 3 modules "controller", "timechannel" and "monitor_channel" all belong together.
95106
96- This property is mandatory on any ``AcquisitionController `` (and ``Acquisition `` below).
97-
107+ This property is mandatory on any ``AcquisitionController ``.
98108
99109
100110``AcquisitionChannel `` (derived from ``Readable ``)
101111--------------------------------------------------
102112
113+ Descriptive data ``interface_classes ``: ``["AcquisitionChannel", "Readable"] ``.
114+
103115Accessibles:
104116
105117``value ``
@@ -118,9 +130,15 @@ Accessibles:
118130``goal ``
119131 Optional: a ``value `` that, when reached, stops the data acquisition.
120132
121- Interpretation is channel specific: It can represent time for timer
122- channels, or a certain number of events, or even a desired statistical
123- significance.
133+ Depending on the nature of the acqusition cycle being performed, it
134+ may or may not be useful to configure the acqusition with a ``goal ``.
135+ It can for example represent time for timer channels, or a certain
136+ number of events for event counter channels, or a desired statistical
137+ significance for a channel that represents the measurement uncertainty.
138+
139+ For acquisitions that are configured with several parameters whose value
140+ is unrelated to the main ``value `` parameter, it is better to use custom
141+ parameters instead.
124142
125143``use_goal ``
126144 Optional: a Boolean, if false, the goal is ignored and the acquisition
@@ -129,15 +147,8 @@ Accessibles:
129147 If ``goal `` is present but not ``use_goal ``, it is never ignored.
130148
131149
132- ``Acquisition ``
133- ---------------
134-
135- Combines both AcquisitionController and AcquisitionChannel accessibles into one
136- interface, for simple devices where only one channel is needed.
137-
138-
139150"Matrix" type channels
140- ----------------------
151+ ~~~~~~~~~~~~~~~~~~~~~~
141152
142153Not an additional interface class, but an optional extension of
143154``AcquisitionChannel ``.
@@ -166,6 +177,17 @@ data is considered for this reduction.
166177 useful (i.e. not just "pixel 1..N"). (Precise semantics to be specified.)
167178
168179
180+ ``Acquisition `` (derived from ``Readable ``)
181+ -------------------------------------------
182+
183+ Combines both AcquisitionController and AcquisitionChannel accessibles into one
184+ interface, for simple devices where only one channel is needed.
185+
186+ Does not have the ``acquisition_channels `` property.
187+
188+ Descriptive data ``interface_classes ``: ``["Acquisition", "Readable"] ``.
189+
190+
169191Disadvantages, Alternatives
170192===========================
171193
@@ -183,11 +205,12 @@ Alternatives
183205 added.
184206
185207
186- Open Questions
187- ==============
208+ Formerly Open Questions
209+ =======================
188210
189211- Should we add an optional parameter ``progress `` on the
190212 ``AcqusitionController ``, which gives an (approximate) percentage (or
191213 elapsed/remaining timings) for the acquisition process?
192214
193- - How to map channel names to "preset names" in ECS like NICOS?
215+ (This has been deferred to when a use-case is brought up and may be added
216+ as a generic SECoP feature.)
0 commit comments