From 6e0941e8d3a2499a7852faadcacf4849d95ef0f6 Mon Sep 17 00:00:00 2001 From: watts Date: Mon, 17 Oct 2022 15:43:08 +0200 Subject: [PATCH] Create Config_Positioner --- Config_Positioner.md | 135 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 Config_Positioner.md diff --git a/Config_Positioner.md b/Config_Positioner.md new file mode 100644 index 0000000..1c58b3e --- /dev/null +++ b/Config_Positioner.md @@ -0,0 +1,135 @@ +# Positioner +This file contains the positioner settings. + +See source:trunk/PixelatorController/config/positioner.json for an example. + + **atPositionCheckInverval_Default**::
+ Double value used for all positioners that don't define their own atPositionCheckInverval.
+ **Default**: 0.002 + + **atPositionCheckTimeout_Default**::
+ Double value used for all positioners that don't define their own atPositionCheckTimeout.
+ **Default**: 10.0 + +The remaining entries are positioner names with their settings. The settings depend on the positioner type. + +### base settings +The following settings are available for all types of positioners: + + **type**::
+ String value that identifies which hardware interface will handle the positioner behaviour. The list of allowed values is listed near the beginning of [`Positioner.h`](https://gitlab.psi.ch/microspectro/pixelator/-/blob/master/PixelatorController/src/Positioner.h#L28), for example: + +`enum Type { Base, Epics, Tango, NewPort, NexLine, SmarAct, SmarActUsb, SmarActTcp, Interferometer, BeamShutter, AnalogOut, Transform, Galil, Zaber, ZmiEpics };` + + **active**::
+ Integer value that defines if the positioner should be used (value of 1) or ignored (value of 0).
+ **Default**: 0 + + **nexus_name**::
+ String value defines the positioners name in the hdf5 file.
+ **Default**: positioner name + + **axisName**::
+ String value defines the name of the axis moved by this positioner.
+ Example: Coarse and Fine X both belong to SampleX.
+ **Default**: positioner name + + **description**::
+ String value describes the positioner. + That value is written to the hdf5 file (NXcollection) and + it is sent to PixelatorGUI.
+ **Default**: "" (empty string) + + **unit**::
+ String value defines the unit of the positioner values (on the GUI and in the hdf5 file).
+ **Default**: "" (empty string) + + **distributionMode**::
+ String value defines the discribution of points to an interval.
+ Example: 5 points from 0 to 10: + * "n": 0, 2.5, 5, 7.5, 10 + * "nPlus1": 0, 2, 4, 6, 8, 10 + + **Default**: "n" + + **hardwareUnitFactor**::
+ Double value defines the conversion factor used to convert hardware positioner values to **unit***.
+ **Default**: 1.0 + + **positionOffset**::
+ Double value defines shift of coordinates between those communicated with the hardware controller and the user.
+ **Default**: 0.0 + + **upperSoftLimit**::
+ Double value defines largest value allowed to be requested to move to.
+ **Default**: 0.0 + + **lowerSoftLimit**::
+ Double value defines lowest value allowed to be requested to move to.
+ **Default**: 0.0 + + **coarsePositioner**::
+ String value defines cooperating positioner that will handle large movements.
+ **Default**: "" (empty string) + + **finePositioner**::
+ String value defines cooperating positioner that will handle fine movements.
+ **Default**: "" (empty string) + + **maxVelocity**::
+ Double value defines maximum rate of movement.
+ **Default**: 0.0 + + **readOnly**::
+ Boolean value true when the positioner can only be used to read its position (i.e. cannot request a move).
+ **Default**: false + + **autoOff**::
+ Positioners can be set to an unpowered state after 1 of 3 events: +1. positioner move due to direct request +2. positioner move due scan request +3. "All Motors Off" request + + "Never" : Positioner remains powered after scanning moves and is unaffected by an "All Motors Off" request.
+ "Always" : positioner is always unpowered after any move.
+ "SlowAxis" : Positioner is unpowered after each scan move if it is not part of the fast scanning axis.
+ "Disabled" : Positioner does not physically have powered and unpowered states.
+ "Manual" : Positioner remains powered after scanning moves, but is unpowered by "All Motors Off" request.
+ **Default**: "Never" + +| autoOff value | direct | scan
(fastest axis) | scan
(not fastest) | "All Motors Off" | +|---------------|--------|------|------|------------------| +| "Never" | ON | ON | ON | ON | +| "Always" | OFF | OFF | OFF | OFF | +| "SlowAxis" | OFF | ON | OFF | OFF | +| "Disabled" | -- | -- | -- | -- | +| "Manual" | ON | ON | ON | OFF | + + + **beamlineControlPosition**::
+ Integer value defines inclusion of (value greater than zero), and position of a positioner control in the "Beamline Control" and "Microscope Status" sections of the GUI. The "Beamline Control" section will only list positioners with a **beamlineControlPosition** value greater than zero, with each positioner listed in ascending **beamlineControlPosition** order. The "Microscope Status" GUI section will list any positioner with a **beamlineControlPosition** value of zero (except it will always ignore a positioner with the name "BeamShutter"). Negative values can be used to exclude a positioner from both sections of the GUI. +
 **Default**: 0 + + **epsilon**::
+ Double value defines numerical precision to be considered when calculating positioner moves.
+ **Default**: 0.1 + + **atPositionCheckInverval**::
+ Double value defines the interval (in seconds) used in waitDoneMoving(). + getStatus() is called in this interval as long as it returns moving or + until atPositionCheckTimeout is exceeded.
+ **Default**: atPositionCheckInverval_Default ([see above](#positioner)) + + **atPositionCheckTimeout**::
+ Double value defines the timeout (in seconds) used in waitDoneMoving(). + getStatus() is called as long as it returns moving or until atPositionCheckTimeout is exceeded.
+ **Default**: atPositionCheckTimeout_Default ([see above](#positioner)) + + **stringPositions**::
+ Optional array of objects with members that defines relationships between string and numeric values. Pixelator always considers positioners to have a numerical value, while the hardware controllers sometimes operate in terms of named states (e.g. "on" and "off") and this array defines the translation. + * **string**: String value defines the position name + * **position**: Double value defines the position value + + These objects can be used to get + * a name of a position value (positionUserToStringHardware) + * the position of a named position (stringHardwareToPositionUser) \ No newline at end of file