Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plan for SPM app def. #241

Open
wants to merge 15 commits into
base: fairmat
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
152 changes: 95 additions & 57 deletions base_classes/NXpositioner.nxdl.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="nxdlformat.xsl" ?>
<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet type="text/xsl" href="nxdlformat.xsl"?>
<!--
# NeXus - Neutron and X-ray Common Data Format
#
# Copyright (C) 2008-2022 NeXus International Advisory Committee (NIAC)
#
#
# Copyright (C) 2014-2024 NeXus International Advisory Committee (NIAC)
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
Expand All @@ -21,89 +21,127 @@
#
# For further information, see http://www.nexusformat.org
-->
<definition
name="NXpositioner"
type="group"
extends="NXobject"
category="base"
xmlns="http://definition.nexusformat.org/nxdl/3.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd"
>
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXpositioner" extends="NXobject" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
<doc>
A generic positioner such as a motor or piezo-electric transducer.
A generic positioner such as a motor or piezo-electric transducer.
</doc>
<attribute name="default">
<doc>
.. index:: plotting

Declares which child group contains a path leading
to a :ref:`NXdata` group.

It is recommended (as of NIAC2014) to use this attribute
to help define the path to the default dataset to be plotted.
See https://www.nexusformat.org/2014_How_to_find_default_data.html
for a summary of the discussion.
</doc>
</attribute>
<field name="name">
<doc>symbolic or mnemonic name (one word)</doc>
<doc>
symbolic or mnemonic name (one word)
</doc>
</field>
<field name="description">
<doc>description of positioner</doc>
<doc>
description of positioner
</doc>
</field>
<field name="value" type="NX_NUMBER" units="NX_ANY">
<doc>best known value of positioner - need [n] as may be scanned</doc>
<dimensions rank="1"><dim index="1" value="n"/></dimensions>
<doc>
best known value of positioner - need [n] as may be scanned
</doc>
<dimensions rank="1">
<dim index="1" value="n"/>
</dimensions>
</field>
<field name="raw_value" type="NX_NUMBER" units="NX_ANY">
<doc>raw value of positioner - need [n] as may be scanned</doc>
<dimensions rank="1"><dim index="1" value="n"/></dimensions>
<doc>
raw value of positioner - need [n] as may be scanned
</doc>
<dimensions rank="1">
<dim index="1" value="n"/>
</dimensions>
</field>
<field name="target_value" type="NX_NUMBER" units="NX_ANY">
<doc>targeted (commanded) value of positioner - need [n] as may be scanned</doc>
<dimensions rank="1"><dim index="1" value="n"/></dimensions>
<doc>
targeted (commanded) value of positioner - need [n] as may be scanned
</doc>
<dimensions rank="1">
<dim index="1" value="n"/>
</dimensions>
</field>
<field name="tolerance" type="NX_NUMBER" units="NX_ANY">
<doc>maximum allowable difference between target_value and value</doc>
<dimensions rank="1"><dim index="1" value="n"/></dimensions>
<doc>
maximum allowable difference between target_value and value
</doc>
<dimensions rank="1">
<dim index="1" value="n"/>
</dimensions>
</field>
<field name="soft_limit_min" type="NX_NUMBER" units="NX_ANY">
<doc>minimum allowed limit to set value</doc>
<doc>
minimum allowed limit to set value
</doc>
</field>
<field name="soft_limit_max" type="NX_NUMBER" units="NX_ANY">
<doc>maximum allowed limit to set value</doc>
<doc>
maximum allowed limit to set value
</doc>
</field>
<field name="velocity" type="NX_NUMBER" units="NX_ANY">
<doc>velocity of the positioner (distance moved per unit time)</doc>
<doc>
velocity of the positioner (distance moved per unit time)
</doc>
</field>
<field name="acceleration_time" type="NX_NUMBER" units="NX_ANY">
<doc>time to ramp the velocity up to full speed</doc>
<doc>
time to ramp the velocity up to full speed
</doc>
</field>
<!-- TODO other parameters: settling time, backlash, link to readback channel -->
<!--TODO other parameters: settling time, backlash, link to readback channel-->
<field name="controller_record">
<doc>Hardware device record, e.g. EPICS process variable, taco/tango ...</doc>
</field>
<attribute name="default">
<doc>
.. index:: plotting

Declares which child group contains a path leading
to a :ref:`NXdata` group.

It is recommended (as of NIAC2014) to use this attribute
to help define the path to the default dataset to be plotted.
See https://www.nexusformat.org/2014_How_to_find_default_data.html
for a summary of the discussion.
Hardware device record, e.g. EPICS process variable, taco/tango.
</doc>
</attribute>
</field>
<field name="depends_on" type="NX_CHAR">
<doc>
NeXus positions components by applying a set of translations and rotations
to apply to the component starting from 0, 0, 0. The order of these operations
is critical and forms what NeXus calls a dependency chain. The depends_on
field defines the path to the top most operation of the dependency chain or the
string "." if located in the origin. Usually these operations are stored in a
NXtransformations group. But NeXus allows them to be stored anywhere.

.. todo::
Add a definition for the reference point of a positioner.

NeXus positions components by applying a set of translations and rotations
to apply to the component starting from 0, 0, 0. The order of these operations
is critical and forms what NeXus calls a dependency chain. The depends_on
field defines the path to the top most operation of the dependency chain or the
string "." if located in the origin. Usually these operations are stored in a
NXtransformations group. But NeXus allows them to be stored anywhere.

.. todo::
Add a definition for the reference point of a positioner.
</doc>
</field>
<group type="NXtransformations">
<doc>
This is the group recommended for holding the chain of translation
and rotation operations necessary to position the component within
the instrument. The dependency chain may however traverse similar groups in
other component groups.
This is the group recommended for holding the chain of translation
and rotation operations necessary to position the component within
the instrument. The dependency chain may however traverse similar groups in
other component groups.
</doc>
</group>
<group name="actuator" type="NXactuator">
<doc>
The actuator of the positioner which is responsible for the movement of the
probe.
</doc>
<group name="feedback" type="NXpid">
<doc>
The feedback of the actual position of the positioner.
</doc>
<group name="pv_sensor" type="NXsensor">
<doc>
If present, the value and the value_log of this pv_sensor is the same as
the value and raw_value of the position itself.
</doc>
RubelMozumder marked this conversation as resolved.
Show resolved Hide resolved
</group>
</group>
</group>
</definition>
Loading
Loading