spec

Software for Diffraction

piezojeno

Piezosystem Jena GmbH Voltage Amplifier

DESCRIPTION

The Piezosystem Jena Voltage Amplifier is a controller for up to three piezo actuators. spec has been tested with model NV40/3CLE, but should also work with models NV40/3, NV120/1 and NV120/1CLE. The Piezosystem Jena controller has both serial and USB interfaces, although spec accesses the USB as a serial interface using the standard USB-to-serial drivers available on modern Linux and OS X platforms. See www.piezojena.com for details on the hardware.

CONFIGURATION

From spec's hardware configuration editor (edconf, normally run from the config macro), select the controller type and assign the interface parameters along the following lines:

Motor and Counter Device Configuration (Not CAMAC)

MOTORS     DEVICE ADDR <>MODE NUM                                <>TYPE
   YES /dev/ttyS0   <>  19200   3  Piezosystem Jena Controller (Serial)

On the Motor screen of the configuration editor, choose the controller type as PZOJENA. The steps-per-degree parameter should be set to 10000. The slew rate, base rate and acceleration time are not used by spec for this controller. Several of the standard optional motor parameters, reached by typing a lower case m from the main motor configuration screen, are recognized by spec for this controller and may be useful, as described below.

There is no status available from the controller as to whether the move has completed or if the stage is on target, so moves are considered complete immediately after sending the move command. A delay can be added by configuring the optional settle-time and dead-band parameters.

To configure a settle time at the end of each move, set the optional parameters DC dead band ("dc_dead_band") and DC settle time ("dc_settle_time"). If both of these parameters are configured, spec will wait for at least the time given by the settle time before reporting the move complete. In addition, spec will also wait for the difference between the target position and the actual position to be within the dead band. If the motor doesn't settle within five seconds, spec reports an error.

The read-back slop parameter ("slop") can be used to suppress position discrepancy messages. If the slop parameter is set to some number of steps, spec will not report position discrepancies smaller than that value and will instead silently accept the reported hardware value as the position.

The hardware read-mode parameter ("read_mode") controls when the position is read from the hardware and can also tell spec to always accept the reported hardware value, no matter how large the discrepancy between it and the software position. spec normally assumes a motor is at its last position. If the PREMOVE read-mode option is set, spec will always read the hardware before moving the motor. If the ALWAYS option is set, spec will read the hardware whenever the get_angles command is run from user level. If the NO QUERY option is set, spec will always assume the hardware is correct and not query the user as to how to resolve the discrepancy if the returned hardware position differs from the current software position. Note, the "slop" parameter is not used when the NO QUERY option is set,

There are a number of encoder parameters associated with the controller that affect all channels. These parameters are named to match the commands used to program the controller: "encmode", "enctime", "enclim", "encexp", "encstol" and "encstcl". (See the controller user manual for details on the meaning of the parameters.) These parameters can be set as non-standard optional parameters on the Device screen associated with the controller by typing a lower case p when the row containing the controller is highlighted. Parameters set in the config file this way can be accessed using motor_par(), but are read only. These parameters can also be set as non-standard optional parameters associated with a single motor channel by typing p from the Motor screen. Parameter values set this way can be accessed via motor_par() for both reading and writing. Although the parameter is assigned to a particular motor channel, the value affects all channels on the same controller. If different values are set for different motor channels, the value set for the highest numbered motor will be the value sent to the controller.

PARAMETERS

motor_par(mne, "cloop" [, 0|1])
Sets or returns the current operating mode for the actuator mne. A value of 1 sets or indicates closed-loop mode. A value of 0 sets or indicates open-loop mode. This parameter can also be set as a non-standard optional motor parameter in the config file.
motor_par(mne, "fenable" [, 0|1])
Sets or returns the soft-start setting for the actuator mne. When enabled, the controller runs the actuator through the entire range of motion on power up.
motor_par(mne, "monwpa" [, 0|1|2])
Sets or returns the the value for the monitor output configuration for the actuator mne. A value of 0 sets it to actuator voltage. A value of 1 sets the output to a value proportional to the position (if the hardware has that functionality). A value of 2 sets the output to the actuator voltage when in open-loop mode and proportional to the position when in closed-loop mode. See the controller user manual for details. This parameter can also be set as a non-standard optional motor parameter in the config file.
motor_par(mne, "encmode" [, 0|1|2])
Sets or returns the encoder mode parameter for all channels on the controller associated with mne. Mode 0 is normal with acceleration. Mode 1 is adjustable interval. Mode 2 is adjustable interval with acceleration. Can be set as a non-standard optional controller or motor parameter in the config file.
motor_par(mne, "enctime" [, value])
Sets or returns the scanning interval parameter for all channels on the controller associated with mne. Allowed values are from 0 to 5.1 seconds. Can be set as a non-standard optional controller or motor parameter in the config file.
motor_par(mne, "enclim" [, value])
Sets or returns the limit on stroke or voltage for all channels on the controller associated with mne. Allowed values are from 1 to 65535. Can be set as a non-standard optional controller or motor parameter in the config file.
motor_par(mne, "encexp" [, value])
Sets the exponent for acceleration in encoder mode 0 for all channels on the controller associated with mne. Allowed values are from 1 to 10. Can be set as a non-standard optional controller or motor parameter in the config file.
motor_par(mne, "encstol" [, value])
Sets the step size for open-loop mode for all channels on the controller associated with mne. Allowed values are from 0.001 to 150 Volts. Can be set as a non-standard optional controller or motor parameter in the config file.
motor_par(mne, "encstcl" [, value])
Sets the step size for closed-loop mode for all channels on the controller associated with mne. Allowed values are from 0.001 to 100 um. Can be set as a non-standard optional controller or motor parameter in the config file.
motor_par(mne, "light" [, value])
Sets or returns the brightness setting on the controller associated with mne. Allowed values are from 0 to 255.
motor_par(mne, "dump")

Displays current values for parameters along the following lines:

Controller parameters:
                  Mode ("encmode"): Normal with acceleration (0)
     Scanning interval ("enctime"): 2 sec (100)
                  Limit ("enclim"): 2
    Exponent for mode 0 ("encexp"): 3
   Open-loop step size ("encstol"): 0.500 V
 Closed-loop step size ("encstcl"): 0.500 um
      Display brightness ("light"): 1

Parameters for motor m0:
          Operation mode ("cloop"): Closed loop (1)
         Monitor output ("monwpa"): Always actuator position (1)
   Soft start function ("fenable"): Enabled (1)

The controller parameters are for the controller associated with motor mne. Values in parenthesis are the actual command arguments sent to the controller.

motor_par(mne, "send", cmd)
Sends the string cmd to the channel associated with mne.
motor_par(mne, "read", cmd)
Sends the string cmd to the channel associated with mne, as above, and returns a string containing the response.
motor_par(mne, "usend", cmd)
Sends the string cmd to the controller unit associated with mne. Use this option for commands that are not associated with a specific channel.
motor_par(mne, "uread", cmd)
Sends the string cmd to the controller unit assigned with mne, and returns the reply. Use this option for commands that are not associated with a specific channel.