From f4a240c377c35e42601b7b646c05401c8242014d Mon Sep 17 00:00:00 2001 From: Jing Chen Date: Mon, 20 Aug 2012 15:54:34 +1000 Subject: [PATCH] change command names r3701 | jgn | 2012-08-20 15:54:34 +1000 (Mon, 20 Aug 2012) | 1 line --- .../pelican/config/beamline/sct_power.tcl | 498 +++++++----------- 1 file changed, 202 insertions(+), 296 deletions(-) diff --git a/site_ansto/instrument/pelican/config/beamline/sct_power.tcl b/site_ansto/instrument/pelican/config/beamline/sct_power.tcl index 0852fa4a..1b69bc02 100644 --- a/site_ansto/instrument/pelican/config/beamline/sct_power.tcl +++ b/site_ansto/instrument/pelican/config/beamline/sct_power.tcl @@ -801,179 +801,76 @@ proc ::scobj::ag1010::mkAG {argList} { namespace import ::scobj::ag1010::par -proc LFSetLimitsFPL {para} { +proc LFPAGC {{para ""} args} { - set HEAD 0x96 - set LEN 10 - set CTRL 2 - set CRC 0 - - set ns /sics/ag1010 - set newPara [string trim $para " "] - - if {$para > 10040 || $para < 0} { - broadcast "Error: The Limit for the Forward Power is 0~10040 dW" + if {$para == ""} { + broadcast "[hget /sics/ag1010/AGC/PAGC] dW" } else { - set RPL [hval $ns/limits/ReversePower] - set data [format %04x%04x%04x%04x $newPara $RPL 0 0] + set HEAD 0x96 + set LEN 4 + set CTRL 3 + set CRC 0 + + set ns /sics/ag1010 + set newPara [string trim $para " "] + + set data [format %04x $newPara] set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] - broadcast "Set Forward Power Limits to $newPara dW" + broadcast "Set Power Level for AGC mode to $newPara dW" sct_ag1010 send "$cmd" } } -proc LFSetLimitsRPL {para} { +proc LFPMGC {{para ""} args} { - set HEAD 0x96 - set LEN 10 - set CTRL 2 - set CRC 0 - - set ns /sics/ag1010 - set newPara [string trim $para " "] - - if {$para > 1630 || $para < 0} { - broadcast "Error: The Limit for the Reflected Power is 0~1630 dW" + if {$para == ""} { + broadcast "[hget /sics/ag1010/MGC/PMGC] dW" } else { - set FPL [hval $ns/limits/ForwardPower] - set data [format %04x%04x%04x%04x $FPL $newPara 0 0] + set HEAD 0x96 + set LEN 4 + set CTRL 4 + set CRC 0 + + set ns /sics/ag1010 + set newPara [string trim $para " "] + + set data [format %04x $newPara] set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] - broadcast "Set Reverse Power Limits to $newPara dW" + broadcast "Set Power Level for MGC mode to $newPara dW" sct_ag1010 send "$cmd" } } -proc LFSetPAGC {para} { +proc LFFREQ {{para ""} args} { - set HEAD 0x96 - set LEN 4 - set CTRL 3 - set CRC 0 - - set ns /sics/ag1010 - set newPara [string trim $para " "] - - set data [format %04x $newPara] - set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] - - broadcast "Set Power Level for AGC mode to $newPara dW" - sct_ag1010 send "$cmd" -} - -proc LFSetPMGC {para} { - - set HEAD 0x96 - set LEN 4 - set CTRL 4 - set CRC 0 - - set ns /sics/ag1010 - set newPara [string trim $para " "] - - set data [format %04x $newPara] - set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] - - broadcast "Set Power Level for MGC mode to $newPara dW" - sct_ag1010 send "$cmd" -} - -proc LFSetFREQ {para} { - - set HEAD 0x96 - set LEN 6 - set CTRL 5 - set CRC 0 - - set ns /sics/ag1010 - set newPara [string trim $para " "] - - if {$para < 0.02 || $para > 2000000} { - broadcast "Error: Freqence shall be set between 0.02 Hz and 2 MHz" + if {$para == ""} { + broadcast "[hget /sics/ag1010/FRE/FREQ] Hz" } else { - set Freq [expr $newPara / 1000] - set FreqHz [expr $newPara % 1000] - set data [format %04x%04x $Freq $FreqHz] - set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] + set HEAD 0x96 + set LEN 6 + set CTRL 5 + set CRC 0 - broadcast "Set Frequency to $newPara Hz" - sct_ag1010 send "$cmd" + set ns /sics/ag1010 + set newPara [string trim $para " "] + + if {$para < 0.02 || $para > 2000000} { + broadcast "Error: Freqence shall be set between 0.02 Hz and 2 MHz" + } else { + set Freq [expr $newPara / 1000] + set FreqHz [expr $newPara % 1000] + set data [format %04x%04x $Freq $FreqHz] + set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] + + broadcast "Set Frequency to $newPara Hz" + sct_ag1010 send "$cmd" + } } } -proc LFSetBurstMode {para} { - - set HEAD 0x96 - set LEN 7 - set CTRL 8 - set CRC 0 - - set ns /sics/ag1010 - set newPara [string trim $para " "] - if {$newPara<0 || $newPara>3} { - return -code error "Error in setValue: only allowed input values for BurstMode are {0,1,2,3}" - } else { - set BurstMode $newPara - } - set BRepTime [hval $ns/BurstPar/BRepTime] - set TimeOfPower [hval $ns/BurstPar/TimeOfPower] - set data [format %02x%04x%04x $BurstMode $BRepTime $TimeOfPower] - set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] - - if {$BurstMode == 0} { - set mode "Set Burst Mode to OFF" - } elseif {$BurstMode == 1} { - set mode "Set Burtst Mode to Internal Mode" - } elseif {$BurstMode == 2} { - set mode "Set Burst Mode to Change Burst Parameters without Changing Burst On/Off" - } else { - set mode "Set Burst Mode to External Mode" - } - - broadcast "$mode" - sct_ag1010 send "$cmd" -} - -proc LFSetBRepTime {para} { - - set HEAD 0x96 - set LEN 7 - set CTRL 8 - set CRC 0 - - set ns /sics/ag1010 - set newPara [string trim $para " "] - - set BurstMode 2 - set TimeOfPower [hval $ns/BurstPar/TimeOfPower] - set data [format %02x%04x%04x $BurstMode $newPara $TimeOfPower] - set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] - - broadcast "Set Repetition Period Burst Cycle to $newPara ms" - sct_ag1010 send "$cmd" -} - -proc LFSetBTimeOfPower {para} { - - set HEAD 0x96 - set LEN 7 - set CTRL 8 - set CRC 0 - - set ns /sics/ag1010 - set newPara [string trim $para " "] - - set BurstMode 2 - set BRepTime [hval $ns/BurstPar/BRepTime] - set data [format %02x%04x%04x $BurstMode $BRepTime $newPara] - set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] - - broadcast "Set Time of Power in Burst Cycle to $newPara us" - sct_ag1010 send "$cmd" -} - -proc LFSetSweep {startF stepF scyc {mode 2} args} { +proc LFSweepRun {startF stepF scyc {mode 2} args} { if {$mode<0 || $mode>2} { return -code error "Error in setValue: only allowed input values for SweepMode are {0,1,2}" @@ -998,172 +895,181 @@ proc LFSetSweep {startF stepF scyc {mode 2} args} { sct_ag1010 send "$cmd" } -proc LFSetSweepMode {para} { +proc LFLimits {args} { - set HEAD 0x96 - set LEN 13 - set CTRL 9 - set CRC 0 - - set ns /sics/ag1010 - set newPara [string trim $para " "] - if {$newPara<0 || $newPara>2} { - return -code error "Error in setValue: only allowed input values for SweepMode are {0,1,2}" - } else { - set SweepMode $newPara - } - - set SStr [expr [hval $ns/SweepPar/StartFreq] / 1000] - set SStrHz [expr [hval $ns/SweepPar/StartFreq] % 1000] - set SStp [expr [hval $ns/SweepPar/StepFreq] / 1000] - set SStpHz [expr [hval $ns/SweepPar/StepFreq] % 1000] - set SCyc [hval $ns/SweepPar/SCyc] - set data [format %02x%02x%02x%02x%02x%02x $SweepMode $SStr $SStp $SCyc $SStrHz $SStpHz] - set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] - - if {$SweepMode == 0} { - set mode "Turn Off Sweep Mode" - } elseif {$SweepMode == 1} { - set mode "Turn On Sweep Mode" + if {$args == ""} { + broadcast "[hget /sics/ag1010/limits/ForwardPower] dW" + broadcast "[hget /sics/ag1010/limits/ReversePower] dW" } else { - set mode "Set Sweep Mode to Change Sweep Mode Parameters Without Changing Sweep Mode On/Off" - } + set HEAD 0x96 + set LEN 10 + set CTRL 2 + set CRC 0 - broadcast "$mode" - sct_ag1010 send "$cmd" + set ns /sics/ag1010 + + foreach {arg val} $args { + switch $arg { + "FPL" { if {$val > 10040 || $val < 0} { + broadcast "Error: The Limit for the Forward Power is 0~10040 dW" + } else { + set RPL [hval $ns/limits/ReversePower] + set data [format %04x%04x%04x%04x $val $RPL 0 0] + set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] + + broadcast "Set Forward Power Limits to $val dW" + sct_ag1010 send "$cmd" + } + } + "RPL" { if {$val > 1630 || $val < 0} { + broadcast "Error: The Limit for the Reflected Power is 0~1630 dW" + } else { + set FPL [hval $ns/limits/ForwardPower] + set data [format %04x%04x%04x%04x $FPL $val 0 0] + set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] + + broadcast "Set Reverse Power Limits to $val dW" + sct_ag1010 send "$cmd" + } + } + default { error "ERROR: $arg should be 'FPL' or 'RPL'" } + } + } + } } -proc LFSetSStartFreq {para} { +proc LFBurst {args} { - set HEAD 0x96 - set LEN 13 - set CTRL 9 - set CRC 0 + if {$args == ""} { + broadcast "[hget /sics/ag1010/BurstPar/BurstMode]" + broadcast "[hget /sics/ag1010/BurstPar/BRepTime] ms" + broadcast "[hget /sics/ag1010/BurstPar/TimeOfPower] us" + } else { + set HEAD 0x96 + set LEN 7 + set CTRL 8 + set CRC 0 - set ns /sics/ag1010 - set newPara [string trim $para " "] - set SweepMode 2 - set SStr [expr $newPara / 1000] - set SStrHz [expr $newPara % 1000] - set SStp [expr [hval $ns/SweepPar/StepFreq] / 1000] - set SStpHz [expr [hval $ns/SweepPar/StepFreq] % 1000] - set SCyc [hval $ns/SweepPar/SCyc] - set data [format %02x%02x%02x%02x%02x%02x $SweepMode $SStr $SStp $SCyc $SStrHz $SStpHz] - set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] + set ns /sics/ag1010 - broadcast "Set Start Frequency in Sweep Mode to $newPara Hz" - sct_ag1010 send "$cmd" + set BurstMode 2 + set BRepTime [hval $ns/BurstPar/BRepTime] + set TimeOfPower [hval $ns/BurstPar/TimeOfPower] + + foreach {arg val} $args { + switch $arg { + "mode" { if {$val<0 || $val>3} { + return -code error "Error in setValue: only allowed input values for BurstMode are {0,1,2,3}" + } else { + set BurstMode $val + } + + if {$BurstMode == 0} { + set MODE "Set Burst Mode to OFF" + } elseif {$BurstMode == 1} { + set MODE "Set Burtst Mode to Internal Mode" + } elseif {$BurstMode == 2} { + set MODE "Set Burst Mode to Change Burst Parameters without Changing Burst On/Off" + } else { + set MODE "Set Burst Mode to External Mode" + } + + broadcast "$MODE" + } + "rtime" { set BRepTime $val + broadcast "Set Repetition Period Burst Cycle to $val ms" + } + "top" { set TimeOfPower $val + broadcast "Set Time of Power in Burst Cycle to $val us" + } + default { error "ERROR: $arg should be 'mode', 'rtime' or 'top'" } + } + } + set data [format %02x%04x%04x $BurstMode $BRepTime $TimeOfPower] + set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] + sct_ag1010 send "$cmd" + } } -proc LFSetSStepFreq {para} { +proc LFSweep {args} { - set HEAD 0x96 - set LEN 13 - set CTRL 9 - set CRC 0 + if {$args == ""} { + broadcast "[hget /sics/ag1010/SweepPar/SweepMode]" + broadcast "[hget /sics/ag1010/SweepPar/StartFreq] Hz" + broadcast "[hget /sics/ag1010/SweepPar/StepFreq] Hz" + broadcast "[hget /sics/ag1010/SweepPar/SCyc]" + } else { + set HEAD 0x96 + set LEN 13 + set CTRL 9 + set CRC 0 - set ns /sics/ag1010 - set newPara [string trim $para " "] - set SweepMode 2 - set SStr [expr [hval $ns/SweepPar/StartFreq] / 1000] - set SStrHz [expr [hval $ns/SweepPar/StartFreq] % 1000] - set SStp [expr $newPara / 1000] - set SStpHz [expr $newPara % 1000] - set SCyc [hval $ns/SweepPar/SCyc] - set data [format %02x%02x%02x%02x%02x%02x $SweepMode $SStr $SStp $SCyc $SStrHz $SStpHz] - set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] + set ns /sics/ag1010 + + set SweepMode 2 + set SStr [expr [hval $ns/SweepPar/StartFreq] / 1000] + set SStrHz [expr [hval $ns/SweepPar/StartFreq] % 1000] + set SStp [expr [hval $ns/SweepPar/StepFreq] / 1000] + set SStpHz [expr [hval $ns/SweepPar/StepFreq] % 1000] + set SCyc [hval $ns/SweepPar/SCyc] - broadcast "Set Step Frequency in Sweep Mode to $newPara Hz" - sct_ag1010 send "$cmd" + foreach {arg val} $args { + switch $arg { + "mode" { if {$val<0 || $val>2} { + return -code error "Error in setValue: only allowed input values for SweepMode are {0,1,2}" + } else { + set SweepMode $val + } + + if {$SweepMode == 0} { + set MODE "Turn Off Sweep Mode" + } elseif {$SweepMode == 1} { + set MODE "Turn On Sweep Mode" + } else { + set MODE "Set Sweep Mode to Change Sweep Mode Parameters Without Changing Sweep Mode On/Off" + } + + broadcast "$MODE" + } + "startF" { set SStr [expr $val / 1000] + set SStrHz [expr $val % 1000] + + broadcast "Set Start Frequency in Sweep Mode to $val Hz" + } + "stepF" { set SStp [expr $val / 1000] + set SStpHz [expr $val % 1000] + + broadcast "Set Step Frequency in Sweep Mode to $val Hz" + } + "scyc" { set SCyc $val + + broadcast "Set Number of Steps in Full Sweep Cycle to $val" + } + default { error "ERROR: $arg should be 'mode', 'startF', 'stepF' or 'scyc'" } + } + } + + set data [format %02x%02x%02x%02x%02x%02x $SweepMode $SStr $SStp $SCyc $SStrHz $SStpHz] + set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] + sct_ag1010 send "$cmd" + } } -proc LFSetSSCyc {para} { - - set HEAD 0x96 - set LEN 13 - set CTRL 9 - set CRC 0 - - set ns /sics/ag1010 - set newPara [string trim $para " "] - set SweepMode 2 - set SStr [expr [hval $ns/SweepPar/StartFreq] / 1000] - set SStrHz [expr [hval $ns/SweepPar/StartFreq] % 1000] - set SStp [expr [hval $ns/SweepPar/StepFreq] / 1000] - set SStpHz [expr [hval $ns/SweepPar/StepFreq] % 1000] - set SCyc $newPara - set data [format %02x%02x%02x%02x%02x%02x $SweepMode $SStr $SStp $SCyc $SStrHz $SStpHz] - set cmd [format %02x%02x%02x%s%02x $HEAD $LEN $CTRL $data $CRC] - - broadcast "Set Number of Steps in Full Sweep Cycle to $newPara" - sct_ag1010 send "$cmd" -} - -proc LFGetLimits {} { - - broadcast "[hget /sics/ag1010/limits/ForwardPower] dW" - broadcast "[hget /sics/ag1010/limits/ReversePower] dW" -} - -proc LFGetPAGC {} { - - broadcast "[hget /sics/ag1010/AGC/PAGC] dW" -} - -proc LFGetPMGC {} { - - broadcast "[hget /sics/ag1010/MGC/PMGC] dW" -} - -proc LFGetFREQ {} { - - broadcast "[hget /sics/ag1010/FRE/FREQ] Hz" -} - -proc LFGetBurstPar {} { - - broadcast "[hget /sics/ag1010/BurstPar/BurstMode]" - broadcast "[hget /sics/ag1010/BurstPar/BRepTime] ms" - broadcast "[hget /sics/ag1010/BurstPar/TimeOfPower] us" -} - -proc LFGetSweepPar {} { - - broadcast "[hget /sics/ag1010/SweepPar/SweepMode]" - broadcast "[hget /sics/ag1010/SweepPar/StartFreq] Hz" - broadcast "[hget /sics/ag1010/SweepPar/StepFreq] Hz" - broadcast "[hget /sics/ag1010/SweepPar/SCyc]" -} - -proc LFGetMEAS {} { +proc LFMEAS {} { broadcast "[hget /sics/ag1010/MEAS/ForwardPower] dW" broadcast "[hget /sics/ag1010/MEAS/ReversePower] dW" broadcast "[hget /sics/ag1010/MEAS/Temperature] Degree" } -publish LFSetLimitsFPL user -publish LFSetLimitsRPL user -publish LFSetPAGC user -publish LFSetPMGC user -publish LFSetFREQ user -publish LFSetBurstMode user -publish LFSetBRepTime user -publish LFSetBTimeOfPower user -publish LFSetSweep user -publish LFSetSweepMode user -publish LFSetSStartFreq user -publish LFSetSStepFreq user -publish LFSetSSCyc user - -publish LFGetLimits user -publish LFGetPAGC user -publish LFGetPMGC user -publish LFGetFREQ user -publish LFGetBurstPar user -publish LFGetSweepPar user -publish LFGetMEAS user - +publish LFLimits user +publish LFPAGC user +publish LFPMGC user +publish LFFREQ user +publish LFMEAS user +publish LFBurst user +publish LFSweepRun user +publish LFSweep user # Main process call # @param name short name for the AG1010 Amplifier/Generator