Sequencer procedure: Difference between revisions

From SweepMe! Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 33: Line 33:
             ----------------------------------------------------------------------------------------------
             ----------------------------------------------------------------------------------------------
             [[process_data()]]  -> process the measured data after the measurement itself has finished
             [[process_data()]]  -> process the measured data after the measurement itself has finished
             [[call()]]          -> '''mandatory''': return values to SweepMe! as defined by self.variables
             [[call()]]          -> '''mandatory''': return as many values to SweepMe! as defined by self.variables
             ----------------------------------------------------------------------------------------------
             ----------------------------------------------------------------------------------------------
             [[process()]]        -> deprecated: will be continued for a while
             [[process()]]        -> deprecated: will be continued for a while

Revision as of 13:16, 26 July 2023

The following gives an overview of the functions that are called in a Module and that are forwarded to a Driver if the Module can load drivers.

SweepMe! version 1.5.4 or higher

   # at start of the sequencer
   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 all value and configurations to make the device ready for a measurement
   
       # if a item of the sequencer starts its parameter variation
       signin()  -> does nothing except calling reconfigure() if needed, but can be used to do something before the parameter variation starts
       
       # if a new branch is entered and the module was not part of the previous branch
       configure()  -> for all items from root to leaf: sets the configuration of the device
       poweron()    -> for all items from root to leaf: switches the device on 
   
           # for each measurement point
           # each function is done for all items of the branch from root to leaf before the next function is performed: 
           start()          -> prepare something before value is applied
           ----------------------------------------------------------------------------------------------
           apply()          -> set the new value to a device if supported, only called if sweep value changes
           reach()          -> wait to reach the new value, start reaching a certain condition,  only called if 'apply' was called previously
           ----------------------------------------------------------------------------------------------
           wait hold time       -> sleep any hold time while the setvalues are applied
           ----------------------------------------------------------------------------------------------
           adapt()          -> adapt the measurement devices to the new conditions
           adapt_ready()    -> make sure all device have adapted to the new conditions
           trigger_ready()  -> make devices ready to be triggered
           trigger()        -> deprecated: will be continued for a while
           ----------------------------------------------------------------------------------------------
           measure()        -> initiate/trigger a measurement, nothing else
           request_result() -> request a result from the device buffer
           read_result()    -> read a result from the port buffer
           ----------------------------------------------------------------------------------------------
           process_data()   -> process the measured data after the measurement itself has finished
           call()           -> mandatory: return as many values to SweepMe! as defined by self.variables
           ----------------------------------------------------------------------------------------------
           process()        -> deprecated: will be continued for a while
           finish()         -> clean up before the next measurement starts 
     
       #  if a branch is left and the module is not part of the next branch; also called if run is stopped by error
       poweroff()      -> for all items from leaf to root: switches the modules and devices off 
       unconfigure()   -> for all items from leaf to root: unconfigures the modules and drivers
       
       # if a item of the sequencer finishs its parameter variation
       signout()  -> does nothing, but can be used to do something after the parameter variation
   
   # at end for all items of the sequencer; also called if run is stopped by error
   deinitialize()   -> for all items from root to leaf: reset 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 to make everything ready for the run. At the end deinitialize and [[disconnect] to bring the module or the driver back into an idle state and to close the connection.
  • When a module gets active, i.e. it is part of an active branch, it is configure and powered on using configure and poweron function. If a module is not active anymore it get unconfigured and powered off using poweroff and unconfigure.
  • At each measurement point, i.e. a combination of setpoint iteration steps of the 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.