Sequencer procedure: Difference between revisions

From SweepMe! Wiki
Jump to navigation Jump to search
No edit summary
mNo edit summary
 
(27 intermediate revisions by 4 users not shown)
Line 1: Line 1:
The following gives an overview of the functions that are called in a [[Device Class]] in the sequencer procedure.
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.4 or higher
SweepMe! version 1.5.6 or higher


    # at start of the sequencer
{|
    [[connect()]]     -> for all items: get and open a port object to communicate with a device
'''Sequencer Start:'''
    [[initialize()]] -> for all items: set all value and configurations to make the device ready for a measurement
|-
   
| colspan="3"| [[connect()]] || For all items from root to leaf: get and open a port object to communicate with a device.
        # if a item of the sequencer starts its parameter variation
|-
        [[signin()]]  -> does nothing, but can be used to do something before the parameter variation starts
| colspan="3"| [[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
| colspan="4"| ---------------------------------------------------------------------------------------------------
        [[configure()]]  -> changes the configuration of the device
|-
        [[poweron()]]    -> switches the device on
| style="width: 15px"| || colspan="3"| '''If a new [[branch]] is entered and the module was not part of the previous branch:'''
   
|-
            # for each measurement point
| || colspan="2"| [[configure()]] || For all items from root to leaf: Set device configuration.
            # each function is done for all items of the branch before the next function is performed:
|-
            [[start()]]          -> prepare something before value is applied
| || colspan="2"| [[poweron()]]|| For all items from root to leaf: Powers on the device.
            ----------------------------------------------------------------------------------------------
|-
            [[apply()]]          -> set the new value to a device if supported
| || colspan="3"| '''If an item of the sequencer starts its parameter variation:'''
            [[reach()]]          -> wait to reach the new value, start reaching a certain condition
|-
            ----------------------------------------------------------------------------------------------
| || colspan="2"| [[signin()]] || Calls reconfigure() if needed. Can be used to perform actions before parameter variation starts.
            wait hold time      -> sleep any hold time while the setvalues are applied
|-
            ----------------------------------------------------------------------------------------------
| || colspan="2"| transfer() || Hands over parameters to the module. '''Do not override - This function is not called for drivers.'''
            [[adapt()]]         -> adapt the measurement devices to the new conditions
|-
            [[adapt_ready()]]   -> make sure all device have adapted to the new conditions
| || colspan="3"| -------------------------------------------------------------------------------------------------
            [[trigger_ready()]]  -> make devices ready to be triggered
|-
            [[trigger()]]        -> deprecated: will be continued for a while
| || style="width: 15px"| || colspan="2"| '''For each measurement point:'''
            ----------------------------------------------------------------------------------------------
|-
            [[measure()]]       -> initiate/trigger a measurement, nothing else
| ||  || colspan="2"| Each step is performed for all items from root to leaf before the next step is started:
            [[request_result()]] -> request a result from the device buffer
|-
            [[read_result()]]   -> read a result from the port buffer
| ||  ||  [[start()]] || Preparation before applying a new value.
            ----------------------------------------------------------------------------------------------
|-
            [[process_data()]]   -> process the measured data after the measurement itself has finished
| ||  || colspan="2"| ----------------------------------------------------------------------------------------------
            [[call()]]           -> '''mandatory''': return values to SweepMe! as defined by self.variables
|-
            ----------------------------------------------------------------------------------------------
| ||  ||  [[apply()]] || '''Only called if the sweep value changes''': Sets a new value to a device.
            [[process()]]       -> deprecated: will be continued for a while
|-
            [[finish()]]         -> clean up before the next measurement starts
| ||  ||  [[reach()]] || '''Only called if apply() was called''': Wait to reach the new value or start reaching a certain condition
            ----------------------------------------------------------------------------------------------
|-
            wait stop time      -> deprecated from 1.5.5.: sleep any stop time while time while the devices are set to their idlevalues
| ||  ||  sleephold() || Sleeps during hold time while set values are applied.
     
|-
        #  if a [[branch]] is left and the module is not part of the next branch
| ||  || colspan="2"| ----------------------------------------------------------------------------------------------
        [[poweroff()]]      -> for all items: switches the device off
|-
        [[unconfigure()]]   -> set value to idlevalue and apply() it
| ||  ||  [[adapt()]] || Adapts measurement devices to new conditions.
       
|-
        # if a item of the sequencer finishs its parameter variation
| ||  ||  [[adapt_ready()]] || Ensures all devices have adapted.
        [[signout()]]  -> does nothing, but can be used to do something after the parameter variation
|-
   
| ||  ||  [[trigger_ready()]] || Prepares devices to be triggered.
    # at end for all items of the sequencer
|-
    [[deinitialize()]]  -> for all items: reset the status for any other user of the equipment
| ||  ||  trigger() || Deprecated, use measure() instead.
    [[disconnect()]]    -> for all items: closes the port object
|-
| ||  || colspan="2"| ----------------------------------------------------------------------------------------------
|-
| ||  ||  [[measure()]] || Initiates/Triggers a measurement.
|-
| ||  ||  [[request_result()]] || Requests a result from the device buffer.
|-
| ||  ||  [[read_result()]] || Reads a result from the port buffer.
|-
| ||  || colspan="2"| ----------------------------------------------------------------------------------------------
|-
| ||  ||  [[process_data()]] || Processes measured data after the measurement finishes.
|-
| ||  ||  [[call()]] || '''Mandatory''': Returns values to SweepMe! as defined by self.variables.
|-
| ||  || colspan="2"| ----------------------------------------------------------------------------------------------
|-
| ||  ||  [[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.
|-
| ||  colspan="3"| --------------------------------------------------------------------------------------------------
|-
|  || colspan="3"| '''If an item of the sequencer ends its parameter variation:'''
|-
|  || colspan="2"| [[signout()]] || Optionally performs actions after parameter variation.
|-
|  || colspan="3"| '''Leaving a branch and the module is not part of the next branch or run is stopped by error:'''
|-
|  || colspan="2"| [[poweroff()]] || For all items from root to leaf: Switch off modules and devices.
|-
|  || colspan="2"| [[unconfigure()]] || For all items from root to leaf: Unconfigure modules and devices.
|-
| colspan="4"| ------------------------------------------------------------------------------------------------------
|-
|colspan="4"| '''End of sequencer or if run is stopped by error:''' 
|-
| colspan="3"| [[deinitialize()]] || For all items from root to leaf: Resets the status for any other user of the equipment.
|-
| colspan="3"| [[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.
 
{{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