From SweepMe! Wiki
Jump to navigation Jump to search

To create program procedures and settings there a number of concepts and paradigms:

  • First of all, the main flow of the program is created in the Sequencer where modules can be placed by drag&drop. The correct arrangement of the modules decides when they get active and how many repetitions and variations are done.
  • A more fine grained control over the measurement instruments can be achieved by the careful design of the SweepMe! instrument drivers. Here, one can use the Python programming language to define which commands are sent to instrument at which stage of the sequencer procedure. In case the ready-to-use instrument drivers do not fulfill the desired behavior, they can be either extended or one can derive individual drivers that are customized to a certain problem.
  • Often the modules are not fully independent from each other, but depend on values of other modules. Therefore, some modules have a Sweep mode and a Sweep value that can be used to handover a value from another module. This way it is for example possible to let two voltage sources increase their voltage at the same time or even in opposite direction.
  • Another way to handover a value to a module is the parameter syntax that is based on curly brackets {...}. The widget Parameters gives an overview about all known parameters in the system. They can be copied and inserted in many text edit fields of the modules. Whenever, the parameter changes, the module or driver get informed about the change. The parameter syntax also allows to run small inline calculations.
  • Although many things can be configured within the modules, it is sometimes needed to run individual code. This can be done with the module Calc to do simple point-wise calculations or with the add-on modulee CustomFunction to run more complex scripts that can also include the history of the measurement.
  • Sometimes, single actions are needed like "close the shutter", "zero the thickness" or "skip the current wafer". Such actions can now be added to modules and drivers and triggered via buttons from add-on module ControlWidgets or from the add-on module Condition.
  • If two or more modules should to a correlated sweep, e.g. one modules varies a wavelength while another module should go to a certain position at each wavelength, it is handy to use the add-on modules ReadValues or TableValues. They allow to create tabular data where for example the value of each column can be handed over to a different module. It is also possible to use the module Calc to calculate a new Sweep value for certain module depending on the sweep of another module.