Slits

Slits are defined by symbols that appear in /online_dir/exp_ini.exp. The symbol names consist of a generic part, the prefix, and the specification of the jaw:

!
! exp_ini.exp
!
! the following definitions introduce two slits: sl1 and sl2
!
sl1_top = mot1
sl1_bottom = mot2
sl1_left = mot3
sl1_right = mot4

sl2_top = mot5
sl2_bottom = mot6
sl2_left = mot7
sl2_right = mot8

slit_names = (sl1, sl2)

The symbol slit_names is needed for the ONLINE TkI.

The slit degrees of freedom (d.o.f.) are referenced by a function-like syntax: slit( PREFIX, JAW). The available keywords are: cx, cy, dx, dy, top, bottom, left, right. c stands for center and d for the opening.

The coordinate frame is oriented in this way: z is in the direction of the photons, y upwards and x completes the right handed system. The slit( PREFIX, right) motor moves into the negative x-direction.

Here is an example slit code:

use Spectra;
use Motor; 

my ($pos, $uli, $ula, $ubl, $acc, $base, $slew, $st); 

my $cx  = Motor->locate( name => "slit( sl1, cx)");
my $top = Motor->locate( name => "slit( sl1, top)");
#
# the following calls are available for all slit d.o.f.
#
$pos = $cx->get( "position");
$uli = $cx->get( "unit_limit_min");   # read-only
$ula = $cx->get( "unit_limit_max");   # read-only
$ubl = $cx->get( "unit_backlash");    # read-only
#
# since $top, since it refers to a single motor, 
# it can be treated like a normal motor.
#
$uli  = $top->get( "unit_limit_min");
$ula  = $top->get( "unit_limit_max");
$ubl  = $top->get( "unit_backlash"); 
$acc  = $top->get( "acceleration"); 
$base = $top->get( "base");         
$slew = $top->get( "slew");         
$st   = $top->get( "settle_time");  
$top->set( slew => "...", 
           acceleration => "...");
#
# slit move
#
my $pos_new = $pos + 0.1;
my $ret = $cx->set( position => "$pos_new");
#
# single step slit moves
#
my $ret = $cx->set( step_down => 'yes');  
my $ret = $cx->set( step_left => 'yes');
my $ret = $cx->set( step_right => 'yes');
my $ret = $cx->set( step_up => 'yes');

Mind that the meaning of the unit_backlash of the center (cx, cy) and the opening (dx, dy) is not non-ambiguous, since two motors are involved. In order not to move the motors too close to the limits, the function $cx->get( "unit_backlash") returns twice the absolute value of the larger backlash.