sans/config/parameters/parameters.tcl
SICS-365 Refactored quokka nexus structure, the parameters group has been greatly simplified. sans/config/commands/commands.tcl If "selbs" is called by "selbsn" or "selbsxy" it now reports "startt selbsn/selbsxy" and "stop selbsn/selsxy" as well as start and stop for selbs. The rotary attenuator and entrance aperture commands now drive the "att" and "srce" motors directly. quokka_configuration.tcl Removed obsolete code. SICS-365 nxscripts_common_1.tcl, instdict_specification.tcl, common_instrument_dictionary.tcl Don't create unnofficial nexus classes. r2856 | ffr | 2010-01-11 16:12:40 +1100 (Mon, 11 Jan 2010) | 13 lines
This commit is contained in:
committed by
Douglas Clowes
parent
3f53864468
commit
343f874b70
@@ -92,6 +92,7 @@ proc selbs {bs {bx "UNDEF"} {bz "UNDEF"}} {
|
||||
|
||||
if {$bx == "UNDEF" || $bz == "UNDEF"} {
|
||||
statemon start selbs
|
||||
if {[info level] > 1} {statemon start [lindex [info level -1] 0]}
|
||||
set bsdriving true
|
||||
BeamStop -1
|
||||
drive $bsmot $bs_target
|
||||
@@ -99,6 +100,7 @@ proc selbs {bs {bx "UNDEF"} {bz "UNDEF"}} {
|
||||
BeamStop $bs
|
||||
set bsdriving false
|
||||
statemon stop selbs
|
||||
if {[info level] > 1} {statemon stop [lindex [info level -1] 0]}
|
||||
} else {
|
||||
if { [string is double $bx] == false } {
|
||||
if { [string is double $bz] == false } {
|
||||
@@ -109,6 +111,7 @@ proc selbs {bs {bx "UNDEF"} {bz "UNDEF"}} {
|
||||
set bsz_target [expr {$bz-$Zbsf}]
|
||||
|
||||
statemon start selbs
|
||||
if {[info level] > 1} {statemon start [lindex [info level -1] 0]}
|
||||
set bsdriving true
|
||||
BeamStop -1
|
||||
drive $bsmot $bs_target bsx $bsx_target bsz $bsz_target
|
||||
@@ -116,10 +119,12 @@ proc selbs {bs {bx "UNDEF"} {bz "UNDEF"}} {
|
||||
BeamStop $bs
|
||||
set bsdriving false
|
||||
statemon stop selbs
|
||||
if {[info level] > 1} {statemon stop [lindex [info level -1] 0]}
|
||||
}
|
||||
} msg ] {
|
||||
if {$bsdriving} {
|
||||
statemon stop selbs
|
||||
if {[info level] > 1} {statemon stop [lindex [info level -1] 0]}
|
||||
}
|
||||
return -code error $msg
|
||||
}
|
||||
@@ -136,29 +141,28 @@ namespace eval beamstops {
|
||||
|
||||
namespace eval optics {
|
||||
VarMake ::optics::select::section text user
|
||||
VarMake ::optics::polarizer::in text user
|
||||
VarMake ::optics::polarizer::in text user
|
||||
VarMake ::optics::lens::selection text user
|
||||
|
||||
command rotary_attenuator {int=0,15,45,90,180 angle} {
|
||||
AttRotDeg $angle
|
||||
drive att $angle
|
||||
}
|
||||
|
||||
command entrance_aperture {
|
||||
int=0,45,90,135,180,270 angle
|
||||
text=circ,squ,open,rect shape
|
||||
} {
|
||||
RotApDeg $angle
|
||||
RotApShape $shape
|
||||
drive srce $angle
|
||||
}
|
||||
|
||||
command sample_aperture {
|
||||
int=25,50 size
|
||||
text=circ,squ,open,rect shape
|
||||
} {
|
||||
SApXmm $size
|
||||
SApZmm $size
|
||||
SApShape $shape
|
||||
}
|
||||
# TODO Do we need this
|
||||
# command sample_aperture {
|
||||
# int=25,50 size
|
||||
# text=circ,squ,open,rect shape
|
||||
# } {
|
||||
# SApXmm $size
|
||||
# SApZmm $size
|
||||
# SApShape $shape
|
||||
# }
|
||||
|
||||
##############################
|
||||
##
|
||||
|
||||
@@ -1,30 +1,25 @@
|
||||
##
|
||||
# @brief We can't change the coordinate scheme at runtime because this would require
|
||||
# restructuring the hdb tree, but we should save it.
|
||||
foreach {var lname nxname} {
|
||||
SApCoordScheme SApCoordScheme coordinate_scheme
|
||||
EApCoordScheme EApCoordScheme coordinate_scheme
|
||||
SampleCoordScheme SampleCoordScheme coordinate_scheme
|
||||
DetCoordScheme DetCoordScheme coordinate_scheme
|
||||
BeamstopCoordScheme BeamstopCoordScheme coordinate_scheme
|
||||
CollCoordScheme CollCoordScheme coordinate_scheme
|
||||
} {
|
||||
::utility::mkVar $var text readonly $lname true @none false true
|
||||
$var Cartesian
|
||||
$var lock
|
||||
}
|
||||
# TODO Make readonly getset macro for AttFactor
|
||||
|
||||
##
|
||||
# @brief User privilege text variables
|
||||
#
|
||||
# @file The velocity selector position is used as the reference for other instrument
|
||||
# component positions. For simplicity we set it as the origin x=y=z=0.
|
||||
|
||||
##
|
||||
# Note EndFacePosY and RotApPosY are surveyed positions
|
||||
foreach {var lname type priv units klass} {
|
||||
SApShape SApShape text user none parameter
|
||||
BSShape BSShape text user none parameter
|
||||
BeamStop BeamStop int user none parameter
|
||||
SampleThickness thickness float user mm sample
|
||||
TransmissionFlag transmission_flag int user none sample
|
||||
magnetic_field magnetic_field float user T sample
|
||||
lambda lambda float user Ao data
|
||||
BeamCenterX BeamCenterX float user mm parameter
|
||||
BeamCenterZ BeamCenterZ float user mm parameter
|
||||
BeamStop BeamStop int user none parameter
|
||||
BSdiam BSdiam float user mm parameter
|
||||
DetPosYOffset DetPosYOffsetfloat float user mm parameter
|
||||
EApPosY EApPosY float user mm parameter
|
||||
EndFacePosY EndFacePosY float readonly mm parameter
|
||||
magnetic_field magnetic_field float user T sample
|
||||
RotApPosY RotApPosY float readonly mm @none
|
||||
SampleThickness SampleThickness float user mm sample
|
||||
SamYOffset SamYOffset float user mm parameter
|
||||
Transmission Transmission float user 1 parameter
|
||||
TransmissionFlag TransmissionFlag int user none sample
|
||||
} {
|
||||
::utility::mkVar $var $type $priv $lname true $klass true true
|
||||
if {$units != "none"} {
|
||||
@@ -32,239 +27,67 @@ foreach {var lname type priv units klass} {
|
||||
}
|
||||
}
|
||||
|
||||
##
|
||||
# @brief The velocity selector position is used as the reference for other instrument
|
||||
# component positions. For simplicity we set it as the origin x=y=z=0.
|
||||
foreach {var lname nxname units klass} {
|
||||
EndFacePosYmm EndFacePosYmm y mm parameter
|
||||
RotApPosYmm RotApPosYmm y mm @none
|
||||
} {
|
||||
::utility::mkVar $var float readonly $lname true $klass true true
|
||||
if {$units != 1} {
|
||||
sicslist setatt $var units $units
|
||||
}
|
||||
}
|
||||
|
||||
# ::utility::mkVar SampleNum int readonly changer_position true parameter true true
|
||||
|
||||
##
|
||||
# @brief Parameter SicsVariables
|
||||
foreach {var lname nxname units priv } {
|
||||
LambdaA LambdaA wavelength Ao user
|
||||
LambdaResFWHM_percent LambdaResFWHM_percent wavelength_spread 1 user
|
||||
VSdeg VSdeg twist degrees user
|
||||
VSrpm VSrpm rotation_speed rpm user
|
||||
EApYmm EApYmm y mm user
|
||||
EApPosYmm EApPosYmm y mm user
|
||||
SApXmm SApXmm x mm user
|
||||
SApZmm SApZmm z mm user
|
||||
SApPosXmm SApPosXmm x mm user
|
||||
SApPosYmm SApPosYmm y mm user
|
||||
SApPosZmm SApPosZmm z mm user
|
||||
SamplePosXmm SamplePosXmm x mm user
|
||||
SamYOffsetmm SamYOffsetmm y mm user
|
||||
SamplePosZmm SamplePosZmm z mm user
|
||||
DetPosYOffsetmm DetPosYOffsetmm detposyoffset mm user
|
||||
BSXmm BSXmm x mm user
|
||||
BSZmm BSZmm z mm user
|
||||
Transmission Transmission Transmission 1 user
|
||||
BeamCenterX BeamCenterX BeamCenterX mm user
|
||||
BeamCenterZ BeamCenterZ BeamCenterZ mm user
|
||||
} {
|
||||
::utility::mkVar $var float $priv $lname true parameter true true
|
||||
if {$units != 1} {
|
||||
sicslist setatt $var units $units
|
||||
}
|
||||
}
|
||||
|
||||
# Derived Parameter SicsVariables
|
||||
foreach {var type lname units depends} {
|
||||
AttFactor float AttFactor 1 AttRotDeg,LambdaA,LambdaResFWHM_percent
|
||||
PleXmm float PleXmm mm AttRotDeg
|
||||
EApXmm float EApXmm mm RotApDeg
|
||||
EApZmm float EApZmm mm RotApDeg
|
||||
RotApXmm float RotApXmm mm RotApDeg
|
||||
RotApZmm float RotApZmm mm RotApDeg
|
||||
EApShape text EApShape 1 RotApDeg
|
||||
RotApShape text RotApShape 1 RotApDeg
|
||||
} {
|
||||
::utility::mkVar $var $type user $lname true derived_parameter true true
|
||||
sicslist setatt $var depends $depends
|
||||
if {$units != 1} {
|
||||
sicslist setatt $var units $units
|
||||
}
|
||||
}
|
||||
proc sicsmsgfmt {args} {return "[info level -1] = $args"}
|
||||
|
||||
::utility::macro::getset float SamplePosYmm {} {
|
||||
set sy [SplitReply [samy]]
|
||||
set syo [SplitReply [SamYOffsetmm]]
|
||||
set syo [SplitReply [SamYOffset]]
|
||||
return [sicsmsgfmt [expr {$sy+$syo}]]
|
||||
}
|
||||
sicslist setatt SamplePosYmm long_name SamplePosYmm
|
||||
sicslist setatt SamplePosYmm klass derived_parameter
|
||||
sicslist setatt SamplePosYmm klass parameter
|
||||
sicslist setatt SamplePosYmm units mm
|
||||
sicslist setatt SamplePosYmm depends samy,SamYOffsetmm
|
||||
|
||||
::utility::macro::getset float L1mm {} {
|
||||
set efpy [SplitReply [EndFacePosYmm]]
|
||||
::utility::macro::getset float Plex {} {
|
||||
return [sicsmsgfmt [ ::optics::AttRotLookup [SplitReply [att]] ]]
|
||||
}
|
||||
sicslist setatt Plex units mm
|
||||
sicslist setatt Plex long_name Plex
|
||||
sicslist setatt Plex klass parameter
|
||||
|
||||
::utility::macro::getset float EApX {} {
|
||||
return [sicsmsgfmt [::optics::EApLookUp [SplitReply [srce]] "size"]]
|
||||
}
|
||||
sicslist setatt EApX units mm
|
||||
sicslist setatt EApX long_name EApX
|
||||
sicslist setatt EApX klass parameter
|
||||
|
||||
::utility::macro::getset float EApZ {} {
|
||||
return [sicsmsgfmt [::optics::EApLookUp [SplitReply [srce]] "size"]]
|
||||
}
|
||||
sicslist setatt EApZ units mm
|
||||
sicslist setatt EApZ long_name EApZ
|
||||
sicslist setatt EApZ klass parameter
|
||||
|
||||
::utility::macro::getset text EApShape {} {
|
||||
return [sicsmsgfmt [::optics::EApLookUp [SplitReply [srce]] "shape"]]
|
||||
}
|
||||
sicslist setatt EApShape long_name EApShape
|
||||
sicslist setatt EApShape klass parameter
|
||||
sicslist setatt EApShape mutable false
|
||||
|
||||
::utility::macro::getset float L1 {} {
|
||||
set efpy [SplitReply [EndFacePosY]]
|
||||
set samposy [SplitReply [SamplePosYmm]]
|
||||
set eapy [SplitReply [EApPosYmm]]
|
||||
set eapy [SplitReply [EApPosY]]
|
||||
return [sicsmsgfmt [expr {$efpy + $samposy - $eapy}]]
|
||||
}
|
||||
sicslist setatt L1mm long_name L1mm
|
||||
sicslist setatt L1mm klass derived_parameter
|
||||
sicslist setatt L1mm units mm
|
||||
sicslist setatt L1mm depends EndFacePosYmm,SApPosYmm,EApPosYmm
|
||||
sicslist setatt L1 long_name L1
|
||||
sicslist setatt L1 klass parameter
|
||||
sicslist setatt L1 units mm
|
||||
|
||||
::utility::macro::getset float L2mm {} {
|
||||
set detpy [SplitReply [DetPosYmm]]
|
||||
set detpyos [SplitReply [DetPosYOffsetmm]]
|
||||
::utility::macro::getset float L2 {} {
|
||||
set detpy [SplitReply [det]]
|
||||
set detpyos [SplitReply [DetPosYOffset]]
|
||||
set sapy [SplitReply [SamplePosYmm]]
|
||||
return [sicsmsgfmt [expr {$detpy + $detpyos - $sapy}]]
|
||||
}
|
||||
sicslist setatt L2mm long_name L2mm
|
||||
sicslist setatt L2mm klass derived_parameter
|
||||
sicslist setatt L2mm units mm
|
||||
sicslist setatt L2mm depends DetPosYmm,DetPosYOffsetmm,SamplePosYmm
|
||||
sicslist setatt L2 long_name L2
|
||||
sicslist setatt L2 klass parameter
|
||||
sicslist setatt L2 units mm
|
||||
|
||||
# Derive motor parameters
|
||||
foreach {pname motor units} {
|
||||
DetPosXmm detoff mm
|
||||
DetPosYmm det mm
|
||||
BSPosXmm bsx mm
|
||||
BSPosZmm bsz mm
|
||||
SampleTiltXDeg samphi degrees
|
||||
SampleTiltYDeg samchi degrees
|
||||
SampleRotDeg samthet degrees
|
||||
} {
|
||||
::utility::macro::getset float $pname {} [subst -nocommands {
|
||||
return [sicsmsgfmt [SplitReply [$motor]]]
|
||||
}]
|
||||
sicslist setatt $pname units $units
|
||||
sicslist setatt $pname long_name $pname
|
||||
sicslist setatt $pname klass derived_parameter
|
||||
# sicslist setatt $pname depends $motor
|
||||
}
|
||||
|
||||
foreach {pname motor units} {
|
||||
AttRotDeg att degrees
|
||||
} {
|
||||
::utility::macro::getset float $pname {args} [subst -nocommands {
|
||||
# TODO AttFactor
|
||||
if {[set args] == ""} {
|
||||
return [sicsmsgfmt [SplitReply [$motor]]]
|
||||
} else {
|
||||
set target [lindex [set args] 0]
|
||||
Plexmm -1
|
||||
${pname}_status "BUSY"
|
||||
drive $motor \$target
|
||||
set motpos [SplitReply [$motor]]
|
||||
set tolerance [SplitReply [$motor precision] ]
|
||||
if {[expr abs(\$motpos - \$target)] > \$tolerance} {
|
||||
${pname}_status "IDLE"
|
||||
error "ERROR: failed to set $pname target \$target"
|
||||
} else {
|
||||
Plexmm [::optics::AttRotLookup \$target]
|
||||
}
|
||||
${pname}_status "IDLE"
|
||||
}
|
||||
}]
|
||||
sicslist setatt $pname units $units
|
||||
sicslist setatt $pname long_name $pname
|
||||
sicslist setatt $pname klass derived_parameter
|
||||
# sicslist setatt $pname depends $motor
|
||||
# TODO SICS-198 add feedback support to getset macro generator
|
||||
VarMake ${pname}_status text user
|
||||
${pname}_status "IDLE"
|
||||
}
|
||||
|
||||
foreach {pname motor units} {
|
||||
RotApDeg srce degrees
|
||||
} {
|
||||
::utility::macro::getset float $pname {args} [subst -nocommands {
|
||||
if {[set args] == ""} {
|
||||
return [sicsmsgfmt [SplitReply [$motor]]]
|
||||
} else {
|
||||
set target [lindex [set args] 0]
|
||||
RotApXmm 0
|
||||
RotApZmm 0
|
||||
RotApShape "UNKNOWN"
|
||||
EApXmm 0
|
||||
EApZmm 0
|
||||
EApShape "UNKNOWN"
|
||||
${pname}_status "BUSY"
|
||||
drive $motor \$target
|
||||
set motpos [SplitReply [$motor]]
|
||||
set tolerance [SplitReply [$motor precision] ]
|
||||
if {[expr abs(\$motpos - \$target)] > \$tolerance} {
|
||||
${pname}_status "IDLE"
|
||||
error "ERROR: failed to set $pname target \$target"
|
||||
} else {
|
||||
set size [::optics::EApLookUp \$target "size"]
|
||||
set shape [::optics::EApLookUp \$target "shape"]
|
||||
RotApXmm \$size
|
||||
RotApZmm \$size
|
||||
RotApShape \$shape
|
||||
EApXmm \$size
|
||||
EApZmm \$size
|
||||
EApShape \$shape
|
||||
}
|
||||
${pname}_status "IDLE"
|
||||
}
|
||||
}]
|
||||
sicslist setatt $pname units $units
|
||||
sicslist setatt $pname long_name $pname
|
||||
sicslist setatt $pname klass derived_parameter
|
||||
# sicslist setatt $pname depends $motor
|
||||
# TODO SICS-198 add feedback support to getset macro generator
|
||||
VarMake ${pname}_status text user
|
||||
${pname}_status "IDLE"
|
||||
}
|
||||
################################################################################
|
||||
::hdb::MakeAperture sample_aperture {
|
||||
shape SApShape
|
||||
size {SApXmm SApZmm}
|
||||
coordinate_scheme SApCoordScheme
|
||||
position {SApPosXmm SApPosYmm SApPosZmm}
|
||||
}
|
||||
|
||||
::hdb::MakeAperture entrance_aperture {
|
||||
shape EApShape
|
||||
size {EApXmm EApYmm EApZmm}
|
||||
coordinate_scheme EApCoordScheme
|
||||
position EApPosYmm
|
||||
}
|
||||
|
||||
::hdb::MakeAperture rotary_aperture {
|
||||
shape RotApShape
|
||||
size {RotApXmm RotApZmm}
|
||||
position RotApPosYmm
|
||||
orientation RotApDeg
|
||||
}
|
||||
|
||||
#::hdb::MakeGeometry sample_geometry sample {
|
||||
# coordinate_scheme SampleCoordScheme
|
||||
# position {SamplePosXmm SamplePosYmm SamplePosZmm}
|
||||
# orientation {SampleTiltXDeg SampleTiltYDeg SampleRotDeg}
|
||||
#}
|
||||
|
||||
::hdb::MakeGeometry detector_geometry detector {
|
||||
coordinate_scheme DetCoordScheme
|
||||
position {DetPosXmm DetPosYmm}
|
||||
offset DetPosYOffsetmm
|
||||
}
|
||||
|
||||
::hdb::MakeGeometry collimator_geometry collimator {
|
||||
coordinate_scheme CollCoordScheme
|
||||
position EndFacePosYmm
|
||||
}
|
||||
|
||||
::hdb::MakeGeometry beamstop_geometry beam_stop {
|
||||
shape BSShape
|
||||
position {BSPosXmm BSPosZmm}
|
||||
size {BSXmm BSZmm}
|
||||
}
|
||||
|
||||
# INITIALISE PARAMETERS
|
||||
# The collimation system aperture positions
|
||||
# Reference position is outer wall of velocity selector bunker, ie VelSelPosYmm
|
||||
@@ -281,73 +104,27 @@ array set collapposmm {
|
||||
ap9 19925
|
||||
}
|
||||
|
||||
EndFacePosYmm 20095
|
||||
RotApPosYmm 675
|
||||
EndFacePosY 20095
|
||||
RotApPosY 675
|
||||
|
||||
################################################################################
|
||||
# Check Config
|
||||
namespace eval parameters {
|
||||
set paramlist {
|
||||
AttFactor
|
||||
AttRotDeg
|
||||
BS1
|
||||
BS2
|
||||
BS3
|
||||
BS4
|
||||
BS5
|
||||
BSPosXmm
|
||||
BSPosZmm
|
||||
BSShape
|
||||
BSXmm
|
||||
BSZmm
|
||||
C1
|
||||
C2
|
||||
C3
|
||||
C4
|
||||
C5
|
||||
C6
|
||||
C7
|
||||
C8
|
||||
C9
|
||||
DetPosXmm
|
||||
DetPosYmm
|
||||
DetPosYOffsetmm
|
||||
EApPosYmm
|
||||
BSdiam
|
||||
DetPosYOffset
|
||||
EApPosY
|
||||
EApShape
|
||||
EApShape
|
||||
EApXmm
|
||||
EApYmm
|
||||
EApZmm
|
||||
EndFacePosYmm
|
||||
L1mm
|
||||
L2mm
|
||||
LambdaA
|
||||
LambdaResFWHM_percent
|
||||
Pent
|
||||
Plexmm
|
||||
RotApDeg
|
||||
RotApShape
|
||||
RotApXmm
|
||||
RotApZmm
|
||||
SampleAttributes
|
||||
SampleComments
|
||||
SampleName
|
||||
SampleNum
|
||||
SamplePosXmm
|
||||
SamplePosYmm
|
||||
SamplePosZmm
|
||||
SampleRotDeg
|
||||
SampleTiltXDeg
|
||||
SampleTiltYDeg
|
||||
SampleTitle
|
||||
SApPosXmm
|
||||
SApPosYmm
|
||||
SApPosZmm
|
||||
SApShape
|
||||
SApXmm
|
||||
SApZmm
|
||||
VSdeg
|
||||
VSrpm
|
||||
EApX
|
||||
EApZ
|
||||
EndFacePosY
|
||||
L1
|
||||
L2
|
||||
Plex
|
||||
SamYOffset
|
||||
SamplePosYmm
|
||||
Transmission
|
||||
}
|
||||
}
|
||||
##
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# $Revision: 1.20 $
|
||||
# $Date: 2009-11-24 22:56:48 $
|
||||
# $Revision: 1.20.2.1 $
|
||||
# $Date: 2010-01-11 05:12:40 $
|
||||
# Author: Ferdi Franceschini (ffr@ansto.gov.au)
|
||||
# Last revision by: $Author: ffr $
|
||||
|
||||
@@ -54,14 +54,3 @@ server_init
|
||||
# WARNING: Do not add any code below server_init, if you do SICS may fail to initialise properly.
|
||||
|
||||
# You can add extra-configuration code in ../extraconfig.tcl
|
||||
|
||||
# TODO SICS-198 add feedback support to getset macro generator
|
||||
foreach pname {AttRotDeg RotApDeg} {
|
||||
hmake /instrument/parameters/derived_parameters/$pname/feedback spy none
|
||||
hsetprop /instrument/parameters/derived_parameters/$pname/feedback data false
|
||||
hsetprop /instrument/parameters/derived_parameters/$pname/feedback control true
|
||||
hattach /instrument/parameters/derived_parameters/$pname/feedback ${pname}_status status
|
||||
hsetprop /instrument/parameters/derived_parameters/$pname/feedback/status control true
|
||||
hsetprop /instrument/parameters/derived_parameters/$pname/feedback/status data false
|
||||
hsetprop /instrument/parameters/derived_parameters/$pname/feedback/status nxsave false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user