Sequencer procedure: Difference between revisions
Jump to navigation
Jump to search
Franz Hempel (talk | contribs) No edit summary |
mNo edit summary |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
This section provides an easy-to-understand overview of the functions executed in a SweepMe! [[Modules|Module]]. These functions are forwarded to a [[Device Class|Driver]] if the Module can load drivers. | This section provides an easy-to-understand overview of the functions executed in a SweepMe! [[Modules|Module]]. These functions are forwarded to a [[Device Class|Driver]] if the Module can load drivers. | ||
SweepMe! version 1.5. | SweepMe! version 1.5.6 or higher | ||
{| | {| | ||
Line 10: | Line 10: | ||
| colspan="3"| [[initialize()]]|| For all items from root to leaf: Set values and configurations for devices to prepare for measurement. | | colspan="3"| [[initialize()]]|| For all items from root to leaf: Set values and configurations for devices to prepare for measurement. | ||
|- | |- | ||
| colspan="4"| ------------------------------------------------------------------------ | | colspan="4"| --------------------------------------------------------------------------------------------------- | ||
|- | |- | ||
| style="width: 15px"| || colspan="3"| '''If a new [[branch]] is entered and the module was not part of the previous branch:''' | | style="width: 15px"| || colspan="3"| '''If a new [[branch]] is entered and the module was not part of the previous branch:''' | ||
Line 22: | Line 22: | ||
| || colspan="2"| [[signin()]] || Calls reconfigure() if needed. Can be used to perform actions before parameter variation starts. | | || colspan="2"| [[signin()]] || Calls reconfigure() if needed. Can be used to perform actions before parameter variation starts. | ||
|- | |- | ||
| || colspan="3"| ------------------------------------------------------------------------ | | || colspan="2"| transfer() || Hands over parameters to the module. '''Do not override - This function is not called for drivers.''' | ||
|- | |||
| || colspan="3"| ------------------------------------------------------------------------------------------------- | |||
|- | |- | ||
| || style="width: 15px"| || colspan="2"| '''For each measurement point:''' | | || style="width: 15px"| || colspan="2"| '''For each measurement point:''' | ||
Line 46: | Line 48: | ||
| || || [[trigger_ready()]] || Prepares devices to be triggered. | | || || [[trigger_ready()]] || Prepares devices to be triggered. | ||
|- | |- | ||
| || || | | || || trigger() || Deprecated, use measure() instead. | ||
|- | |- | ||
| || || colspan="2"| ---------------------------------------------------------------------------------------------- | | || || colspan="2"| ---------------------------------------------------------------------------------------------- | ||
Line 64: | Line 66: | ||
| || || colspan="2"| ---------------------------------------------------------------------------------------------- | | || || colspan="2"| ---------------------------------------------------------------------------------------------- | ||
|- | |- | ||
| || || [[process()]] || | | || || [[process()]] || Only for Modules: Perform postprocessing after measurement data was obtained from the driver. Drivers should use process_data() to process data before it is transferred to SweepMe!. | ||
|- | |- | ||
| || || [[finish()]] || Cleans up before the next measurement. | | || || [[finish()]] || Cleans up before the next measurement. | ||
|- | |- | ||
| || colspan="3"| ---------------------------------------------------------------------------------------------- | | || colspan="3"| -------------------------------------------------------------------------------------------------- | ||
|- | |- | ||
| || colspan="3"| '''If an item of the sequencer ends its parameter variation:''' | | || colspan="3"| '''If an item of the sequencer ends its parameter variation:''' | ||
Line 80: | Line 82: | ||
| || colspan="2"| [[unconfigure()]] || For all items from root to leaf: Unconfigure modules and devices. | | || colspan="2"| [[unconfigure()]] || For all items from root to leaf: Unconfigure modules and devices. | ||
|- | |- | ||
| colspan="4"| ---------------------------------------------------------------------------------------------- | | colspan="4"| ------------------------------------------------------------------------------------------------------ | ||
|- | |- | ||
|colspan="4"| '''End of sequencer or if run is stopped by error:''' | |colspan="4"| '''End of sequencer or if run is stopped by error:''' | ||
Line 95: | Line 97: | ||
== General rules == | == General rules == | ||
* At the beginning of a measurement, modules and drivers use [[connect]] and [[initialize]]. At the end [[deinitialize]] and [[disconnect] to bring the module or the driver back to an idle state and to close the connection. | * At the beginning of a measurement, modules and drivers use [[connect()]] and [[initialize()]]. At the end [[deinitialize()]] and [[disconnect()]] to bring the module or the driver back to an idle state and to close the connection. | ||
* When a module gets active, i.e. it is part of an active [[branch]], it runs [[configure]] and [[poweron]]. If a module is not active anymore it runs [[poweroff]] and [[unconfigure]]. | * When a module gets active, i.e. it is part of an active [[branch]], it runs [[configure()]] and [[poweron()]]. If a module is not active anymore it runs [[poweroff()]] and [[unconfigure()]]. | ||
* At each measurement point, i.e. a combination of setpoint iteration steps of all modules in a branch, a couple of functions are called to perform the measurement point such as [[start]], [[apply]], [[reach]], [[adapt]], [[measure]], [[call]] to name the most important ones. | * At each measurement point, i.e. a combination of setpoint iteration steps of all modules in a branch, a couple of functions are called to perform the measurement point such as [[start()]], [[apply()]], [[reach()]], [[adapt()]], [[measure()]], [[call()]] to name the most important ones. | ||
{{Sequencer_procedure}} |
Latest revision as of 10:22, 20 August 2024
This section provides an easy-to-understand overview of the functions executed in a SweepMe! Module. These functions are forwarded to a Driver if the Module can load drivers.
SweepMe! version 1.5.6 or higher
Sequencer Start:connect() | For all items from root to leaf: get and open a port object to communicate with a device. | ||
initialize() | For all items from root to leaf: Set values and configurations for devices to prepare for measurement. | ||
--------------------------------------------------------------------------------------------------- | |||
If a new branch is entered and the module was not part of the previous branch: | |||
configure() | For all items from root to leaf: Set device configuration. | ||
poweron() | For all items from root to leaf: Powers on the device. | ||
If an item of the sequencer starts its parameter variation: | |||
signin() | Calls reconfigure() if needed. Can be used to perform actions before parameter variation starts. | ||
transfer() | Hands over parameters to the module. Do not override - This function is not called for drivers. | ||
------------------------------------------------------------------------------------------------- | |||
For each measurement point: | |||
Each step is performed for all items from root to leaf before the next step is started: | |||
start() | Preparation before applying a new value. | ||
---------------------------------------------------------------------------------------------- | |||
apply() | Only called if the sweep value changes: Sets a new value to a device. | ||
reach() | Only called if apply() was called: Wait to reach the new value or start reaching a certain condition | ||
sleephold() | Sleeps during hold time while set values are applied. | ||
---------------------------------------------------------------------------------------------- | |||
adapt() | Adapts measurement devices to new conditions. | ||
adapt_ready() | Ensures all devices have adapted. | ||
trigger_ready() | Prepares devices to be triggered. | ||
trigger() | Deprecated, use measure() instead. | ||
---------------------------------------------------------------------------------------------- | |||
measure() | Initiates/Triggers a measurement. | ||
request_result() | Requests a result from the device buffer. | ||
read_result() | Reads a result from the port buffer. | ||
---------------------------------------------------------------------------------------------- | |||
process_data() | Processes measured data after the measurement finishes. | ||
call() | Mandatory: Returns values to SweepMe! as defined by self.variables. | ||
---------------------------------------------------------------------------------------------- | |||
process() | Only for Modules: Perform postprocessing after measurement data was obtained from the driver. Drivers should use process_data() to process data before it is transferred to SweepMe!. | ||
finish() | Cleans up before the next measurement. | ||
-------------------------------------------------------------------------------------------------- | |||
If an item of the sequencer ends its parameter variation: | |||
signout() | Optionally performs actions after parameter variation. | ||
Leaving a branch and the module is not part of the next branch or run is stopped by error: | |||
poweroff() | For all items from root to leaf: Switch off modules and devices. | ||
unconfigure() | For all items from root to leaf: Unconfigure modules and devices. | ||
------------------------------------------------------------------------------------------------------ | |||
End of sequencer or if run is stopped by error: | |||
deinitialize() | For all items from root to leaf: Resets the status for any other user of the equipment. | ||
disconnect() | For all items from root to leaf: Closes the port object. |
General rules
- At the beginning of a measurement, modules and drivers use connect() and initialize(). At the end deinitialize() and disconnect() to bring the module or the driver back to an idle state and to close the connection.
- When a module gets active, i.e. it is part of an active branch, it runs configure() and poweron(). If a module is not active anymore it runs poweroff() and unconfigure().
- At each measurement point, i.e. a combination of setpoint iteration steps of all modules in a branch, a couple of functions are called to perform the measurement point such as start(), apply(), reach(), adapt(), measure(), call() to name the most important ones.