Skip to content

Commit

Permalink
Plan for SPM app def. (#241)
Browse files Browse the repository at this point in the history
* First final draft for application definiton NXsts,
NXstm, NXaf, NXspm and base classes NXlockin,
NXbias_spectroscopy, cantilever_spm, NXbias_sweep,
NXpiezo_config_spm, NXpositioner_spm, NXscan_control,
NXpiezoelectric_material and NXrcs.

Finish review comments from Lev.

* Remove SPM folder.

* Remove SPM folder.

Revert "Remove SPM folder."

This reverts commit 3aeb39e.

PR review from Lukas!

Delete unnecessary files.

Revert "Delete unnecessary files."

This reverts commit 317a367.

Include the default key attribute on entry and include NXhistory under the NXsample for verbose purpose.

* Review from Tamash (#303)

* space.

* Modified some descriptions trying to clarify the meaning of the elements. Please check them! Modified:Update NXafm.yaml

* NXbias_spectroscopy.yaml

* Update NXscan.yaml

I just added a slight clarification what we mean under the word scan.
However, it makes me wonder whether this should be more a base class than an application definition.
And whether the control parameter set should be only positional.
So, I have some doubts here...

* Update NXcantilever_spm.yaml

added some explanation and clarification to the cantilever properties and what are the driving details of cantilever oscillations

* Update NXcircuit.yaml

minor changes to allow for multichannel boards, e.g. 4 or 16 channel A/D converters or amplifiers

* Update NXlockin.yaml

Minor changes in documentation,
removed some redundant information on the demodulated signal.

* Update NXpiezo_config_spm.yaml

minimal changes in docstrings

* Update NXpositioner_spm.yaml

minor correction, the Z positioner has no idea where the sample is, so sample - probe distance is unknown at this point

* Update NXscan_control.yaml

some minor comment changes

* Generated nxdl files.

* Revert "Update NXscan.yaml"

This reverts commit 3f376f0.
This file is covered by #304  #304
---------

Co-authored-by: T. Haraszti <[email protected]>

Rename lockin_current_flip_number to loockin_current_flip_sign.

add NXidentifier in NXsensor_scan.

Delete unnecessary file.

Revert "Delete unnecessary file."

This reverts commit 8c6b03c.

Preparation for example in nomad.

Corrected typo in heterodyne word Update NXlockin.yaml

Minor fix.

* Remove redundant files.
  • Loading branch information
RubelMozumder authored Dec 6, 2024
1 parent 4931f39 commit c11ecb9
Show file tree
Hide file tree
Showing 46 changed files with 7,686 additions and 4,364 deletions.
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>
</group>
</group>
</group>
</definition>
Loading

0 comments on commit c11ecb9

Please sign in to comment.