Private
Public Access
11
1

Create Config_Positioner

2022-10-17 15:43:08 +02:00
parent c222b55683
commit 6e0941e8d3

135
Config_Positioner.md Normal file

@@ -0,0 +1,135 @@
# Positioner
This file contains the positioner settings.
See source:trunk/PixelatorController/config/positioner.json for an example.
**atPositionCheckInverval_Default**::<BR>
&emsp;Double value used for all positioners that don't define their own atPositionCheckInverval.<BR>
&emsp;**Default**: 0.002
**atPositionCheckTimeout_Default**::<BR>
&emsp;Double value used for all positioners that don't define their own atPositionCheckTimeout.<BR>
&emsp;**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**::<BR>
&emsp;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**::<BR>
&emsp;Integer value that defines if the positioner should be used (value of 1) or ignored (value of 0). <BR>
&emsp;**Default**: 0
**nexus_name**::<BR>
&emsp;String value defines the positioners name in the hdf5 file.<BR>
&emsp;**Default**: positioner name
**axisName**::<BR>
&emsp;String value defines the name of the axis moved by this positioner.<BR>
&emsp;Example: Coarse and Fine X both belong to SampleX.<BR>
&emsp;**Default**: positioner name
**description**::<BR>
&emsp;String value describes the positioner.
That value is written to the hdf5 file (NXcollection) and
it is sent to PixelatorGUI. <BR>
&emsp;**Default**: "" (empty string)
**unit**::<BR>
&emsp;String value defines the unit of the positioner values (on the GUI and in the hdf5 file).<BR>
&emsp;**Default**: "" (empty string)
**distributionMode**::<BR>
&emsp;String value defines the discribution of points to an interval.<BR>
&emsp;Example: 5 points from 0 to 10:
* "n": 0, 2.5, 5, 7.5, 10
* "nPlus1": 0, 2, 4, 6, 8, 10
&emsp;**Default**: "n"
**hardwareUnitFactor**::<BR>
&emsp;Double value defines the conversion factor used to convert hardware positioner values to **unit***.<BR>
&emsp;**Default**: 1.0
**positionOffset**::<BR>
&emsp;Double value defines shift of coordinates between those communicated with the hardware controller and the user. <BR>
&emsp;**Default**: 0.0
**upperSoftLimit**::<BR>
&emsp;Double value defines largest value allowed to be requested to move to. <BR>
&emsp;**Default**: 0.0
**lowerSoftLimit**::<BR>
&emsp;Double value defines lowest value allowed to be requested to move to.<BR>
&emsp;**Default**: 0.0
**coarsePositioner**::<BR>
&emsp;String value defines cooperating positioner that will handle large movements.<BR>
&emsp;**Default**: "" (empty string)
**finePositioner**::<BR>
&emsp;String value defines cooperating positioner that will handle fine movements.<BR>
&emsp;**Default**: "" (empty string)
**maxVelocity**::<BR>
&emsp;Double value defines maximum rate of movement. <BR>
&emsp;**Default**: 0.0
**readOnly**::<BR>
&emsp;Boolean value true when the positioner can only be used to read its position (i.e. cannot request a move). <BR>
&emsp;**Default**: false
**autoOff**::<BR>
&emsp;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
&emsp;"Never" : Positioner remains powered after scanning moves and is unaffected by an "All Motors Off" request.<BR>
&emsp;"Always" : positioner is always unpowered after any move.<BR>
&emsp;"SlowAxis" : Positioner is unpowered after each scan move if it is not part of the fast scanning axis.<BR>
&emsp;"Disabled" : Positioner does not physically have powered and unpowered states.<BR>
&emsp;"Manual" : Positioner remains powered after scanning moves, but is unpowered by "All Motors Off" request.<BR>
&emsp;**Default**: "Never"
| autoOff value | direct | scan<BR>(fastest axis) | scan<BR>(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**::<BR>
&emsp;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.
<BR>&emsp;**Default**: 0
**epsilon**::<BR>
&emsp;Double value defines numerical precision to be considered when calculating positioner moves.<BR>
&emsp;**Default**: 0.1
**atPositionCheckInverval**::<BR>
&emsp;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. <BR>
&emsp;**Default**: atPositionCheckInverval_Default ([see above](#positioner))
**atPositionCheckTimeout**::<BR>
&emsp;Double value defines the timeout (in seconds) used in waitDoneMoving().
getStatus() is called as long as it returns moving or until atPositionCheckTimeout is exceeded. <BR>
&emsp;**Default**: atPositionCheckTimeout_Default ([see above](#positioner))
**stringPositions**::<BR>
&emsp;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)