diff --git a/site_ansto/instrument/config/commands/hvcommands.tcl b/site_ansto/instrument/config/commands/hvcommands.tcl index 971f6afa..1c9c4e40 100644 --- a/site_ansto/instrument/config/commands/hvcommands.tcl +++ b/site_ansto/instrument/config/commands/hvcommands.tcl @@ -6,340 +6,340 @@ set motdir 1 set pulserstate 0 proc SetVoltScale {newscaleval} { - global scaleval - set scaleval $newscaleval + global scaleval + set scaleval $newscaleval } proc VoltScale {involt} { - global scaleval - return [expr {($involt*1.0)/$scaleval}] + global scaleval + return [expr {($involt*1.0)/$scaleval}] } proc SetRampParms {_rampstep _rampdelay} { - global rampstep rampdelay - set rampstep $_rampstep - set rampdelay $_rampdelay + global rampstep rampdelay + set rampstep $_rampstep + set rampdelay $_rampdelay } proc SetVolt {volt} { - global pulserstate - if {$volt== 0} { - PulserOff - set pulserstate 0 - } else { - set pulservolt [VoltScale $volt] -# sct_pulser send "VOLT:OFFS $pulservolt; OFFS?" -# PulserDC $pulservolt - if {$pulserstate==0} { - PulserDC $pulservolt - PulserOn - set pulserstate 1 - } else { - sct_pulser send "VOLT:OFFS $pulservolt; OFFS?" - PulserOn - } - } + global pulserstate + if {$volt== 0} { + PulserOff + set pulserstate 0 + } else { + set pulservolt [VoltScale $volt] + # sct_pulser send "VOLT:OFFS $pulservolt; OFFS?" + # PulserDC $pulservolt + if {$pulserstate==0} { + PulserDC $pulservolt + PulserOn + set pulserstate 1 + } else { + sct_pulser send "VOLT:OFFS $pulservolt; OFFS?" + PulserOn + } + } } proc VoltSetStep {start step fin delay} { - set i [expr {$start*1.0}] - set loopvar 1 - SetVolt $i - if {($start == $fin) || ($step == 0)} {break} - while {$loopvar} { - wait $delay - if {($start < $fin)} { - set i [expr {$i + abs($step)}] - if {$i >= $fin} { - set i $fin - set loopvar 0 - } - } - if {($start > $fin)} { - set i [expr {$i - abs($step)}] - if {$i <= $fin} { - set i $fin - set loopvar 0 - } - } - SetVolt $i - } + set i [expr {$start*1.0}] + set loopvar 1 + SetVolt $i + if {($start == $fin) || ($step == 0)} {break} + while {$loopvar} { + wait $delay + if {($start < $fin)} { + set i [expr {$i + abs($step)}] + if {$i >= $fin} { + set i $fin + set loopvar 0 + } + } + if {($start > $fin)} { + set i [expr {$i - abs($step)}] + if {$i <= $fin} { + set i $fin + set loopvar 0 + } + } + SetVolt $i + } } - + proc GetVolt {} { - sct_pulser transact VOLT:OFFS? + sct_pulser transact VOLT:OFFS? } proc SingleVolt {volt oscno} { - histmem mode unlimited - newfile HISTOGRAM_XY - SetVolt $volt - oct oscillate_count $oscno - oct oscillate start - save 0 + histmem mode unlimited + newfile HISTOGRAM_XY + SetVolt $volt + oct oscillate_count $oscno + oct oscillate start + save 0 } proc SetDC {} { - pulseroff + pulseroff #NOTE: Setting FUNC DC generates a remote ctrl error if the # burst mode happens to be on - set resp [sct_pulser send "BURS:STAT OFF;:FUNC DC;:VOLT:OFFS 0; OFFS?"] - pulseron + set resp [sct_pulser send "BURS:STAT OFF;:FUNC DC;:VOLT:OFFS 0; OFFS?"] + pulseron } proc VoltRamp {start step fin oscno} { - histmem mode unlimited + histmem mode unlimited - newfile HISTOGRAM_XY - set loopvar 1 - set i 0 - while {$loopvar} { - set j [expr {$i*$step+$start}] - if {$j> $fin && $step > 0} {break} - if {$j< $fin && $step < 0} {break} - SetVolt $j - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - incr i - } + newfile HISTOGRAM_XY + set loopvar 1 + set i 0 + while {$loopvar} { + set j [expr {$i*$step+$start}] + if {$j> $fin && $step > 0} {break} + if {$j< $fin && $step < 0} {break} + SetVolt $j + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + incr i + } } proc SingleVTexScan {mot tstart tstep tfin oscno} { - global motdir - broadcast in singlevtexscan - set loopvar 1 - set i_bool 0 - histmem mode unlimited - if {$motdir == 1} { - set currentmot $tstart - set i 0 - } else { - set currentmot $tfin - set i [expr {int(($tfin-$tstart)/$tstep)}] - } - newfile HISTOGRAM_XY - while {$i_bool==0} { - drive $mot $currentmot - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - if {($motdir > 0)} { + global motdir + broadcast in singlevtexscan + set loopvar 1 + set i_bool 0 + histmem mode unlimited + if {$motdir == 1} { + set currentmot $tstart + set i 0 + } else { + set currentmot $tfin + set i [expr {int(($tfin-$tstart)/$tstep)}] + } + newfile HISTOGRAM_XY + while {$i_bool==0} { + drive $mot $currentmot + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + if {($motdir > 0)} { - set currentmot [expr {$currentmot + $tstep}] - if {$currentmot > $tfin} {set i_bool 1} - incr i - } else { - set currentmot [expr {$currentmot - $tstep}] - if {$currentmot < $tstart} {set i_bool 1} - incr i -1 - } - } - set motdir [expr {(-1*$motdir)}] + set currentmot [expr {$currentmot + $tstep}] + if {$currentmot > $tfin} {set i_bool 1} + incr i + } else { + set currentmot [expr {$currentmot - $tstep}] + if {$currentmot < $tstart} {set i_bool 1} + incr i -1 + } + } + set motdir [expr {(-1*$motdir)}] } - + proc VListTexScan {voltlist mot tstart tstep tfin oscno} { - global rampstep rampdelay + global rampstep rampdelay set curvolt [lindex $voltlist 0] broadcast $curvolt SetVolt $curvolt foreach volt $voltlist { - broadcast $volt - VoltSetStep $curvolt $rampstep $volt $rampdelay - SingleVTexScan $mot $tstart $tstep $tfin $oscno - } + broadcast $volt + VoltSetStep $curvolt $rampstep $volt $rampdelay + SingleVTexScan $mot $tstart $tstep $tfin $oscno + } } proc SquarePulseTexture {motor start step numsteps volt freq bins oscno} { - histmem mode unlimited - newfile HISTOGRAM_XYT - histmem_period_strobo $freq $bins - wait 3 - set pulservolt [VoltScale $volt] - PulserSquare $freq $pulservolt - PulserOn + histmem mode unlimited + newfile HISTOGRAM_XYT + histmem_period_strobo $freq $bins + wait 3 + set pulservolt [VoltScale $volt] + PulserSquare $freq $pulservolt + PulserOn - for {set i 0} {$i < $numsteps} {incr i} { - drive $motor [expr $i*$step+$start] - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - } + for {set i 0} {$i < $numsteps} {incr i} { + drive $motor [expr $i*$step+$start] + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + } } proc UniPulseTexture {motor start step numsteps volt freq bins oscno} { - histmem mode unlimited - newfile HISTOGRAM_XYT - histmem_period_strobo $freq $bins - wait 3 - set pulservolt [VoltScale [expr {$volt*1.0}]] - set pulseroffs [VoltScale [expr {$volt*0.5}]] - PulserSquareOffs $freq $pulservolt $pulseroffs - PulserOn + histmem mode unlimited + newfile HISTOGRAM_XYT + histmem_period_strobo $freq $bins + wait 3 + set pulservolt [VoltScale [expr {$volt*1.0}]] + set pulseroffs [VoltScale [expr {$volt*0.5}]] + PulserSquareOffs $freq $pulservolt $pulseroffs + PulserOn - for {set i 0} {$i < $numsteps} {incr i} { - drive $motor [expr $i*$step+$start] - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - } + for {set i 0} {$i < $numsteps} {incr i} { + drive $motor [expr $i*$step+$start] + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + } } proc BehlkePulseTexture {motor start step numsteps freq bins oscno} { - histmem mode unlimited - newfile HISTOGRAM_XYT - histmem_period_strobo $freq $bins - wait 3 - PulserSquareOffs $freq 2.5 2.5 - PulserOn - for {set i 0} {$i < $numsteps} {incr i} { - drive $motor [expr $i*$step+$start] - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - } + histmem mode unlimited + newfile HISTOGRAM_XYT + histmem_period_strobo $freq $bins + wait 3 + PulserSquareOffs $freq 2.5 2.5 + PulserOn + for {set i 0} {$i < $numsteps} {incr i} { + drive $motor [expr $i*$step+$start] + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + } } proc SquarePulseVolt {start step fin freq bins oscno} { - histmem mode unlimited - newfile HISTOGRAM_XYT - histmem_period_strobo $freq $bins - wait 3 - set loopvar 1 - set i 0 - while {$loopvar} { - set j [expr {$i*$step+$start}] - if {$j> $fin && $step > 0} {break} - if {$j< $fin && $step < 0} {break} - if {$j== 0} { - PulserOff - } else { - set pulservolt [VoltScale $j] - PulserSquare $freq $pulservolt - PulserOn -# sct_pulser send "APPL:SQU $freq,$pulservolt,0" - } - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - incr i - } + histmem mode unlimited + newfile HISTOGRAM_XYT + histmem_period_strobo $freq $bins + wait 3 + set loopvar 1 + set i 0 + while {$loopvar} { + set j [expr {$i*$step+$start}] + if {$j> $fin && $step > 0} {break} + if {$j< $fin && $step < 0} {break} + if {$j== 0} { + PulserOff + } else { + set pulservolt [VoltScale $j] + PulserSquare $freq $pulservolt + PulserOn + # sct_pulser send "APPL:SQU $freq,$pulservolt,0" + } + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + incr i + } } proc SquarePulseFreq {volt freqlist bins oscno} { - histmem mode unlimited - newfile HISTOGRAM_XYT - set loopvar 1 - set i 0 - foreach freq $freqlist { - set pulservolt [VoltScale $volt] - histmem_period_strobo $freq $bins - wait 3 - PulserSquare $freq $pulservolt - PulserOn -# sct_pulser send "APPL:SQU $freq,$pulservolt,0" - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - incr i - } + histmem mode unlimited + newfile HISTOGRAM_XYT + set loopvar 1 + set i 0 + foreach freq $freqlist { + set pulservolt [VoltScale $volt] + histmem_period_strobo $freq $bins + wait 3 + PulserSquare $freq $pulservolt + PulserOn + # sct_pulser send "APPL:SQU $freq,$pulservolt,0" + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + incr i + } } proc BehlkePulseFreq {freqlist bins oscno} { - histmem mode unlimited - newfile HISTOGRAM_XYT - set loopvar 1 - set i 0 - foreach freq $freqlist { - histmem_period_strobo $freq $bins - wait 3 - PulserSquareOffs $freq 2.5 2.5 - PulserOn - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - incr i - } + histmem mode unlimited + newfile HISTOGRAM_XYT + set loopvar 1 + set i 0 + foreach freq $freqlist { + histmem_period_strobo $freq $bins + wait 3 + PulserSquareOffs $freq 2.5 2.5 + PulserOn + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + incr i + } } proc SinePulseFreq {volt freqlist bins oscno} { - histmem mode unlimited - newfile HISTOGRAM_XYT - set loopvar 1 - set i 0 - foreach freq $freqlist { - set pulservolt [VoltScale $volt] - histmem_period_strobo $freq $bins - wait 3 - PulserSin $freq $pulservolt - PulserOn - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - incr i - } + histmem mode unlimited + newfile HISTOGRAM_XYT + set loopvar 1 + set i 0 + foreach freq $freqlist { + set pulservolt [VoltScale $volt] + histmem_period_strobo $freq $bins + wait 3 + PulserSin $freq $pulservolt + PulserOn + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + incr i + } } proc UniPulseFreq {volt freqlist bins oscno} { - histmem mode unlimited - newfile HISTOGRAM_XYT - set loopvar 1 - set i 0 - foreach freq $freqlist { + histmem mode unlimited + newfile HISTOGRAM_XYT + set loopvar 1 + set i 0 + foreach freq $freqlist { - histmem_period_strobo $freq $bins - wait 3 -# PulserSquareOffs $freq $pulservolt [expr {$pulservolt/2}] - set pulservolt [VoltScale [expr {$volt*1.0}]] - set pulseroffs [VoltScale [expr {$volt*0.5}]] - PulserSquareOffs $freq $pulservolt $pulseroffs - PulserOn -# sct_pulser send "APPL:SQU $freq,$pulservolt,[expr {$pulservolt/2}]" - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - incr i - } + histmem_period_strobo $freq $bins + wait 3 + # PulserSquareOffs $freq $pulservolt [expr {$pulservolt/2}] + set pulservolt [VoltScale [expr {$volt*1.0}]] + set pulseroffs [VoltScale [expr {$volt*0.5}]] + PulserSquareOffs $freq $pulservolt $pulseroffs + PulserOn + # sct_pulser send "APPL:SQU $freq,$pulservolt,[expr {$pulservolt/2}]" + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + incr i + } } proc UniPulseFatigue {volt freq bins oscno reps runs} { - histmem mode unlimited - set pulservolt [VoltScale $volt] - set halfvolt [expr {$pulservolt/2.0}] - histmem_period_strobo $freq $bins - wait 3 - PulserSquareOffs $freq $halfvolt $halfvolt - PulserOn - for {set i 0} {$i<$runs} {incr i} { - newfile HISTOGRAM_XYT - for {set j 0} {$j<$reps} {incr j} { - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $j - } - } - PulserOff - set pulserstate 0 - Histmem_strobo_off + histmem mode unlimited + set pulservolt [VoltScale $volt] + set halfvolt [expr {$pulservolt/2.0}] + histmem_period_strobo $freq $bins + wait 3 + PulserSquareOffs $freq $halfvolt $halfvolt + PulserOn + for {set i 0} {$i<$runs} {incr i} { + newfile HISTOGRAM_XYT + for {set j 0} {$j<$reps} {incr j} { + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $j + } + } + PulserOff + set pulserstate 0 + Histmem_strobo_off } @@ -347,80 +347,80 @@ proc UniPulseFatigue {volt freq bins oscno reps runs} { proc PulserBurst {} { - sct_pulser send "BURS:MODE TRIG; MODE?" - sct_pulser send "TRIG:SOUR BUS; SOUR?" - sct_pulser send "BURS:STAT ON; STAT?" - PulserOn - sct_pulser send "*TRG;:BURS:NCYC?" - while {1} { - set sval [sct_pulser transact *OPC?] - if {[string first 1 $sval] >-1} {break} - } - PulserOff - set pulserstate 0 + sct_pulser send "BURS:MODE TRIG; MODE?" + sct_pulser send "TRIG:SOUR BUS; SOUR?" + sct_pulser send "BURS:STAT ON; STAT?" + PulserOn + sct_pulser send "*TRG;:BURS:NCYC?" + while {1} { + set sval [sct_pulser transact *OPC?] + if {[string first 1 $sval] >-1} {break} + } + PulserOff + set pulserstate 0 } proc VoltPulseRun {vlo vhi freq cycl} { - PulserOff + PulserOff - sct_pulser send "VOLT:LOW [VoltScale $vlo]; LOW?" - sct_pulser send "VOLT:HIGH [VoltScale $vhi]; HIGH?" - sct_pulser send "FREQ $freq;:FREQ?" - sct_pulser send "BURS:PHAS [expr {90.0 - ($vhi*180.0)/(($vhi-$vlo)*1.0)}]; PHAS?" - sct_pulser send "BURS:MODE TRIG; MODE?" - set ploop [expr {int($cycl/50000)}] - set prem [expr {$cycl % 50000}] - if {$ploop >0} { - for {set i 0} {$i< $ploop} {incr i} { - Pulser send "BURS:NCYC 50000; NCYC?" - PulserBurst - } - } - sct_pulser send "BURS:NCYC $prem; NCYC?" - PulserBurst - PulserOff - set pulserstate 0 - sct_pulser send "BURS:STAT OFF; STAT?" + sct_pulser send "VOLT:LOW [VoltScale $vlo]; LOW?" + sct_pulser send "VOLT:HIGH [VoltScale $vhi]; HIGH?" + sct_pulser send "FREQ $freq;:FREQ?" + sct_pulser send "BURS:PHAS [expr {90.0 - ($vhi*180.0)/(($vhi-$vlo)*1.0)}]; PHAS?" + sct_pulser send "BURS:MODE TRIG; MODE?" + set ploop [expr {int($cycl/50000)}] + set prem [expr {$cycl % 50000}] + if {$ploop >0} { + for {set i 0} {$i< $ploop} {incr i} { + Pulser send "BURS:NCYC 50000; NCYC?" + PulserBurst + } + } + sct_pulser send "BURS:NCYC $prem; NCYC?" + PulserBurst + PulserOff + set pulserstate 0 + sct_pulser send "BURS:STAT OFF; STAT?" } proc VoltPulses {vlo vhi freq cycl} { - PulserOff - sct_pulser send "FUNC SQU;:FUNC?" - VoltPulseRun $vlo $vhi $freq $cycl + PulserOff + sct_pulser send "FUNC SQU;:FUNC?" + VoltPulseRun $vlo $vhi $freq $cycl } proc VoltTriPulses {vlo vhi freq cycl} { - PulserOff - sct_pulser send "FUNC RAMP;:FUNC?" - sct_pulser send "FUNC:RAMP:SYMM 50;:FUNC:RAMP:SYMM?" - VoltPulseRun $vlo $vhi $freq $cycl + PulserOff + sct_pulser send "FUNC RAMP;:FUNC?" + sct_pulser send "FUNC:RAMP:SYMM 50;:FUNC:RAMP:SYMM?" + VoltPulseRun $vlo $vhi $freq $cycl } proc OneTri {volt period} { - PulserOff - if {$volt > 0} { - sct_pulser send "VOLT:LOW 0; LOW?" - sct_pulser send "VOLT:HIGH [VoltScale $volt]; HIGH?" - sct_pulser send "BURS:PHAS -90; PHAS?" - } else { - sct_pulser send "VOLT:LOW [VoltScale $volt]; LOW?" - sct_pulser send "VOLT:HIGH 0; HIGH?" - sct_pulser send "BURS:PHAS 90; PHAS?" - } - sct_pulser send "FUNC RAMP;:FUNC?" - sct_pulser send "FUNC:RAMP:SYMM 50;:FUNC:RAMP:SYMM?" - sct_pulser send "FREQ [expr {1.0/$period}];:FREQ?" + PulserOff + if {$volt > 0} { + sct_pulser send "VOLT:LOW 0; LOW?" + sct_pulser send "VOLT:HIGH [VoltScale $volt]; HIGH?" + sct_pulser send "BURS:PHAS -90; PHAS?" + } else { + sct_pulser send "VOLT:LOW [VoltScale $volt]; LOW?" + sct_pulser send "VOLT:HIGH 0; HIGH?" + sct_pulser send "BURS:PHAS 90; PHAS?" + } + sct_pulser send "FUNC RAMP;:FUNC?" + sct_pulser send "FUNC:RAMP:SYMM 50;:FUNC:RAMP:SYMM?" + sct_pulser send "FREQ [expr {1.0/$period}];:FREQ?" - sct_pulser send "BURS:MODE TRIG; MODE?" + sct_pulser send "BURS:MODE TRIG; MODE?" - sct_pulser send "BURS:NCYC 1; NCYC?" - PulserBurst - PulserOff - set pulserstat 0 + sct_pulser send "BURS:NCYC 1; NCYC?" + PulserBurst + PulserOff + set pulserstat 0 } @@ -448,5 +448,5 @@ publish BehlkePulseTexture user publish BehlkePulseFreq user publish UniPulseTexture user publish VoltSetStep user - + diff --git a/site_ansto/instrument/hipd/config/commands/cfcommands.tcl b/site_ansto/instrument/hipd/config/commands/cfcommands.tcl index 067db49d..d2980113 100644 --- a/site_ansto/instrument/hipd/config/commands/cfcommands.tcl +++ b/site_ansto/instrument/hipd/config/commands/cfcommands.tcl @@ -5,161 +5,161 @@ # assumes tc1 and tc2 are the cf8 336 and 340 lakeshores for now namespace eval cf { - variable wall_lag 10 - variable wall_max 300 - variable sample_tolerance 5 - variable wall_tolerance 5 - variable wall_set true - variable base_set true - variable base_control true - variable wall_control true + variable wall_lag 10 + variable wall_max 300 + variable sample_tolerance 5 + variable wall_tolerance 5 + variable wall_set true + variable base_set true + variable base_control true + variable wall_control true - proc UseWall {_wall_set _wall_control} { - variable wall_set - variable wall_control - if {$_wall_set == false} {set wall_set false} else {set wall_set true} - if {$_wall_control == false} {set wall_control false} else {set wall_control true} - } + proc UseWall {_wall_set _wall_control} { + variable wall_set + variable wall_control + if {$_wall_set == false} {set wall_set false} else {set wall_set true} + if {$_wall_control == false} {set wall_control false} else {set wall_control true} + } - proc UseBase {_base_set _base_control} { - variable base_set - variable base_control - if {$_base_set == false} {set base_set false} else {set base_set true} - if {$_base_control == false} {set base_control false} else {set base_control true} - } + proc UseBase {_base_set _base_control} { + variable base_set + variable base_control + if {$_base_set == false} {set base_set false} else {set base_set true} + if {$_base_control == false} {set base_control false} else {set base_control true} + } - proc WallParams {_wall_lag _wall_max _wall_tolerance} { - variable wall_lag - variable wall_max - variable wall_tolerance - set wall_lag $_wall_lag - set wall_max $_wall_max - set wall_tolerance $_wall_tolerance - hset /sample/tc2/control/tolerance1 $wall_tolerance - } + proc WallParams {_wall_lag _wall_max _wall_tolerance} { + variable wall_lag + variable wall_max + variable wall_tolerance + set wall_lag $_wall_lag + set wall_max $_wall_max + set wall_tolerance $_wall_tolerance + hset /sample/tc2/control/tolerance1 $wall_tolerance + } - proc TempSet {temp} { - variable wall_lag - variable wall_max - variable base_set - variable wall_set - set tempc [expr {$temp - $wall_lag}] - if {$tempc < 4} {set tempc 4} - if {$tempc > $wall_max} {set tempc $wall_max} - hset /sample/tc1/sensor/setpoint1 $temp - if {$base_set} {hset /sample/tc1/sensor/setpoint2 $tempc} - if {$wall_set} {hset /sample/tc2/sensor/setpoint1 $tempc} - } + proc TempSet {temp} { + variable wall_lag + variable wall_max + variable base_set + variable wall_set + set tempc [expr {$temp - $wall_lag}] + if {$tempc < 4} {set tempc 4} + if {$tempc > $wall_max} {set tempc $wall_max} + hset /sample/tc1/sensor/setpoint1 $temp + if {$base_set} {hset /sample/tc1/sensor/setpoint2 $tempc} + if {$wall_set} {hset /sample/tc2/sensor/setpoint1 $tempc} + } - proc TempDrive {temp} { - variable wall_lag - variable wall_max - variable base_control - variable wall_control - TempSet $temp - set tempc [expr {$temp - $wall_lag}] - if {$tempc < 4} {set tempc 4} - if {$tempc > $wall_max} {set tempc $wall_max} - set drstr "drive tc1_driveable \$temp" - if {$base_control} {append drstr " tc1_driveable2 \$tempc"} - if {$wall_control} {append drstr " tc2_driveable \$tempc"} - eval $drstr - } + proc TempDrive {temp} { + variable wall_lag + variable wall_max + variable base_control + variable wall_control + TempSet $temp + set tempc [expr {$temp - $wall_lag}] + if {$tempc < 4} {set tempc 4} + if {$tempc > $wall_max} {set tempc $wall_max} + set drstr "drive tc1_driveable \$temp" + if {$base_control} {append drstr " tc1_driveable2 \$tempc"} + if {$wall_control} {append drstr " tc2_driveable \$tempc"} + eval $drstr + } - proc Tolerance {sample} { - hset /sample/tc1/control/tolerance1 $sample - hset /sample/tc1/control/tolerance2 $sample - } + proc Tolerance {sample} { + hset /sample/tc1/control/tolerance1 $sample + hset /sample/tc1/control/tolerance2 $sample + } - proc MakeCold {} { - variable sample_tolerance - variable wall_tolerance - Tolerance 20 - hset /sample/tc2/control/tolerance1 20 - hset /sample/tc2/sensor/setpoint1 4 - TempDrive 4 - Tolerance $sample_tolerance - hset /sample/tc2/control/tolerance1 $wall_tolerance - wait 300 - } + proc MakeCold {} { + variable sample_tolerance + variable wall_tolerance + Tolerance 20 + hset /sample/tc2/control/tolerance1 20 + hset /sample/tc2/sensor/setpoint1 4 + TempDrive 4 + Tolerance $sample_tolerance + hset /sample/tc2/control/tolerance1 $wall_tolerance + wait 300 + } - proc TempRun {temp delay numsteps oscno} { - TempDrive $temp - wait $delay - newfile HISTOGRAM_XY - for {set i 0} {$i < $numsteps} {incr i} { - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - } - } + proc TempRun {temp delay numsteps oscno} { + TempDrive $temp + wait $delay + newfile HISTOGRAM_XY + for {set i 0} {$i < $numsteps} {incr i} { + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + } + } - proc RampRun {start step fin oscno delay} { - histmem mode unlimited - newfile HISTOGRAM_XY - set loopvar 1 - set i 0 - while {$loopvar} { - set j [expr {$i*$step+$start}] - if {$j> $fin && $step > 0} {break} - if {$j< $fin && $step < 0} {break} - TempSet $j - wait $delay - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - incr i - } - } + proc RampRun {start step fin oscno delay} { + histmem mode unlimited + newfile HISTOGRAM_XY + set loopvar 1 + set i 0 + while {$loopvar} { + set j [expr {$i*$step+$start}] + if {$j> $fin && $step > 0} {break} + if {$j< $fin && $step < 0} {break} + TempSet $j + wait $delay + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + incr i + } + } - proc StepRun {start step fin oscno delay} { - histmem mode unlimited - newfile HISTOGRAM_XY - set loopvar 1 - set i 0 - while {$loopvar} { - set j [expr {$i*$step+$start}] - if {$j> $fin && $step > 0} {break} - if {$j< $fin && $step < 0} {break} - TempDrive $j - wait $delay - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - incr i - } - } + proc StepRun {start step fin oscno delay} { + histmem mode unlimited + newfile HISTOGRAM_XY + set loopvar 1 + set i 0 + while {$loopvar} { + set j [expr {$i*$step+$start}] + if {$j> $fin && $step > 0} {break} + if {$j< $fin && $step < 0} {break} + TempDrive $j + wait $delay + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + incr i + } + } - proc HeaterOn {} { - variable base_set - variable wall_set + proc HeaterOn {} { + variable base_set + variable wall_set - hset /sample/tc1/heater/heaterRange_1 4 - if {$base_set} {hset /sample/tc1/heater/heaterRange_2 4} - if {$wall_set} {hset /sample/tc2/heater/heaterRange 5} - } + hset /sample/tc1/heater/heaterRange_1 4 + if {$base_set} {hset /sample/tc1/heater/heaterRange_2 4} + if {$wall_set} {hset /sample/tc2/heater/heaterRange 5} + } - proc GetTemp {} { - variable base_set - set t1top [hget /sample/tc1/sensor/sensorValueA] - broadcast "sample top : $t1top" - if {$base_set} { - set t1base [hget /sample/tc1/sensor/sensorValueB] - broadcast "sample base: $t1base" - } - set t1wall [hget /sample/tc2/sensor/sensorValueA] - broadcast "sample wall: $t1wall" - } + proc GetTemp {} { + variable base_set + set t1top [hget /sample/tc1/sensor/sensorValueA] + broadcast "sample top : $t1top" + if {$base_set} { + set t1base [hget /sample/tc1/sensor/sensorValueB] + broadcast "sample base: $t1base" + } + set t1wall [hget /sample/tc2/sensor/sensorValueA] + broadcast "sample wall: $t1wall" + } - namespace export * - namespace ensemble create + namespace export * + namespace ensemble create } publish cf user diff --git a/site_ansto/instrument/hipd/config/commands/hvsteps.tcl b/site_ansto/instrument/hipd/config/commands/hvsteps.tcl index e3a7c8a8..827aedd1 100644 --- a/site_ansto/instrument/hipd/config/commands/hvsteps.tcl +++ b/site_ansto/instrument/hipd/config/commands/hvsteps.tcl @@ -1,109 +1,109 @@ proc SetVoltPosStep {steps} { - + # set llen 16384 # set steplen [expr{int($llen/(2*$steps))}] # set phaselen - - set l {} - for {set i 0} {$i < $steps} {incr i} { - lappend l [expr {($i*2.0/$steps)-1.0}] - } - for {set i $steps} {$i > 0} {incr i -1} { - lappend l [expr {($i*2.0/$steps)-1.0}] - } - set s "DATA VOLATILE, " - for {set i 0} {$i < [expr {[llength $l] -1}]} {incr i} { - append s [format "%1.3f" [lindex $l $i]] "," - } - append s [format "%1.3f" [lindex $l [expr {[llength $l] -1}]]] - sct_pulser send $s - broadcast $s - + + set l {} + for {set i 0} {$i < $steps} {incr i} { + lappend l [expr {($i*2.0/$steps)-1.0}] + } + for {set i $steps} {$i > 0} {incr i -1} { + lappend l [expr {($i*2.0/$steps)-1.0}] + } + set s "DATA VOLATILE, " + for {set i 0} {$i < [expr {[llength $l] -1}]} {incr i} { + append s [format "%1.3f" [lindex $l $i]] "," + } + append s [format "%1.3f" [lindex $l [expr {[llength $l] -1}]]] + sct_pulser send $s + broadcast $s + } proc SetVoltBiStep {steps} { - set l {} - for {set i 0} {$i < $steps} {incr i} { - lappend l [expr {$i*1.0/$steps}] - } - for {set i $steps} {$i > [expr {$steps * -1}]} {incr i -1} { - lappend l [expr {$i*1.0/$steps}] - } - for {set i [expr {$steps * -1}]} {$i < 0} {incr i} { - lappend l [expr {$i*1.0/$steps}] - } - - set s "DATA VOLATILE, " - for {set i 0} {$i < [expr {[llength $l] -1}]} {incr i} { - append s [format "%1.3f" [lindex $l $i]] "," - } - append s [format "%1.3f" [lindex $l [expr {[llength $l] -1}]]] - sct_pulser send $s - broadcast $s - - + set l {} + for {set i 0} {$i < $steps} {incr i} { + lappend l [expr {$i*1.0/$steps}] + } + for {set i $steps} {$i > [expr {$steps * -1}]} {incr i -1} { + lappend l [expr {$i*1.0/$steps}] + } + for {set i [expr {$steps * -1}]} {$i < 0} {incr i} { + lappend l [expr {$i*1.0/$steps}] + } + + set s "DATA VOLATILE, " + for {set i 0} {$i < [expr {[llength $l] -1}]} {incr i} { + append s [format "%1.3f" [lindex $l $i]] "," + } + append s [format "%1.3f" [lindex $l [expr {[llength $l] -1}]]] + sct_pulser send $s + broadcast $s + + } proc VoltPosStep {volt freq voltsteps} { - PulserOff - newfile HISTOGRAM_XYT - - SetVoltPosStep $voltsteps - sct_pulser send "VOLT:LOW [VoltScale 0.0]; LOW?" - sct_pulser send "VOLT:HIGH [VoltScale [expr {$volt*1.0}]]; HIGH?" - sct_pulser send "FREQ $freq;:FREQ?" - sct_pulser send "FUNC: USER VOLATILE" - sct_pulser send "FUNC USER" - + PulserOff + newfile HISTOGRAM_XYT + + SetVoltPosStep $voltsteps + sct_pulser send "VOLT:LOW [VoltScale 0.0]; LOW?" + sct_pulser send "VOLT:HIGH [VoltScale [expr {$volt*1.0}]]; HIGH?" + sct_pulser send "FREQ $freq;:FREQ?" + sct_pulser send "FUNC: USER VOLATILE" + sct_pulser send "FUNC USER" + } proc UniZigTexture {motor mstart mstep mnum volt freq vstep binmult oscno} { - histmem mode unlimited - newfile HISTOGRAM_XYT - set bins [expr {$vstep * 2 * $binmult}] - histmem_period_strobo $freq $bins - wait 3 -# set pulservolt [VoltScale [expr {$volt*1.0}]] -# set pulseroffs [VoltScale [expr {$volt*0.5}]] - VoltPosStep $volt $freq $vstep + histmem mode unlimited + newfile HISTOGRAM_XYT + set bins [expr {$vstep * 2 * $binmult}] + histmem_period_strobo $freq $bins + wait 3 + # set pulservolt [VoltScale [expr {$volt*1.0}]] + # set pulseroffs [VoltScale [expr {$volt*0.5}]] + VoltPosStep $volt $freq $vstep - PulserOn + PulserOn - for {set i 0} {$i < $mnum} {incr i} { - drive $motor [expr $i*$mstep+$mstart] - oct oscillate_count $oscno - oct oscillate start - hmm countblock - save $i - } - PulserOff + for {set i 0} {$i < $mnum} {incr i} { + drive $motor [expr $i*$mstep+$mstart] + oct oscillate_count $oscno + oct oscillate start + hmm countblock + save $i + } + PulserOff } - + proc VoltBiStep {volt freq steps} { - PulserOff - newfile HISTOGRAM_XYT - - SetVoltBiStep $steps - sct_pulser send "VOLT:LOW [VoltScale [expr {$volt*-1.0}]; LOW?" - sct_pulser send "VOLT:HIGH [VoltScale [expr {$volt*1.0}]; HIGH?" - sct_pulser send "FREQ $freq;:FREQ?" - sct_pulser send "FUNC: USER VOLATILE" - sct_pulser send "FUNC USER" - set bins [expr {$steps * 4}] - histmem_period_strobo $freq $bins - wait 3 - - PulserOn - oct oscillate_count $oscno - oct oscillate start - save 0 + PulserOff + newfile HISTOGRAM_XYT + + SetVoltBiStep $steps + sct_pulser send "VOLT:LOW [VoltScale [expr {$volt*-1.0}]; LOW?" + sct_pulser send "VOLT:HIGH [VoltScale [expr {$volt*1.0}]; HIGH?" + sct_pulser send "FREQ $freq;:FREQ?" + sct_pulser send "FUNC: USER VOLATILE" + sct_pulser send "FUNC USER" + set bins [expr {$steps * 4}] + histmem_period_strobo $freq $bins + wait 3 + + PulserOn + oct oscillate_count $oscno + oct oscillate start + save 0 } - + publish SetVoltPosStep user publish SetVoltBiStep user publish UniZigTexture user publish VoltPosStep user -publish VoltBiStep user +publish VoltBiStep user