Private
Public Access
11
1
31
Config_Positioner
watts edited this page 2025-10-29 12:10:25 +01:00
This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Positioner

This file contains the positioner settings.

See source:trunk/PixelatorController/config/positioner.json for an example.

atPositionCheckInterval_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, for example:

enum Type { Base, Epics, Tango, NewPort, NexLine, SmarAct, SmarActUsb, SmarActTcp, Interferometer, Orocos, BeamShutter, AnalogOut, Transform, Zaber, ZmiEpics };

active::
Integer value that defines if the positioner should be used (value of 1) or ignored (value of 0).
Default: 0

axisName::
String value defines the name of the axis moved by this positioner.
Example: Coarse and Fine X both belong to SampleX.
Note: The named axis must be defined in axis.json, or Pixelator will crash.
Default: positioner name

nexus_name::
String value defines the positioners name in the hdf5 file.
Default: positioner name

readOnly::
Boolean value true when the positioner can only be used to read its position (i.e. cannot request a move).
Default: false

description::
String value describes the function of 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)

hardwareUnitFactor::
Double value defines the conversion factor used to convert hardware positioner values to unit*.
Default: 1.0

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"

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

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 unpowered after any move that is part of a scan and by an "All Motors Off" request. However, a simple move request will not unpower the positioner.
"SlowAxis" : Positioner is unpowered after each scan move if it is not part of the fast scanning axis.
"Disabled" : this is a "hack" to disable the "fine" positioner in a "coarse"/"fine" pair.
"Manual" : Positioner remains powered after scanning moves, but is unpowered by "All Motors Off" request.
Default: "Never"

autoOff value simple move scan move
(fastest axis)
scan move
(not fastest)
"All Motors Off"
"Never" ON ON ON ON
"Always" ON OFF OFF OFF
"SlowAxis" ON ON OFF OFF
"Manual" ON ON ON OFF

linkedOffsetPositionerName::
String value that defines the name of a positioner whose movements are to be coordinated. Typically stated in a zoneplate Z-axis positioner configuration with a value corresponding to the fine positioner of the sample Z-axis.
Default: empty string

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)

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)

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)

Epics

This positioner type interfaces with the EPICS hardware control system. Note that an "Epics" type positioner can be configured for realtime sampling.

setChannel::
String value defines the EPICS channel to which a move request can be written.
Default: empty string

getChannel::
String value defines the EPICS channel from which a position value can be read.
Default: empty string

lowChannel::
String value defines the EPICS channel from which lower hardware limit of the device can be read.
Default: empty string

highChannel::
String value defines the EPICS channel from which upper hardware limit of the device can be read.
Default: empty string

toleranceChannel::
String value defines the EPICS channel from which the tolerance of the device can be read.
Default: empty string

unitChannel::
String value defines the EPICS channel from which a string can be read that represents the physical unit of the device values.
Default: empty string

doneMovingChannel::
String value defines the EPICS channel from which the moving status of the device can be read. Pixelator expects a value of 1 means that the hardware has completed its movement and a value of 0 means that it has not completed the movement.
Default: empty string

doneMovingInv::
Boolean value defines if the meaning of the values read from the doneMovingChannel channel should be inverted.
Default: false

stopMovingChannel::
String value defines the EPICS channel that is used to stop a motion when a "All Motors Off" is requested.
Default: empty string

statusChannel::
String value defines the status of the PV (Process Variable).
Default: empty string

Realtime Sampling

An EPICS channel can be sampled at a fast rate via Orocos when correctly configured. This can be used, for example, to monitor the synchrotrons storage ring current that is provided via an EPICS channel on a pixel-by-pixel basis with minimal overhead.

rtDetector::
String value defines the name of the Orocos detector that will perform the value sampling.
Default: empty string

rtDetectorChannelIndex::
Integer value defines the Orocos channel to be used for the value sampling.
Default: -1

rtDetectorMonitor::
Boolean value defines if the positioner values should be recorded in the scan file as a monitor.
Default: false

Tango

This positioner type interfaces with the TANGO hardware control system. Note that a "Tango" type positioner can be configured as an Orchestra Detector.

Device::
String value defines address of the TANGO object.
Default: empty string

setAttribute::
String value defines the device attribute to which move requests should be written.
Default: empty string

setCommand::
String value defines command to be issued to the TANGO device in order to perform a move request.
Default: empty string

getAttribute::
String value defines the device attribute from which position values should be read.
Default: empty string

lowAttribute::
String value defines the device attribute from which the hardware low limit value can be read.
Default: empty string

highAttribute::
String value defines the device attribute from which the hardware high limit value can be read.
Default: empty string

toleranceAttribute::
String value defines the device attribute from which the hardware tolerance can be read.
Default: empty string

unitAttribute::
String value defines the device attribute from which a string representing the physical unit of the positioner values can be read.
Default: empty string

doneMovingAttribute::
String value defines device attribute from which the movement status of the device can be read.
Default: empty string

polarizationMapping::
Boolean value defines whether to perform mapping between string values used by TANGO and numerical values used by Pixelator.
Default: false

TANGO string Pixelator number
"LH" 1
"LV" 2
"CL" 3
"CR" 4

Orchestra Detector (obsolete)

An Orchestra detector is a special type of readOnly positioner that uses Orchestra to sample the most recent value of an "Epics" or "Tango" data channel with no waiting. An Orchestra detector being configured as a type of positioner is an historical artefact that may be corrected in future. This can be used, for example, to monitor the synchrotrons storage ring current that is provided via an EPICS channel on a pixel-by-pixel basis with minimal overhead.

orchestraDetector::
String value defines the name of the Orchestra controller that will perform the value sampling.
Default: empty string

orchestraDetectorChannelIndex::
Integer value defines the orchestra channel to be used for the value sampling.
Default: -1

orchestraDetectorMonitor::
Boolean value defines if the positioner values should be recorded in the scan file as a monitor.
Default: false

NewPort

controller::
String value defines the name of the hardware controller that communicates with the device.
Default: empty string

groupName::
String value defines the name of the device group of which the positioner is a member.
Default: name string of the positioner

positionerName::
String value defines the name by which the controller recognizes the positioner.
Default: name string of the positioner

maxAccel::
Double value defines the upper limit for the positioners rate of acceleration.
Default: 4

NexLine

controller::
String value defines the name of the hardware controller that communicates with the device.
Default: empty string

positionerNr::
Integer value defines the index of the positioner in the controllers list of devices.
Default: 0

SmarAct

controller::
String value defines the name of the hardware controller that communicates with the device.
Default: empty string

positionerNr::
Integer value defines the index of the positioner in the controllers list of devices.
Default: 0

isRot::
Boolean value defines whether the positioner is a rotational (rather than linear).
Default: false

ignoreNotHomed::
Bool value defines if the "not homed state" flag is ignored.
Default: False

receiveTimeout::
Double value defines how many seconds Pixelator shall wait for a response to a request.
Default: 5.0

initDir::
Integer value defines the direction that the positioner shall move when performing its initialization function.
Default: 0

SmarActUsb

controller::
String value defines the name of the hardware controller that communicates with the device.
Default: empty string

deviceName::
String value defines the name of the device in the linux USB bus.
Default: empty string

positionerNr::
Integer value defines the index of the positioner in the controllers list of devices.
Default: 0

isRot::
Boolean value defines whether the positioner is a rotational (rather than linear).
Default: false

SmarActTcp

controller::
String value defines the name of the hardware controller that communicates with the device.
Default: empty string

positionerNr::
Integer value defines the index of the positioner in the controllers list of devices.
Default: 0

isRot::
Boolean value defines whether the positioner is a rotational (rather than linear).
Default: false

receiveTimeout::
Double value defines how many seconds Pixelator shall wait for a response to a request.
Default: 5.0

Interferometer

This detector type is always read only.

controller::
String value defines the name of the hardware controller that communicates with the device.
Default: empty string

axis::
Integer value defines the axis measured by this positioner. The integer value is determined by the order in which the axes are defined in in the axis.json settings file
Default: 0

precision::
Default: 0.1

resetVoltage::
Default: 0

BeamShutter

devicePath::
OBSOLETE: Use deviceName instead. String value defines address of the device.
Default: empty string

deviceName::
String value defines address of the device in the /sys directory.
Default: empty string

subdevice::
Integer value defines subaddress of the device.
Default: 0

channel::
Integer value defines channel index of the device.
Default: 0

invert::
Default: 0

AnalogOut

devicePath::
OBSOLETE: Use deviceName instead. String value defines address of the device.
Default: empty string

deviceName::
String value defines address of the device in the /sys directory.
Default: empty string

subdevice::
Integer value defines subaddress of the device.
Default: 0

channel::
Integer value defines channel index of the device.
Default: 0

Transform

This positioner type is the combination of multiple positioners to create a new set of axes that might be tilted or reshaped with respect to the component positioner axes.

functionCode::
Integer value defines which transform to apply. Accepted values include:

  • 0: PolLux flexure stage for coarse XY stage (transforms physical arcs into linear movements).
  • 1: Rotated XY axes (doesn't affect Z-axis movements)
  • 2: Rotated XYZ axes for laminography or in-plane XMCD measurements.
  • 3: Matrix transform
    Default: 0

axisNr::
Integer value defines index of the coordinate system axis.
Default: 0

moveOrder::
Integer value defines whether the positioner shall be moved before or after the Z-axis positioner (to avoid crashing the sample into the OSA). Only valid with functionCode == 2. Accepted values include:

  • -1: Negative positioner moves are completed fully before Z-axis movement starts. Positive positioner moves are started after Z-axis movement is complete.
  • 0: Move order not controlled.
  • +1: Positive positioner moves are completed fully before Z-axis movement starts. Negative positioner moves are started after Z-axis movement is complete.
    Default: 0

angleXZ::
Double value defines the number of degrees through which the coordinate system is rotated in the XZ plane (about the Y-axis). Only valid with functionCode == 2
Default: 0.0

angleYZ::
Double value defines the number of degrees through which the coordinate system is rotated in the YZ plane (about the X-axis). Only valid with functionCode == 2
Default: 0.0

param1::
param2::
param3::
param4::
param5::
String value defines positioner names involved in the transform. The number of param# parameters that need to be declared depends on the number of axes involved and therefore the functionCode value. The first 2 parameters (3 for functionCode>=2) refer to the component positioners (i.e. inputs), and the last (latter 2 for functionCode>=2) refer to the complementary positioners (i.e. output positioners that give the other axes). It is possible to stack transforms such that a "transform" type positioner can be referred to as a base component (declared in one of the param# parameters) for another "transform" type positioner.
Default: empty string

matrix::
Array of double values defines the transform matrix to be used when functionCode==3. The array should have a either 4 or 9 values.
Default: 0

InvMatrix::
Array of double values defines the inverse of matrix.

array::
Default: 0

Zaber

controller::
String value defines the name of the hardware controller that communicates with the device.
Default: empty string

positionerNr::
Integer value defines the index of the positioner in the controllers list of devices.
Default: 0

receiveTimeout::
Double value defines how many seconds Pixelator shall wait for a response to a request.
Default: 5.0

ZmiEpics

axis::
Integer value defines index of the coordinate system axis. (I didn't find where this is actually used in the code.)
Default: 0

precision::
Double value defines the precision with which to record the positioner position values.
Default: 0.1

resetVoltage::
Double value defines the "reset voltage" value to be published on the vresetChannel EPICS channel.
Default: 0.0

fbonChannel::
String value defines the EPICS channel to which requests to switch the feedback on and off can be published.
Default: empty string

setChannel::
String value defines the EPICS channel to which a move request can be written.
Default: empty string

getChannel::
String value defines the EPICS channel from which a position value can be read.
Default: empty string

presetChannel::
String value defines the EPICS channel to which a a coarse position value can be written when resetting the interferometer.
Default: empty string

resetChannel::
String value defines the EPICS channel to which a reset request can be written.
Default: empty string

errChannel::
String value defines the EPICS channel from which the position error can be read.
Default: empty string

vresetChannel::
String value defines the EPICS channel to which the resetVoltage value can be written.
Default: empty string

istatusChannel::
String value defines the EPICS channel from which the status of the positioner can be read.
Default: empty string