{{{#!/bin/perl -w
use strict; #use EpicsTools;
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - # This PERL script watches the PSL and does some stuff. # # 1) Watches the FSS and runs the FSS Autolock if the # Refcav breaks lock. # # 2) Watches the PMC and runs the PMC Autolock script # if the PMC is out of lock. # # 3) Same, but for the MZ. All of these require that the # appropriate Lock Acquisition buttons be on. # # 4) Add the ISS to this script. # - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# setup env my $read = "tdsread"; my $write = "tdswrite"; my $step = "ezcastep"; my $switch = "ezcaswitch"; my $scripts = "/cvs/cds/caltech/scripts"; my $pezcabit = "$scripts/general/pezcabit";
my $ifo = "C1"; my $lsc = "${ifo}:LSC"; my $sus = "${ifo}:SUS"; my $ioo = "${ifo}:IOO"; my $psl = "${ifo}:PSL";
# state channel bits my $fss_bit = 0; my $pmc_bit = 1; my $mz_bit = 2; my $imc_bit = 3; my $ifo_bit = 4; my $ad_bit = 5; # not needed in this script my $omc_bit = 6; # not needed in this script
# various numbers my $ifo_state = "${ifo}:IFO-STATE";
# how are these set? my $fss_state = "${ifo}:PSL-FSS_STATE"; my $pmc_state = "${ifo}:PSL-PMC_STATE"; my $mz_state = "${ifo}:PSL-MZ_STATE";
# IFO readback channels (set by state code) my $imc_state = "${ifo}:IOO-MC_LOCK"; my $FSS_la_chan = "${psl}-FSS_LOCK"; my $PMC_la_chan = "${psl}-PMC_LOCK"; my $MZ_la_chan = "${psl}-MZ_LOCK";
# ??? my $FSS_la = 0; my $PMC_la = 0; my $MZ_la = 0;
# various commands my $dateCmd = "date";
# initalize state my $tNow = $dateCmd;
# initialize loop variables my $tDiff = 0; my $isRClocked = 0; my $isPMClocked = 0; my $isMZlocked = 0; my $isIMClocked = 0;
# main watch loop while ( 1 ) {
- ### get some info
- print "\n\t$tNow"; print "mz: $MZ_la";
$isRClocked = $read $fss_state; $isPMClocked = $read $fss_state; $isMZlocked = $read $mz_state;
$isIMClocked = $read $imc_state; # Set IFO State Bits if ( $isRClocked == 1 ) {
- print "FSS Locked...\n"; system("$pezcabit $ifo_state $fss_bit SET");
- print "FSS UN-Locked...\n"; system("$pezcabit $ifo_state $fss_bit RESET");
- print "PMC Locked...\n"; system("$pezcabit $ifo_state $pmc_bit SET");
- print "PMC UN-Locked...\n"; system("$pezcabit $ifo_state $pmc_bit RESET");
- print "Mach-Zehnder Locked...\n"; system("$pezcabit $ifo_state $mz_bit SET");
- print "Mach-Zehnder UN-Locked...\n"; system("$pezcabit $ifo_state $mz_bit RESET");
- print "Mode Cleaner Locked...\n"; system("$pezcabit $ifo_state $imc_bit SET");
- print "Mode Cleaner UN-Locked...\n"; system("$pezcabit $ifo_state $imc_bit RESET");
- # check PSL state
$FSS_la = $read $FSS_la_chan; $PMC_la = $read $PMC_la_chan; $MZ_la = $read $MZ_la_chan;
if ( $isRClocked == 0 && $FSS_la == 1 ) {
- system("sleep 5");
$isRClocked = $read $fss_state; if ( $isRClocked == 0 && $FSS_la == 1 ) {
- print "Running FSS Autolocker\n";
#system("$scripts/PSL/FSS/FSSAutolock &");
- }
- print "Running FSS Autolocker\n";
if ( $isPMClocked == 0 && $PMC_la == 1 ) {
- print "Running PMC Autolocker\n";
#system("$scripts/PSL/PMC/PMCAutolock &");
if ( ($isMZlocked == 0) && ($MZ_la == 1) ) {
- print "Running MZ Autolocker\n";
#system("$scripts/PSL/MZ/lockMZ &");
$tNow = $dateCmd;
} }}}
