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
@@ -36,19 +36,13 @@ set instrument_dictionary [subst {
|
|||||||
privilege spy
|
privilege spy
|
||||||
sobj {@any parameter}
|
sobj {@any parameter}
|
||||||
datatype @none
|
datatype @none
|
||||||
property {data true control true nxsave true klass NXparameter type part}
|
property {data true control true nxsave true klass parameters type part}
|
||||||
}
|
}
|
||||||
instrument/parameters/parameters_group {
|
instrument/parameters/parameters_group {
|
||||||
privilege spy
|
privilege spy
|
||||||
datatype @none
|
datatype @none
|
||||||
property {data true control false nxsave false klass @none type nxvgroup nxalias parameters_group}
|
property {data true control false nxsave false klass @none type nxvgroup nxalias parameters_group}
|
||||||
}
|
}
|
||||||
instrument/parameters/derived_parameters {
|
|
||||||
privilege spy
|
|
||||||
sobj {@any derived_parameter}
|
|
||||||
datatype @none
|
|
||||||
property {data true control true nxsave true klass NXderived_parameter type part}
|
|
||||||
}
|
|
||||||
instrument/aperture {
|
instrument/aperture {
|
||||||
privilege spy
|
privilege spy
|
||||||
sobj {@any aperture}
|
sobj {@any aperture}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ set boolean {true false}
|
|||||||
#}
|
#}
|
||||||
|
|
||||||
# SICS OBJECTS MUST PROVIDE THE FOLLOWING INFORMATION
|
# SICS OBJECTS MUST PROVIDE THE FOLLOWING INFORMATION
|
||||||
set sobj_klass_list {@none aperture attenuator collimator command crystal data detector disk_chopper entry environment experiment graphics instrument slits monitor monochromator parameter derived_parameter plc sample scan sensor source user}
|
set sobj_klass_list {@none aperture attenuator collimator command crystal data detector disk_chopper entry environment experiment graphics instrument slits monitor monochromator parameter plc sample scan sensor source user}
|
||||||
set sobj_sicstype_list {chopperadapter environment_controller sicsvariable macro motor configurablevirtualmotor singlecounter histmem nxscript sicsdata scanobject sct_object}
|
set sobj_sicstype_list {chopperadapter environment_controller sicsvariable macro motor configurablevirtualmotor singlecounter histmem nxscript sicsdata scanobject sct_object}
|
||||||
# Different kinds of things are added to the hdb in different ways.
|
# Different kinds of things are added to the hdb in different ways.
|
||||||
# command: This is something a client can run with hset /a/b/c start, it may have parameters and feedback.
|
# command: This is something a client can run with hset /a/b/c start, it may have parameters and feedback.
|
||||||
|
|||||||
@@ -720,10 +720,8 @@ proc ::nexus::_gen_nxdict {hpath dictPath name nxc} {
|
|||||||
set nxclass [hgetpropval /$hpath/$child klass]
|
set nxclass [hgetpropval /$hpath/$child klass]
|
||||||
if {$nxc == "NXentry"} {
|
if {$nxc == "NXentry"} {
|
||||||
::nexus::_gen_nxdict $hpath/$child $dictPath $child $nxclass
|
::nexus::_gen_nxdict $hpath/$child $dictPath $child $nxclass
|
||||||
} elseif {[string range $nxc 0 1] == "NX"} {
|
|
||||||
::nexus::_gen_nxdict $hpath/$child $dictPath/$name,$nxc $child $nxclass
|
|
||||||
} else {
|
} else {
|
||||||
::nexus::_gen_nxdict $hpath/$child $dictPath ${name}_$child $nxclass
|
::nexus::_gen_nxdict $hpath/$child $dictPath/$name,$nxc $child $nxclass
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1336,7 +1334,7 @@ foreach expt $::nexus::exports {
|
|||||||
|
|
||||||
set tmpstr [string map {"$" ""} {$Name: not supported by cvs2svn $}]
|
set tmpstr [string map {"$" ""} {$Name: not supported by cvs2svn $}]
|
||||||
set nx_content_release_tag [lindex $tmpstr [expr [llength $tmpstr] - 1]]
|
set nx_content_release_tag [lindex $tmpstr [expr [llength $tmpstr] - 1]]
|
||||||
set tmpstr [string map {"$" ""} {$Revision: 1.51 $}]
|
set tmpstr [string map {"$" ""} {$Revision: 1.51.2.1 $}]
|
||||||
set nx_content_revision_num [lindex $tmpstr [expr [llength $tmpstr] - 1]]
|
set nx_content_revision_num [lindex $tmpstr [expr [llength $tmpstr] - 1]]
|
||||||
|
|
||||||
#namespace eval data {
|
#namespace eval data {
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ proc selbs {bs {bx "UNDEF"} {bz "UNDEF"}} {
|
|||||||
|
|
||||||
if {$bx == "UNDEF" || $bz == "UNDEF"} {
|
if {$bx == "UNDEF" || $bz == "UNDEF"} {
|
||||||
statemon start selbs
|
statemon start selbs
|
||||||
|
if {[info level] > 1} {statemon start [lindex [info level -1] 0]}
|
||||||
set bsdriving true
|
set bsdriving true
|
||||||
BeamStop -1
|
BeamStop -1
|
||||||
drive $bsmot $bs_target
|
drive $bsmot $bs_target
|
||||||
@@ -99,6 +100,7 @@ proc selbs {bs {bx "UNDEF"} {bz "UNDEF"}} {
|
|||||||
BeamStop $bs
|
BeamStop $bs
|
||||||
set bsdriving false
|
set bsdriving false
|
||||||
statemon stop selbs
|
statemon stop selbs
|
||||||
|
if {[info level] > 1} {statemon stop [lindex [info level -1] 0]}
|
||||||
} else {
|
} else {
|
||||||
if { [string is double $bx] == false } {
|
if { [string is double $bx] == false } {
|
||||||
if { [string is double $bz] == false } {
|
if { [string is double $bz] == false } {
|
||||||
@@ -109,6 +111,7 @@ proc selbs {bs {bx "UNDEF"} {bz "UNDEF"}} {
|
|||||||
set bsz_target [expr {$bz-$Zbsf}]
|
set bsz_target [expr {$bz-$Zbsf}]
|
||||||
|
|
||||||
statemon start selbs
|
statemon start selbs
|
||||||
|
if {[info level] > 1} {statemon start [lindex [info level -1] 0]}
|
||||||
set bsdriving true
|
set bsdriving true
|
||||||
BeamStop -1
|
BeamStop -1
|
||||||
drive $bsmot $bs_target bsx $bsx_target bsz $bsz_target
|
drive $bsmot $bs_target bsx $bsx_target bsz $bsz_target
|
||||||
@@ -116,10 +119,12 @@ proc selbs {bs {bx "UNDEF"} {bz "UNDEF"}} {
|
|||||||
BeamStop $bs
|
BeamStop $bs
|
||||||
set bsdriving false
|
set bsdriving false
|
||||||
statemon stop selbs
|
statemon stop selbs
|
||||||
|
if {[info level] > 1} {statemon stop [lindex [info level -1] 0]}
|
||||||
}
|
}
|
||||||
} msg ] {
|
} msg ] {
|
||||||
if {$bsdriving} {
|
if {$bsdriving} {
|
||||||
statemon stop selbs
|
statemon stop selbs
|
||||||
|
if {[info level] > 1} {statemon stop [lindex [info level -1] 0]}
|
||||||
}
|
}
|
||||||
return -code error $msg
|
return -code error $msg
|
||||||
}
|
}
|
||||||
@@ -136,29 +141,28 @@ namespace eval beamstops {
|
|||||||
|
|
||||||
namespace eval optics {
|
namespace eval optics {
|
||||||
VarMake ::optics::select::section text user
|
VarMake ::optics::select::section text user
|
||||||
VarMake ::optics::polarizer::in text user
|
VarMake ::optics::polarizer::in text user
|
||||||
VarMake ::optics::lens::selection text user
|
VarMake ::optics::lens::selection text user
|
||||||
|
|
||||||
command rotary_attenuator {int=0,15,45,90,180 angle} {
|
command rotary_attenuator {int=0,15,45,90,180 angle} {
|
||||||
AttRotDeg $angle
|
drive att $angle
|
||||||
}
|
}
|
||||||
|
|
||||||
command entrance_aperture {
|
command entrance_aperture {
|
||||||
int=0,45,90,135,180,270 angle
|
int=0,45,90,135,180,270 angle
|
||||||
text=circ,squ,open,rect shape
|
|
||||||
} {
|
} {
|
||||||
RotApDeg $angle
|
drive srce $angle
|
||||||
RotApShape $shape
|
|
||||||
}
|
}
|
||||||
|
|
||||||
command sample_aperture {
|
# TODO Do we need this
|
||||||
int=25,50 size
|
# command sample_aperture {
|
||||||
text=circ,squ,open,rect shape
|
# int=25,50 size
|
||||||
} {
|
# text=circ,squ,open,rect shape
|
||||||
SApXmm $size
|
# } {
|
||||||
SApZmm $size
|
# SApXmm $size
|
||||||
SApShape $shape
|
# SApZmm $size
|
||||||
}
|
# SApShape $shape
|
||||||
|
# }
|
||||||
|
|
||||||
##############################
|
##############################
|
||||||
##
|
##
|
||||||
|
|||||||
@@ -1,30 +1,25 @@
|
|||||||
##
|
# TODO Make readonly getset macro for AttFactor
|
||||||
# @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
|
|
||||||
}
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# @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} {
|
foreach {var lname type priv units klass} {
|
||||||
SApShape SApShape text user none parameter
|
BeamCenterX BeamCenterX float user mm parameter
|
||||||
BSShape BSShape text user none parameter
|
BeamCenterZ BeamCenterZ float user mm parameter
|
||||||
BeamStop BeamStop int user none parameter
|
BeamStop BeamStop int user none parameter
|
||||||
SampleThickness thickness float user mm sample
|
BSdiam BSdiam float user mm parameter
|
||||||
TransmissionFlag transmission_flag int user none sample
|
DetPosYOffset DetPosYOffsetfloat float user mm parameter
|
||||||
magnetic_field magnetic_field float user T sample
|
EApPosY EApPosY float user mm parameter
|
||||||
lambda lambda float user Ao data
|
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
|
::utility::mkVar $var $type $priv $lname true $klass true true
|
||||||
if {$units != "none"} {
|
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"}
|
proc sicsmsgfmt {args} {return "[info level -1] = $args"}
|
||||||
|
|
||||||
::utility::macro::getset float SamplePosYmm {} {
|
::utility::macro::getset float SamplePosYmm {} {
|
||||||
set sy [SplitReply [samy]]
|
set sy [SplitReply [samy]]
|
||||||
set syo [SplitReply [SamYOffsetmm]]
|
set syo [SplitReply [SamYOffset]]
|
||||||
return [sicsmsgfmt [expr {$sy+$syo}]]
|
return [sicsmsgfmt [expr {$sy+$syo}]]
|
||||||
}
|
}
|
||||||
sicslist setatt SamplePosYmm long_name SamplePosYmm
|
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 units mm
|
||||||
sicslist setatt SamplePosYmm depends samy,SamYOffsetmm
|
|
||||||
|
|
||||||
::utility::macro::getset float L1mm {} {
|
::utility::macro::getset float Plex {} {
|
||||||
set efpy [SplitReply [EndFacePosYmm]]
|
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 samposy [SplitReply [SamplePosYmm]]
|
||||||
set eapy [SplitReply [EApPosYmm]]
|
set eapy [SplitReply [EApPosY]]
|
||||||
return [sicsmsgfmt [expr {$efpy + $samposy - $eapy}]]
|
return [sicsmsgfmt [expr {$efpy + $samposy - $eapy}]]
|
||||||
}
|
}
|
||||||
sicslist setatt L1mm long_name L1mm
|
sicslist setatt L1 long_name L1
|
||||||
sicslist setatt L1mm klass derived_parameter
|
sicslist setatt L1 klass parameter
|
||||||
sicslist setatt L1mm units mm
|
sicslist setatt L1 units mm
|
||||||
sicslist setatt L1mm depends EndFacePosYmm,SApPosYmm,EApPosYmm
|
|
||||||
|
|
||||||
::utility::macro::getset float L2mm {} {
|
::utility::macro::getset float L2 {} {
|
||||||
set detpy [SplitReply [DetPosYmm]]
|
set detpy [SplitReply [det]]
|
||||||
set detpyos [SplitReply [DetPosYOffsetmm]]
|
set detpyos [SplitReply [DetPosYOffset]]
|
||||||
set sapy [SplitReply [SamplePosYmm]]
|
set sapy [SplitReply [SamplePosYmm]]
|
||||||
return [sicsmsgfmt [expr {$detpy + $detpyos - $sapy}]]
|
return [sicsmsgfmt [expr {$detpy + $detpyos - $sapy}]]
|
||||||
}
|
}
|
||||||
sicslist setatt L2mm long_name L2mm
|
sicslist setatt L2 long_name L2
|
||||||
sicslist setatt L2mm klass derived_parameter
|
sicslist setatt L2 klass parameter
|
||||||
sicslist setatt L2mm units mm
|
sicslist setatt L2 units mm
|
||||||
sicslist setatt L2mm depends DetPosYmm,DetPosYOffsetmm,SamplePosYmm
|
|
||||||
|
|
||||||
# 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
|
# INITIALISE PARAMETERS
|
||||||
# The collimation system aperture positions
|
# The collimation system aperture positions
|
||||||
# Reference position is outer wall of velocity selector bunker, ie VelSelPosYmm
|
# Reference position is outer wall of velocity selector bunker, ie VelSelPosYmm
|
||||||
@@ -281,73 +104,27 @@ array set collapposmm {
|
|||||||
ap9 19925
|
ap9 19925
|
||||||
}
|
}
|
||||||
|
|
||||||
EndFacePosYmm 20095
|
EndFacePosY 20095
|
||||||
RotApPosYmm 675
|
RotApPosY 675
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Check Config
|
# Check Config
|
||||||
namespace eval parameters {
|
namespace eval parameters {
|
||||||
set paramlist {
|
set paramlist {
|
||||||
AttFactor
|
AttFactor
|
||||||
AttRotDeg
|
BSdiam
|
||||||
BS1
|
DetPosYOffset
|
||||||
BS2
|
EApPosY
|
||||||
BS3
|
|
||||||
BS4
|
|
||||||
BS5
|
|
||||||
BSPosXmm
|
|
||||||
BSPosZmm
|
|
||||||
BSShape
|
|
||||||
BSXmm
|
|
||||||
BSZmm
|
|
||||||
C1
|
|
||||||
C2
|
|
||||||
C3
|
|
||||||
C4
|
|
||||||
C5
|
|
||||||
C6
|
|
||||||
C7
|
|
||||||
C8
|
|
||||||
C9
|
|
||||||
DetPosXmm
|
|
||||||
DetPosYmm
|
|
||||||
DetPosYOffsetmm
|
|
||||||
EApPosYmm
|
|
||||||
EApShape
|
EApShape
|
||||||
EApShape
|
EApX
|
||||||
EApXmm
|
EApZ
|
||||||
EApYmm
|
EndFacePosY
|
||||||
EApZmm
|
L1
|
||||||
EndFacePosYmm
|
L2
|
||||||
L1mm
|
Plex
|
||||||
L2mm
|
SamYOffset
|
||||||
LambdaA
|
SamplePosYmm
|
||||||
LambdaResFWHM_percent
|
Transmission
|
||||||
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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
##
|
##
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# $Revision: 1.20 $
|
# $Revision: 1.20.2.1 $
|
||||||
# $Date: 2009-11-24 22:56:48 $
|
# $Date: 2010-01-11 05:12:40 $
|
||||||
# Author: Ferdi Franceschini (ffr@ansto.gov.au)
|
# Author: Ferdi Franceschini (ffr@ansto.gov.au)
|
||||||
# Last revision by: $Author: ffr $
|
# 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.
|
# 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
|
# 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