Pullback from Taipan 2015-02-19

This commit is contained in:
Douglas Clowes
2015-02-19 10:34:12 +11:00
parent 042119898d
commit fbdd46e258
8 changed files with 2684 additions and 1205 deletions

View File

@ -7,7 +7,6 @@ namespace eval counter {
proc ::counter::transferscript {} {
variable isc_numchannels
bm status
set val [SplitReply [bm1 gettime]]
for {set i 1} {$i <= $isc_numchannels} {incr i} {
append val " [SplitReply [bm$i getcounts] ]"
@ -36,8 +35,8 @@ proc ::counter::ic_initialize {} {
# This must be sourced before the hmm_configuration.tcl until we separate the scan setup from the hmm setup
for {set i 0; set n 1} {$i < $isc_numchannels} {incr i; incr n} {
MakeCounter bm$n anstomonitor [ params host $isc_monitor_address port [lindex $isc_portlist $i] ]
bm$n send scan=1
bm$n send sample=10
bm$n send set scan=1
bm$n send set sample=10
append bm_list "bm$n "
}
}

View File

@ -50,7 +50,7 @@ namespace eval ::scobj::[set vendor]_[set device] {
proc debug_log {debug_level arg_string} {
# write a timestamped string message to a log file for debugging
set debug_threshold 0
set debug_threshold 5
if {$debug_level >= $debug_threshold} {
set fd [open "[set [namespace current]::log_file]" "a"]
set line "[clock format [clock seconds] -format "%T"] $arg_string"

View File

@ -27,6 +27,33 @@ proc ::scobj::west_6100::sics_log {debug_level debug_string} {
} catch_message ]
}
# checklimits function for driveable interface
proc ::scobj::west_6100::checklimits {tc_root} {
set catch_status [ catch {
debug_log ${tc_root} 1 "checklimits tc_root=${tc_root} sct=[sct] target=[sct target]"
set setpoint [sct target]
if { [hpropexists [sct] lowerlimit] } {
set lolimit [sct lowerlimit]
} else {
# lowerlimit not set, use target
set lolimit [sct target]
}
if { [hpropexists [sct] upperlimit] } {
set hilimit [sct upperlimit]
} else {
# upperlimit not set, use target
set hilimit [sct target]
}
# checklimits hook code goes here
if { ${setpoint} < ${lolimit} || ${setpoint} > ${hilimit} } {
sct driving 0
error "setpoint ${setpoint} violates limits (${lolimit}..${hilimit}) on [sct]"
}
return OK
} catch_message ]
handle_exception ${catch_status} ${catch_message}
}
# check function for hset change
proc ::scobj::west_6100::checkrange {tc_root} {
set catch_status [ catch {
@ -53,6 +80,40 @@ proc ::scobj::west_6100::checkrange {tc_root} {
handle_exception ${catch_status} ${catch_message}
}
# checkstatus function for driveable interface
proc ::scobj::west_6100::checkstatus {tc_root} {
set catch_status [ catch {
# checkstatus hook code goes here
if {[sct driving]} {
set sp "[sct target]"
set pv "[hval ${tc_root}/[sct driveable]]"
if { abs(${pv} - ${sp}) <= [sct tolerance] } {
if { [hpropexists [sct] settle_time] } {
if { [hpropexists [sct] settle_time_start] } {
if { [sct utime] - [sct settle_time_start] >= [sct settle_time]} {
sct driving 0
return "idle"
}
return "busy"
} else {
sct utime settle_time_start
return "busy"
}
}
sct driving 0
return "idle"
}
if { [hpropexists [sct] settle_time_start] } {
hdelprop [sct] settle_time_start
}
return "busy"
} else {
return "idle"
}
} catch_message ]
handle_exception ${catch_status} ${catch_message}
}
# function to request the read of a parameter on a device
proc ::scobj::west_6100::getDecimal {tc_root nextState cmd_str} {
set catch_status [ catch {
@ -101,6 +162,18 @@ proc ::scobj::west_6100::getInteger {tc_root nextState cmd_str} {
handle_exception ${catch_status} ${catch_message}
}
# halt function for driveable interface
proc ::scobj::west_6100::halt {tc_root} {
set catch_status [ catch {
debug_log ${tc_root} 1 "halt tc_root=${tc_root} sct=[sct] driving=[sct driving]"
### TODO hset [sct] [hval [sct]]
# halt hook code goes here
sct driving 0
return "idle"
} catch_message ]
handle_exception ${catch_status} ${catch_message}
}
# function to check the write parameter on a device
proc ::scobj::west_6100::noResponse {tc_root} {
set catch_status [ catch {
@ -262,8 +335,8 @@ proc ::scobj::west_6100::wrInteger {tc_root nextState cmd_str} {
handle_exception ${catch_status} ${catch_message}
}
proc ::scobj::west_6100::mkDriver { sct_controller name device_class simulation_flag ip_address tcp_port dev_id } {
::scobj::west_6100::sics_log 9 "::scobj::west_6100::mkDriver ${sct_controller} ${name} ${device_class} ${simulation_flag} ${ip_address} ${tcp_port} ${dev_id}"
proc ::scobj::west_6100::mkDriver { sct_controller name device_class simulation_flag ip_address tcp_port id {datype T} } {
::scobj::west_6100::sics_log 9 "::scobj::west_6100::mkDriver ${sct_controller} ${name} ${device_class} ${simulation_flag} ${ip_address} ${tcp_port} ${id}"
set ns "[namespace current]"
set catch_status [ catch {
@ -358,6 +431,8 @@ proc ::scobj::west_6100::mkDriver { sct_controller name device_class simulation_
hsetprop ${scobj_hpath}/sensor data true
hsetprop ${scobj_hpath}/sensor mutable true
hsetprop ${scobj_hpath}/sensor nxsave true
hsetprop ${scobj_hpath}/sensor permlink data_set "${datype}[format "%02d" ${id}]S01"
hsetprop ${scobj_hpath}/sensor @description "${datype}[format "%02d" ${id}]S01"
hsetprop ${scobj_hpath}/sensor oldval 0.0
hsetprop ${scobj_hpath}/sensor klass "parameter"
hsetprop ${scobj_hpath}/sensor sdsinfo "::nexus::scobj::sdsinfo"
@ -370,14 +445,25 @@ proc ::scobj::west_6100::mkDriver { sct_controller name device_class simulation_
hsetprop ${scobj_hpath}/setpoint write ${ns}::wrDecimal ${scobj_hpath} noResponse {2}
hsetprop ${scobj_hpath}/setpoint noResponse ${ns}::noResponse ${scobj_hpath}
hsetprop ${scobj_hpath}/setpoint check ${ns}::checkrange ${scobj_hpath}
hsetprop ${scobj_hpath}/setpoint driving 0
hsetprop ${scobj_hpath}/setpoint checklimits ${ns}::checklimits ${scobj_hpath}
hsetprop ${scobj_hpath}/setpoint checkstatus ${ns}::checkstatus ${scobj_hpath}
hsetprop ${scobj_hpath}/setpoint halt ${ns}::halt ${scobj_hpath}
hsetprop ${scobj_hpath}/setpoint driveable sensor
hsetprop ${scobj_hpath}/setpoint control true
hsetprop ${scobj_hpath}/setpoint data true
hsetprop ${scobj_hpath}/setpoint mutable true
hsetprop ${scobj_hpath}/setpoint nxsave true
hsetprop ${scobj_hpath}/setpoint lowerlimit 0
hsetprop ${scobj_hpath}/setpoint upperlimit 1600
hsetprop ${scobj_hpath}/setpoint tolerance 1
hsetprop ${scobj_hpath}/setpoint permlink data_set "${datype}[format "%02d" ${id}]SP01"
hsetprop ${scobj_hpath}/setpoint @description "${datype}[format "%02d" ${id}]SP01"
hsetprop ${scobj_hpath}/setpoint oldval 0.0
hsetprop ${scobj_hpath}/setpoint klass "parameter"
hsetprop ${scobj_hpath}/setpoint sdsinfo "::nexus::scobj::sdsinfo"
hsetprop ${scobj_hpath}/setpoint type "part"
hsetprop ${scobj_hpath}/setpoint settle_time "30"
hsetprop ${scobj_hpath}/setpoint type "drivable"
hsetprop ${scobj_hpath}/setpoint nxalias "${name}_setpoint"
hfactory ${scobj_hpath}/w_sp plain user float
@ -471,14 +557,17 @@ proc ::scobj::west_6100::mkDriver { sct_controller name device_class simulation_
hsetprop ${scobj_hpath} klass ${device_class}
hsetprop ${scobj_hpath} data true
hsetprop ${scobj_hpath} debug_threshold 5
if {[string equal -nocase "${simulation_flag}" "false"]} {
ansto_makesctdrive ${name}_setpoint ${scobj_hpath}/setpoint ${scobj_hpath}/sensor ${sct_controller}
}
# mkDriver hook code goes here
} catch_message ]
handle_exception ${catch_status} ${catch_message}
}
proc ::scobj::west_6100::add_driver {name device_class simulation_flag ip_address tcp_port dev_id} {
proc ::scobj::west_6100::add_driver {name device_class simulation_flag ip_address tcp_port id {datype T} } {
set catch_status [ catch {
::scobj::west_6100::sics_log 9 "::scobj::west_6100::add_driver ${name} ${device_class} ${simulation_flag} ${ip_address} ${tcp_port} ${dev_id}"
::scobj::west_6100::sics_log 9 "::scobj::west_6100::add_driver ${name} ${device_class} ${simulation_flag} ${ip_address} ${tcp_port} ${id}"
if {[string equal -nocase "${simulation_flag}" "false"]} {
if {[string equal -nocase "aqadapter" "${ip_address}"]} {
::scobj::west_6100::sics_log 9 "makesctcontroller sct_${name} aqadapter ${tcp_port}"
@ -490,8 +579,8 @@ proc ::scobj::west_6100::add_driver {name device_class simulation_flag ip_addres
} else {
::scobj::west_6100::sics_log 9 "simulation_flag={simulation_flag} => No sctcontroller for west_6100"
}
::scobj::west_6100::sics_log 1 "::scobj::west_6100::mkDriver sct_${name} ${name} ${device_class} ${simulation_flag} ${ip_address} ${tcp_port} ${dev_id}"
::scobj::west_6100::mkDriver sct_${name} ${name} ${device_class} ${simulation_flag} ${ip_address} ${tcp_port} ${dev_id}
::scobj::west_6100::sics_log 1 "::scobj::west_6100::mkDriver sct_${name} ${name} ${device_class} ${simulation_flag} ${ip_address} ${tcp_port} ${id}"
::scobj::west_6100::mkDriver sct_${name} ${name} ${device_class} ${simulation_flag} ${ip_address} ${tcp_port} ${id} $datype
} catch_message ]
handle_exception ${catch_status} ${catch_message}
}
@ -504,9 +593,9 @@ namespace eval ::scobj::west_6100 {
namespace export add_driver
}
proc add_west_6100 {name ip_address tcp_port dev_id} {
proc add_west_6100 {name ip_address tcp_port id {datype T} } {
set simulation_flag "[string tolower [SplitReply [environment_simulation]]]"
::scobj::west_6100::add_driver ${name} "environment" "${simulation_flag}" ${ip_address} ${tcp_port} "${dev_id}"
::scobj::west_6100::add_driver ${name} "environment" "${simulation_flag}" ${ip_address} ${tcp_port} "${id} ${datype}"
}
clientput "file evaluation of sct_west_6100.tcl"
@ -572,7 +661,7 @@ proc ::scobj::west_6100::read_config {} {
}
set arg_list [list]
set missing_list [list]
foreach arg {dev_id} {
foreach arg {id datype} {
if {[dict exists $u $arg]} {
lappend arg_list "[dict get $u $arg]"
} elseif {[dict exists $v $arg]} {

View File

@ -254,25 +254,20 @@ proc waitaction {obj action args} {
publish waitaction user
proc server_set_sobj_attributes {} {
if [ catch {
motor_set_sobj_attributes
::utility::set_motor_attributes
#XXX::utility::set_histomem_attributes
::utility::set_sobj_attributes
::utility::set_envcontrol_attributes
::plc::set_sobj_attributes
::counter::set_sobj_attributes
::nexus::set_sobj_attributes
::histogram_memory::set_sobj_attributes
::utility::set_chopper_attributes
::utility::set_sct_object_attributes
## TODO move the following to the new ansto gumxml.tcl
sicslist setatt getgumtreexml privilege internal
if [ catch { motor_set_sobj_attributes } msg ] { puts $msg }
if [ catch { ::utility::set_motor_attributes } msg ] { puts $msg }
#XXX::utility::set_histomem_attributes
if [ catch { ::utility::set_sobj_attributes } msg ] { puts $msg }
if [ catch { ::utility::set_envcontrol_attributes } msg ] { puts $msg }
if [ catch { ::plc::set_sobj_attributes } msg ] { puts $msg }
if [ catch { ::counter::set_sobj_attributes } msg ] { puts $msg }
if [ catch { ::nexus::set_sobj_attributes } msg ] { puts $msg }
if [ catch { ::histogram_memory::set_sobj_attributes } msg ] { puts $msg }
if [ catch { ::utility::set_chopper_attributes } msg ] { puts $msg }
if [ catch { ::utility::set_sct_object_attributes } msg ] { puts $msg }
## TODO move the following to the new ansto gumxml.tcl
if [ catch { sicslist setatt getgumtreexml privilege internal } msg ] { puts $msg }
clientput "serverport $::serverport"
} message ] {
if {$::errorCode=="NONE"} {return $message}
return -code error $message
}
}
proc server_init {} {
@ -313,6 +308,7 @@ proc server_init {} {
fileeval ../extraconfig.tcl
}
server_set_sobj_attributes
if [ catch { hsetprop /sics/magnet1/magneticFieldTesla permlink data_set B1S1 } msg ] { puts $msg }
buildHDB instrument_dictionary
} message ]

View File

@ -4,9 +4,6 @@
# FastShutter is currently set on Quokka only
#::utility::mkVar FastShutter text manager FastShutter false instrument true false
# SET TO 1 TO USE THE TILT STAGE ie sample phi and chi
set use_tiltstage 0
set animal taipan
set sim_mode [SplitReply [motor_simulation]]
@ -93,6 +90,75 @@ set move_count 100
############################
#
# CHOOSE HERE for sample stage configuration
##########################################
# Set axis_config as follows to use different axis configurations
# 0: normal stage configuration
# 1: Oxford magnet sample stick
set axis_config 0
if { [ info exists ::config_dict ] } {
if { [ dict exists $::config_dict sample_stage implementation ] } {
set implementation [ dict get $::config_dict sample_stage implementation ]
if {$implementation == "normal_sample_stage"} {
set axis_config 0
} elseif {$implementation == "12tmagnet_sample_insert"} {
set axis_config 1
} elseif {$implementation == "eulerian_cradle"} {
set axis_config 2
} else {
set axis_config 0
}
}
if { [ dict exists $::config_dict m2s2 implementation ] } {
set implementation [ dict get $::config_dict m2s2 implementation ]
if {$implementation == "normal_m2s2"} {
set m2_speed 0.4
set m2_accel 0.04
set m2_decel 0.04
set s2_speed 0.8
set s2_accel 0.2
set s2_decel 0.2
} elseif {$implementation == "extended_m2s2"} {
set m2_speed 0.1
set m2_accel 0.025
set m2_decel 0.025
set s2_speed 0.4
set s2_accel 0.1
set s2_decel 0.1
} else {
set m2_speed 0.4
set m2_accel 0.04
set m2_decel 0.04
set s2_speed 0.8
set s2_accel 0.2
set s2_decel 0.2
}
}
}
switch $axis_config {
0 {
set use_s1_stage "true"
set tilt_motor_driver_type $motor_driver_type
fileeval $cfPath(motors)/tilt_configuration.tcl
}
1 {
set magmot s1
set magmot_aq "mc2"
set magmot_axis "A"
set use_s1_stage "false"
set tilt_motor_driver_type asim
fileeval $cfPath(motors)/tilt_configuration.tcl
fileeval $cfPath(motors)/magnet_configuration.tcl
}
2 {
set use_s1_stage "true"
fileeval $cfPath(motors)/euler_configuration.tcl
}
}
# Dummy translation motor, useful for testing scans
Motor dummy_motor asim [params \
@ -138,36 +204,6 @@ dummy_s1 softupperlim 180
dummy_s1 precision 0.02
dummy_s1 home 0
if { [ info exists ::config_dict ] && [ dict get $::config_dict s1_sample_insert enabled ] } {
set samp_stage_name "s1ss"
set tilt_motor_driver_type asim
Motor s1 $motor_driver_type [params \
asyncqueue mc2\
host mc2-taipan\
port pmc2-taipan\
axis A\
units degrees\
hardlowerlim -1440\
hardupperlim 1440\
maxSpeed 1\
maxAccel 1\
maxDecel 1\
stepsPerX [expr 67.0 * 25000 / 360]\
absEnc 1\
absEncHome 31275743\
cntsPerX [expr 67.0 * 8192 / 360]]
s1 part sample
s1 long_name s1
s1 softlowerlim -180
s1 softupperlim 180
s1 home 0
} else {
set samp_stage_name "s1"
set tilt_motor_driver_type $motor_driver_type
}
#if $use_tiltstage {
# mc1: Monochromator crystal selection rotation/Tilt
Motor mtilt $motor_driver_type [params \
asyncqueue mc1\
@ -182,16 +218,14 @@ Motor mtilt $motor_driver_type [params \
maxDecel 1\
stepsPerX 25000\
absEnc 1\
absEncHome 79650\
absEncHome 27115\
cntsPerX 4096]
mtilt part crystal
mtilt long_name mtilt
mtilt softlowerlim -5
mtilt softupperlim 5
mtilt home 0
#}
set atest mtilt
# mc1: Monochromator Linear (Translate)
Motor mtrans $motor_driver_type [params \
@ -207,7 +241,7 @@ Motor mtrans $motor_driver_type [params \
maxDecel 1\
stepsPerX 25000\
absEnc 1\
absEncHome 469388\
absEncHome 859242\
cntsPerX 4096]
mtrans part crystal
mtrans long_name mtrans
@ -249,9 +283,9 @@ m2 motOffDelay 0
m2 backlash_offset -0.5
m2 creep_offset 0.1
m2 creep_precision 0.0
m2 speed 0.4
m2 accel 0.04
m2 decel 0.04
m2 speed $m2_speed
m2 accel $m2_accel
m2 decel $m2_decel
# mc1: Detector Rotate
Motor a2 $motor_driver_type [params \
@ -291,100 +325,9 @@ a2 decel 0.2
############################
#
# mc2: Sample Tilt 1
Motor sgu $tilt_motor_driver_type [params \
asyncqueue mc2\
host mc2-taipan\
port pmc2-taipan\
axis A\
units degrees\
hardlowerlim -13\
hardupperlim 16.5\
maxSpeed 2\
maxAccel 1\
maxDecel 1\
stepsPerX 25000\
absEnc 1\
absEncHome 7745478\
cntsPerX 8192]
sgu part sample
sgu long_name sgu
sgu softlowerlim -13
sgu softupperlim 16.5
sgu home 0
sgu backlash_offset -0.2
# mc2: Sample Tilt 2
Motor sgl $tilt_motor_driver_type [params \
asyncqueue mc2\
host mc2-taipan\
port pmc2-taipan\
axis B\
units degrees\
hardlowerlim -16.5\
hardupperlim 17.5\
maxSpeed 2\
maxAccel 1\
maxDecel 1\
stepsPerX 25000\
absEnc 1\
absEncHome 7499135\
cntsPerX 8192]
sgl part sample
sgl long_name sgl
sgl softlowerlim -16.5
sgl softupperlim 17.5
sgl home 0
sgl backlash_offset -0.2
# mc2: Sample Up Tanslation
Motor stu $motor_driver_type [params \
asyncqueue mc2\
host mc2-taipan\
port pmc2-taipan\
axis C\
units mm\
hardlowerlim -15\
hardupperlim 15\
maxSpeed 2\
maxAccel 1\
maxDecel 1\
stepsPerX -25000\
absEnc 1\
absEncHome 7392933\
cntsPerX -8192]
stu part sample
stu long_name stu
stu softlowerlim -15
stu softupperlim 15
stu home 0.0
stu backlash_offset -0.2
# mc2: Sample Lower Tanslation
Motor stl $motor_driver_type [params \
asyncqueue mc2\
host mc2-taipan\
port pmc2-taipan\
axis D\
units mm\
hardlowerlim -15\
hardupperlim 15\
maxSpeed 2\
maxAccel 1\
maxDecel 1\
stepsPerX 25000\
absEnc 1\
absEncHome 7582773\
cntsPerX 8192]
stl part sample
stl long_name stl
stl softlowerlim -15
stl softupperlim 15
stl home 0.0
stl backlash_offset -0.2
# mc2: Sample Rotate
Motor $samp_stage_name $motor_driver_type [params \
if {$use_s1_stage == "true"} {
Motor s1 $motor_driver_type [params \
asyncqueue mc2\
host mc2-taipan\
port pmc2-taipan\
@ -399,12 +342,14 @@ Motor $samp_stage_name $motor_driver_type [params \
absEnc 1\
absEncHome 10695068\
cntsPerX 4096]
$samp_stage_name part sample
$samp_stage_name long_name $samp_stage_name
$samp_stage_name softlowerlim -170
$samp_stage_name softupperlim 120
$samp_stage_name home 35.997
$samp_stage_name backlash_offset -0.2
s1 part sample
s1 long_name s1
s1 softlowerlim -170
s1 softupperlim 120
s1 home 35.997
s1 backlash_offset -0.2
}
# mc2: Analyser Detector Rotate -- Sample Scattering Angle
# absEncHome 20728908\ at -50
@ -437,9 +382,9 @@ s2 backlash_offset 0.5
s2 blockage_thresh 1
s2 creep_offset 0.015
s2 creep_precision 0.005
s2 speed 0.8
s2 accel 0.2
s2 decel 0.2
s2 speed $s2_speed
s2 accel $s2_accel
s2 decel $s2_decel
# mc2: Analyser Horizontal Focus
Motor ahfocus $motor_driver_type [params \
@ -517,9 +462,10 @@ mvfocus long_name mvfocus
mvfocus softlowerlim 0
mvfocus softupperlim 300
mvfocus home 0.0
mvfocus Blockage_Thresh 2
mvfocus Blockage_Thresh 4
mvfocus Blockage_Check_Interval 2
mvfocus creep_offset 0.2
mvfocus backlash_offset -4
# mc3: Monochromator Horizontal Focus
Motor mhfocus $motor_driver_type [params \
asyncqueue mc3\
@ -528,25 +474,26 @@ Motor mhfocus $motor_driver_type [params \
axis B\
units degrees\
precision 0.2\
hardlowerlim -80\
hardupperlim 240\
hardlowerlim -10\
hardupperlim 280\
maxSpeed 3.6\
maxAccel 1.728\
maxDecel 1.728\
stepsPerX [expr 25000.0 * 50.0 / 360.0]\
absEnc 1\
bias_bits 12\
bias_bias 1540\
absEncHome 2788\
cntsPerX [expr -4096.0 / 360.0]]
bias_bias 1300\
absEncHome 243\
cntsPerX [expr 4096.0 / 360.0]]
mhfocus part crystal
mhfocus long_name mhfocus
mhfocus softlowerlim -75
mhfocus softupperlim 235
mhfocus softlowerlim -10
mhfocus softupperlim 280
mhfocus home 0
mhfocus Blockage_Thresh 2
mhfocus Blockage_Thresh 4
mhfocus Blockage_Check_Interval 2
mhfocus creep_offset 0.2
mhfocus backlash_offset -4
# mc3: Monochromator Rotate
Motor m1 $motor_driver_type [params \
@ -563,13 +510,13 @@ Motor m1 $motor_driver_type [params \
maxDecel 0.25\
stepsPerX 100000\
absEnc 1\
absEncHome 16323070\
absEncHome 16189898\
cntsPerX -2048]
m1 part crystal
m1 long_name m1
m1 softlowerlim 5
m1 softupperlim 40
m1 home 20.45933
m1 home 0
m1 backlash_offset -1.0
# mc4: Analyzer Tilt 1 -- Two-theta Angle

View File

@ -35,21 +35,27 @@ namespace eval anticollider { proc ::anticollider::init {} {} }
#fileeval $cfPath(anticollider)/anticollider.tcl
#fileeval $cfPath(tasmad)/taspub_sics/tasp.tcl
#fileeval $cfPath(tasmad)/taspub_sics/tasscript.tcl
fileeval $cfPath(environment)/sct_agilent_33220A.tcl
fileeval $cfPath(environment)/sct_protek_common.tcl
fileeval $cfPath(environment)/sct_protekmm.tcl
fileeval $cfPath(environment)/temperature/sct_eurotherm_2000.tcl
fileeval $cfPath(environment)/temperature/sct_eurotherm_3200.tcl
fileeval $cfPath(environment)/temperature/sct_julabo_lh45.tcl
fileeval $cfPath(environment)/temperature/sct_lakeshore_336.tcl
fileeval $cfPath(environment)/temperature/sct_ls336.tcl
fileeval $cfPath(environment)/temperature/sct_lakeshore_340.tcl
fileeval $cfPath(environment)/temperature/sct_ls340.tcl
fileeval $cfPath(environment)/temperature/sct_lakeshore_370.tcl
fileeval $cfPath(environment)/temperature/sct_lakeshore_m370.tcl
fileeval $cfPath(environment)/temperature/sct_oxford_itc.tcl
fileeval $cfPath(environment)/temperature/sct_oxford_mercury.tcl
fileeval $cfPath(environment)/temperature/sct_mercury_base.tcl
fileeval $cfPath(environment)/temperature/sct_mercury_temp.tcl
fileeval $cfPath(environment)/temperature/sct_mercury_pres.tcl
fileeval $cfPath(environment)/temperature/sct_mercury_level.tcl
fileeval $cfPath(environment)/temperature/sct_mercury_valve.tcl
fileeval $cfPath(environment)/temperature/west400.tcl
fileeval $cfPath(environment)/temperature/sct_west_6100.tcl
fileeval $cfPath(environment)/he3/sct_he3.tcl
fileeval $cfPath(environment)/magneticField/oxford_labview.tcl
fileeval $cfPath(environment)/magneticField/sct_oxford12tlv.tcl
fileeval $cfPath(beamline)/sct_he3_polanal.tcl
fileeval config/load_setup.tcl
fileeval log.tcl
publish logbook spy
@ -58,12 +64,44 @@ source gumxml.tcl
::utility::mkVar ::anticollider::protect_detector text manager protect_detector false detector true false
::anticollider::protect_detector "true"
if { [ dict exists $::config_dict sample_stage implementation ] } {
set sample_stage [ dict get $::config_dict sample_stage implementation ]
} else {
set sample_stage "normal_sample_stage"
}
switch $sample_stage {
"eulerian_cradle" {
# s1-> eom, sgu -> ephi, sgl -> echi
set OMEGA s1
set PHI ephi
set CHI echi
}
"normal_sample_stage" - default {
set OMEGA s1
set PHI sgu
set CHI sgl
}
}
# init for the tasUB
#make mcv mch acv ach into mvfocus mhfocus avfocus ahfocus when it works
puts "doing tasub"
MakeTasUB tasub m1 m2 mcv mch s1 s2 sgu sgl a1 a2 acv ach
MakeTasUB tasub m1 m2 mvfocus mhfocus $OMEGA s2 $PHI $CHI a1 a2 avfocus ahfocus
tasub mono dd 3.35416
tasub ana dd 3.35416
# NOTE Autofocussing parameters (vbn, hbn) persist in status.tcl
# To override this behaviour you can set them in extraconfig.tcl
tasub mono vb1 102.2
tasub mono vb2 1.78
tasub mono hb1 18.28
tasub mono hb2 60.1
tasub mono hb3 0.951
tasub ana vb1 115
tasub ana vb2 2.13
tasub ana hb1 45.68
tasub ana hb2 105.7
tasub ana hb3 0.945
tasub focusfn energy
tasub autofocus 0
tasub updatetargets
puts "done tasub"
@ -74,6 +112,16 @@ server_init
###########################################
# WARNING: Do not add any code below server_init, if you do SICS may fail to initialise properly.
puts "Making hkl command"
MakeMono mono PG m1 m2
mono dd 3.35416
MakeWaveLength lambda mono
MakeEnergy energy mono
#MakeSingleX singlex
#MakeHKL s2 $OMEGA $PHI $CHI
#MakeHKLMot hkl
#MakeUBcalc ubcalc hkl
# Provide tasmot notifications to GumTree when real motors move
proc m2tasupdate {} {
tasub update
@ -109,7 +157,7 @@ proc a2tasupdate {} {
publish a2tasupdate user
scriptcallback connect m2 MOTEND m2tasupdate
scriptcallback connect s1 MOTEND s1s2tasupdate
scriptcallback connect $OMEGA MOTEND s1s2tasupdate
scriptcallback connect s2 MOTEND s1s2tasupdate
scriptcallback connect a2 MOTEND a2tasupdate

View File

@ -1,156 +1,304 @@
[12tmagnet]
desc = "12 Tesla Oxford Magnet"
driver = "12tmagnet"
enabled = False
group = environment:magnet
id = 11
ip = 10.157.205.3
name = magnetic
port = 55001
type = B
[12tmagnet_setup]
cascade = 12tmagnet,s1_sample_insert,mercury_scpi
cascade = B1:12tmagnet_oxford,sample_stage:12tmagnet_sample_insert,T1:mercury_scpi_01
enabled = False
group = 0setup
[ls336_1]
desc = "tc1: Lakeshore 336 temperature controller"
driver = "ls336"
[CF1]
cascade = T1:CF1_ls340,sample_stage:normal_sample_stage
enabled = False
[Default]
cascade = sample_stage:normal_sample_stage
enabled = True
[B1]
datype = B
enabled = False
group = environment:temperature
id = 1
ip = 10.157.205.28
name = tc1
port = 7777
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
type = T
[ls336_12]
desc = "tc6: Lakeshore 336 temperature controller"
driver = "ls336"
implementation = none
name = magnet1
optype = magnetic_field
[Function_Generator]
datype = V
enabled = False
group = environment:temperature
id = 6
ip = 10.157.205.31
name = tc6
port = 7777
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
type = T
[ls336_2]
desc = "tc2: Lakeshore 336 temperature controller"
driver = "ls336"
id = 1
implementation = none
name = pulser
optype = function_generator
[I1]
datype = I
enabled = False
id = 1
implementation = none
name = curr1
optype = multimeter
[I2]
datype = I
enabled = False
group = environment:temperature
id = 2
ip = 10.157.205.29
implementation = none
name = curr2
optype = multimeter
[T1]
datype = T
enabled = False
id = 1
implementation = none
name = tc1
optype = temperature
[T2]
datype = T
enabled = False
id = 2
implementation = none
name = tc2
port = 7777
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
type = T
[ls336_4]
desc = "tc3: Lakeshore 336 temperature controller"
driver = "ls336"
optype = temperature
[T3]
datype = T
enabled = False
group = environment:temperature
id = 3
ip = 10.157.205.30
implementation = none
name = tc3
port = 7777
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
type = T
[ls336_5]
desc = "tc4: Lakeshore 336 temperature controller"
driver = "ls336"
optype = temperature
[T4]
datype = T
enabled = False
group = environment:temperature
id = 4
ip = 137.157.201.21
implementation = none
name = tc4
port = 7777
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
type = T
[ls336_6]
desc = "tc5: Lakeshore 336 temperature controller"
driver = "ls336"
optype = temperature
[V1]
datype = V
enabled = False
group = environment:temperature
id = 5
ip = 137.157.201.21
name = tc5
port = 7777
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
type = T
id = 1
implementation = none
name = volts1
optype = multimeter
[V2]
datype = V
enabled = False
id = 2
implementation = none
name = volts2
optype = multimeter
[sample_stage]
enabled = Always
implementation = normal_sample_stage
name = sample_stage
optype = motion_axis
[12tmagnet_oxford]
asyncqueue = sct
desc = "12 Tesla Oxford Magnet"
driver = "oxford12tlv"
imptype = magnetic_field
interval = 5
ip = 10.157.205.3
port = 55001
[ls340_1]
desc = "tc13: Lakeshore 340 temperature controller"
[12tmagnet_sample_insert]
desc = "s1 will be redefined as the magnet sample insert rotation."
imptype = motion_axis
[CF1_ls340]
desc = "cf1: Bottom loading cryofurnace"
driver = "ls340"
enabled = False
group = environment:temperature
id = 13
ip = 137.157.203.137
name = tc13
imptype = temperature
ip = 10.157.205.43
port = 4001
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
type = T
[ls370]
desc = "tc8: Lakeshore 370 temperature controller"
driver = "ls370"
enabled = False
group = environment:temperature
id = 8
ip = 137.157.203.137
name = tc8
port = 4003
[agilent_33220A]
asyncqueue = sct
desc = "Function Generator"
driver = agilent_33220A
imptype = function_generator
ip = 10.157.205.16
name = pulser
port = 5025
[ls336_01]
asyncqueue = sct
desc = "Lakeshore 336 temperature controller"
driver = "ls336"
imptype = temperature
ip = 10.157.205.28
port = 7777
terminator = \r\n
tol = 2.0
type = T
tol1 = 1.0
tol2 = 1.0
[mercury_scpi]
desc = "tc9: Oxford Mercury temperature controller in Mercury mode"
driver = "mercury_scpi"
enabled = False
group = environment:temperature
id = 9
[ls336_02]
asyncqueue = sct
desc = "Lakeshore 336 temperature controller"
driver = "ls336"
imptype = temperature
ip = 10.157.205.29
port = 7777
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
[ls336_04]
asyncqueue = sct
desc = "Lakeshore 336 temperature controller"
driver = "ls336"
imptype = temperature
ip = 10.157.205.30
port = 7777
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
[ls336_05]
asyncqueue = sct
desc = "Lakeshore 336 temperature controller"
driver = "ls336"
imptype = temperature
ip = 137.157.201.21
port = 7777
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
[ls336_06]
asyncqueue = sct
desc = "Lakeshore 336 temperature controller"
driver = "ls336"
imptype = temperature
ip = 10.157.205.30
port = 7777
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
[ls336_11]
desc = "Lakeshore 336 temperature controller"
driver = "ls336"
imptype = temperature
ip = 10.157.205.27
port = 7777
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
[ls336_12]
asyncqueue = sct
desc = "Lakeshore 336 temperature controller"
driver = "ls336"
imptype = temperature
ip = 10.157.205.31
port = 7777
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
[ls340_01]
asyncqueue = sct
desc = "Lakeshore 340 temperature controller"
driver = "ls340"
imptype = temperature
ip = 137.157.201.86
port = 4001
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
[ls340_02]
asyncqueue = sct
desc = "Lakeshore 340 temperature controller"
driver = "ls340"
imptype = temperature
ip = 137.157.201.86
port = 4002
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
[ls340_11]
desc = "Lakeshore 340 temperature controller"
driver = "ls340"
imptype = temperature
ip = 137.157.201.86
port = 4001
terminator = \r\n
tol1 = 1.0
tol2 = 1.0
[mercury_scpi_01]
desc = "Oxford Mercury temperature controller with three temperature loops."
driver = "mercury_base"
imptype = temperature
ip = 10.157.205.5
name = tc9
offifon = mercury_itc500
permlink = LT
port = 7020
terminator = \r
tol = 2.0
type = T
terminator = \r\n
tol = 1.0
valve_tol = 2
[s1_sample_insert]
desc = "s1 will be defined as the sample insert rotation. Sample stage will be renamed to s1ss and sgu and sgl will be simulated"
enabled = False
group = motors
[mercury_scpi_02]
desc = "Oxford Mercury temperature controller with four temperature loops and needle valve control"
driver = "mercury_scpi"
imptype = temperature
ip = 10.157.205.47
permlink = LT
port = 7020
terminator = \r\n
tol = 1.0
valve_tol = 2
[west4100]
desc = "tc10: Blue furnace temperature controller"
[normal_sample_stage]
desc = "This is the default sample stage configuration"
imptype = motion_axis
[protek_01]
asyncqueue = sct
desc = "Protek Multimeter"
driver = "protekmm"
imptype = multimeter
ip = 10.157.205.36
port = 4001
[protek_02]
asyncqueue = sct
desc = "Protek Multimeter"
driver = "protekmm"
imptype = multimeter
ip = 10.157.205.37
port = 4001
[vf1_west4100]
asyncqueue = sct
desc = "VF1 Blue furnace temperature controller"
dev_id = 1
driver = "west4100"
enabled = False
group = environment:temperature
id = 10
ip = 10.157.205.19
name = tc10
type = T
imptype = temperature
ip = 10.157.205.24
port = 502
[vf1_west6100]
asyncprotocol = modbus_ap
desc = "VF1 Blue furnace 6100 temperature controller"
dev_id = 1
driver = "west_6100"
imptype = temperature
ip = 10.157.205.24
port = 502
timeout = 2000
[vf2_west4100]
asyncqueue = sct
desc = "VF2 Blue furnace temperature controller"
dev_id = 1
driver = "west4100"
imptype = temperature
ip = 10.157.205.25
port = 502
[vf2_west6100]
asyncprotocol = modbus_ap
desc = "VF2 Blue furnace 6100 temperature controller"
dev_id = 1
driver = "west_6100"
imptype = temperature
ip = 10.157.205.25
port = 502
timeout = 2000