From a76f5d9143fc05deaf5c85498b456836064d67bf Mon Sep 17 00:00:00 2001 From: Ferdi Franceschini Date: Tue, 10 Mar 2015 14:13:11 +1100 Subject: [PATCH] First implementation of an Emu. TODO: Review motor names. --- site_ansto/instrument/emu/MANIFEST.TXT | 7 + .../hipadaba/hipadaba_configuration.tcl | 1 + .../emu/config/hmm/hmm_configuration.tcl | 74 +++++++ ...motion_control_commissioning_checklist.csv | 64 ++++++ .../motors/generated_motor_configuration.tcl | 140 +++++++++++++ .../emu/config/motors/genmotconf_errors.log | 5 + .../emu/config/motors/genmotconf_report.log | 198 ++++++++++++++++++ .../emu/config/motors/motor_configuration.tcl | 2 + .../emu/config/motors/sicsmot_attlist.csv | 28 +++ .../instrument/emu/config/nexus/nxscripts.tcl | 4 + .../instrument/emu/emu_configuration.tcl | 37 ++++ site_ansto/instrument/emu/hostport_config.tcl | 35 ++++ .../instrument/emu/hostport_config_test.tcl | 36 ++++ site_ansto/instrument/emu/runsics_def.py | 3 + site_ansto/instrument/emu/sics_simulation.tcl | 23 ++ 15 files changed, 657 insertions(+) create mode 100644 site_ansto/instrument/emu/MANIFEST.TXT create mode 100644 site_ansto/instrument/emu/config/hipadaba/hipadaba_configuration.tcl create mode 100644 site_ansto/instrument/emu/config/hmm/hmm_configuration.tcl create mode 100755 site_ansto/instrument/emu/config/motors/Emu_motion_control_commissioning_checklist.csv create mode 100644 site_ansto/instrument/emu/config/motors/generated_motor_configuration.tcl create mode 100644 site_ansto/instrument/emu/config/motors/genmotconf_errors.log create mode 100644 site_ansto/instrument/emu/config/motors/genmotconf_report.log create mode 100644 site_ansto/instrument/emu/config/motors/motor_configuration.tcl create mode 100644 site_ansto/instrument/emu/config/motors/sicsmot_attlist.csv create mode 100644 site_ansto/instrument/emu/config/nexus/nxscripts.tcl create mode 100644 site_ansto/instrument/emu/emu_configuration.tcl create mode 100644 site_ansto/instrument/emu/hostport_config.tcl create mode 100644 site_ansto/instrument/emu/hostport_config_test.tcl create mode 100644 site_ansto/instrument/emu/runsics_def.py create mode 100644 site_ansto/instrument/emu/sics_simulation.tcl diff --git a/site_ansto/instrument/emu/MANIFEST.TXT b/site_ansto/instrument/emu/MANIFEST.TXT new file mode 100644 index 00000000..7de35bf0 --- /dev/null +++ b/site_ansto/instrument/emu/MANIFEST.TXT @@ -0,0 +1,7 @@ +runsics_def.py +emu_configuration.tcl +config +util +hostport_config.tcl +hostport_config_test.tcl +sics_simulation.tcl diff --git a/site_ansto/instrument/emu/config/hipadaba/hipadaba_configuration.tcl b/site_ansto/instrument/emu/config/hipadaba/hipadaba_configuration.tcl new file mode 100644 index 00000000..3aaa4d83 --- /dev/null +++ b/site_ansto/instrument/emu/config/hipadaba/hipadaba_configuration.tcl @@ -0,0 +1 @@ +source $cfPath(hipadaba)/hipadaba_configuration_common.tcl diff --git a/site_ansto/instrument/emu/config/hmm/hmm_configuration.tcl b/site_ansto/instrument/emu/config/hmm/hmm_configuration.tcl new file mode 100644 index 00000000..2826e9fc --- /dev/null +++ b/site_ansto/instrument/emu/config/hmm/hmm_configuration.tcl @@ -0,0 +1,74 @@ +#TODO Set emu hmm parameters, this is the bilby config. +fileeval $cfPath(hmm)/hmm_configuration_common_1.tcl +set sim_mode [SplitReply [hmm_simulation]] + +proc ::histogram_memory::init_OAT_TABLE {} { + if [ catch { + # We don't need a MAX_CHAN parameter for time because the time channel + # is scaled by calling the ::histogram_memory::clock_scale function + OAT_TABLE X -setdata MAX_CHAN 240 + OAT_TABLE Y -setdata MAX_CHAN 256 + OAT_TABLE X -setdata BMIN -0.5 + OAT_TABLE X -setdata BMAX 239.5 + OAT_TABLE Y -setdata BMIN -0.5 + OAT_TABLE Y -setdata BMAX 255.5 + + set clock_scale 1000 + set freq 50 + hmm configure fat_clock_scale $clock_scale + hmm configure fat_frame_frequency $freq + hmm configure fat_frame_source INTERNAL + + OAT_TABLE -set X { 239.5 238.5 } NXC 240 Y { -0.5 2.5 } NYC 86 T { 0 20000 } NTC 1 + } message ] { + return -code error $message + } +} +proc ::histogram_memory::init_FAT_TABLE {} { + hmm configure FAT_EVENT_OUTPUT_STREAMING ENABLE +} +proc ::histogram_memory::pre_count {} {} +proc ::histogram_memory::post_count {} {} +proc ::histogram_memory::isc_initialize {} { + # Instrument specific X and Y dimension names + variable INST_NXC "oat_nxc_eff" + variable INST_NYC "oat_nyc_eff" + + if [ catch { + ::histogram_memory::init_hmm_objs + if {$::sim_mode == "true"} { + hmm configure oat_ntc_eff 1 + hmm configure $INST_NYC 86 + hmm configure $INST_NXC 240 + } + BAT_TABLE -init + CAT_TABLE -init + SAT_TABLE -init + OAT_TABLE -init + FAT_TABLE -init + ::histogram_memory::ic_initialize + + detector_active_height_mm [expr 5.08 * 86] + detector_active_width_mm [expr 5.08 * 240] + detector_active_height_mm lock + detector_active_width_mm lock + + # hmm configure FAT_SIMULATED_EVENT_Y0 $y_bb0 + # hmm configure FAT_SIMULATED_EVENT_Y1 $ybbmax + # hmm configure FAT_SIMULATED_EVENT_X0 $x_bb0 + # hmm configure FAT_SIMULATED_EVENT_X1 $xbbmax + ::histogram_memory::init_OAT_TABLE + ::histogram_memory::init_FAT_TABLE + ::histogram_memory::upload_config Filler_defaults + + set ::histogram_memory::histmem_axes(HOR) /instrument/detector/x_pixel_offset + set ::histogram_memory::histmem_axes(VER) /instrument/detector/y_pixel_offset + } message ] { + return -code error $message + } +} + +proc histmem {cmd args} { + eval "_histmem $cmd $args" +} +publish histmem user diff --git a/site_ansto/instrument/emu/config/motors/Emu_motion_control_commissioning_checklist.csv b/site_ansto/instrument/emu/config/motors/Emu_motion_control_commissioning_checklist.csv new file mode 100755 index 00000000..acc9ddd5 --- /dev/null +++ b/site_ansto/instrument/emu/config/motors/Emu_motion_control_commissioning_checklist.csv @@ -0,0 +1,64 @@ +mtth2_axis,F +mtth2_axis_number,14 +mtth2_cnts_per_x,8192 +mtth2_description,2nd Reflector rotation +mtth2_dflt_accel_steps,25000 +mtth2_dflt_decel_steps,25000 +mtth2_dflt_speed_steps,100000 +mtth2_fwd_enc_lim,293114 +mtth2_maxaccel,0.4 +mtth2_maxdecel,0.4 +mtth2_maxspeed,0.4 +mtth2_mc,mc2 +mtth2_part,instrument +mtth2_rev_enc_lim,23251 +mtth2_steps_per_x,500000 +mtth2_units,degrees +pmchi_axis,A +pmchi_axis_number,1 +pmchi_cnts_per_x,2046 +pmchi_description,Pre Mono Tilt +pmchi_dflt_accel_steps,50000 +pmchi_dflt_decel_steps,50000 +pmchi_dflt_speed_steps,50000 +pmchi_fwd_enc_lim,4181460 +pmchi_maxaccel,0.1 +pmchi_maxdecel,0.1 +pmchi_maxspeed,0.1 +pmchi_mc,mc1 +pmchi_part,instrument +pmchi_rev_enc_lim,4210266 +pmchi_steps_per_x,500000 +pmchi_units,degrees +pmth_axis,A +pmth_axis_number,9 +pmth_cnts_per_x,93206.7555555556 +pmth_description,Pre Mono Rotation +pmth_dflt_accel_steps,50000 +pmth_dflt_decel_steps,50000 +pmth_dflt_speed_steps,50000 +pmth_fwd_enc_lim,19270709 +pmth_maxaccel,0.1 +pmth_maxdecel,0.1 +pmth_maxspeed,0.1 +pmth_mc,mc2 +pmth_part,instrument +pmth_rev_enc_lim,20287178 +pmth_steps_per_x,500000 +pmth_units,degrees +pmx_axis,B +pmx_axis_number,2 +pmx_cnts_per_x,10241 +pmx_description,Pre Mono Translation +pmx_dflt_accel_steps,50000 +pmx_dflt_decel_steps,50000 +pmx_dflt_speed_steps,50000 +pmx_fwd_enc_lim,4131464 +pmx_maxaccel,0.4 +pmx_maxdecel,0.4 +pmx_maxspeed,0.4 +pmx_mc,mc1 +pmx_part,instrument +pmx_rev_enc_lim,4275488 +pmx_steps_per_x,125000 +pmx_units,mm diff --git a/site_ansto/instrument/emu/config/motors/generated_motor_configuration.tcl b/site_ansto/instrument/emu/config/motors/generated_motor_configuration.tcl new file mode 100644 index 00000000..8b1b7a98 --- /dev/null +++ b/site_ansto/instrument/emu/config/motors/generated_motor_configuration.tcl @@ -0,0 +1,140 @@ +#### SICS motor driver configuration #### +# Generated by: ../../../util/genmotconf.tcl Emu_motion_control_commissioning_checklist.csv sicsmot_attlist.csv +# Generated from the following files, +# file1: Emu_motion_control_commissioning_checklist.csv +# file2: sicsmot_attlist.csv + +# Load motor driver configuration parameters +set flist [list\ + {Emu_motion_control_commissioning_checklist.csv}\ + {sicsmot_attlist.csv}\ + ] + +foreach fattfile $flist { + if [catch { + set fattpath config/motors/$fattfile + set fh [open $fattpath RDONLY] + while {[gets $fh line] >= 0} { + eval "set [split $line {,}]" + } + close $fh + } msg] { + clientput ERROR: $msg + } +} + + +set sim_mode [SplitReply [motor_simulation]] + +if {$sim_mode == true} { + set motor_driver_type asim +} else { + set motor_driver_type DMC2280 +} + +if {$sim_mode == false} { + MakeAsyncQueue mc1 DMC2280 [dict get $::MOTOR_HOSTPORT MC1 HOST] [dict get $::MOTOR_HOSTPORT MC1 PORT] + MakeAsyncQueue mc2 DMC2280 [dict get $::MOTOR_HOSTPORT MC2 HOST] [dict get $::MOTOR_HOSTPORT MC2 PORT] +} + +# mtth2 configuration +# 2nd Reflector rotation +# Axis number 14 +Motor mtth2 $motor_driver_type [params\ + asyncqueue mc2\ + axis F\ + units $mtth2_units\ + hardlowerlim $mtth2_rev_lim\ + hardupperlim $mtth2_fwd_lim\ + maxSpeed $mtth2_maxspeed\ + maxAccel $mtth2_maxaccel\ + maxDecel $mtth2_maxdecel\ + stepsPerX $mtth2_steps_per_x\ + absEnc 1\ + absEncHome $mtth2_absenchome\ + cntsPerX $mtth2_cnts_per_x] +mtth2 softlowerlim $mtth2_rev_lim +mtth2 softupperlim $mtth2_fwd_lim +mtth2 home $mtth2_home +mtth2 part $mtth2_part +mtth2 long_name mtth2 +mtth2 speed $mtth2_speed +mtth2 accel $mtth2_accel +mtth2 decel $mtth2_decel + +# pmchi configuration +# Pre Mono Tilt +# Axis number 1 +Motor pmchi $motor_driver_type [params\ + asyncqueue mc1\ + axis A\ + units $pmchi_units\ + hardlowerlim $pmchi_rev_lim\ + hardupperlim $pmchi_fwd_lim\ + maxSpeed $pmchi_maxspeed\ + maxAccel $pmchi_maxaccel\ + maxDecel $pmchi_maxdecel\ + stepsPerX $pmchi_steps_per_x\ + absEnc 1\ + absEncHome $pmchi_absenchome\ + cntsPerX $pmchi_cnts_per_x] +pmchi softlowerlim $pmchi_rev_lim +pmchi softupperlim $pmchi_fwd_lim +pmchi home $pmchi_home +pmchi part $pmchi_part +pmchi long_name pmchi +pmchi speed $pmchi_speed +pmchi accel $pmchi_accel +pmchi decel $pmchi_decel + +# pmth configuration +# Pre Mono Rotation +# Axis number 9 +Motor pmth $motor_driver_type [params\ + asyncqueue mc2\ + axis A\ + units $pmth_units\ + hardlowerlim $pmth_rev_lim\ + hardupperlim $pmth_fwd_lim\ + maxSpeed $pmth_maxspeed\ + maxAccel $pmth_maxaccel\ + maxDecel $pmth_maxdecel\ + stepsPerX $pmth_steps_per_x\ + absEnc 1\ + absEncHome $pmth_absenchome\ + cntsPerX $pmth_cnts_per_x] +pmth softlowerlim $pmth_rev_lim +pmth softupperlim $pmth_fwd_lim +pmth home $pmth_home +pmth part $pmth_part +pmth long_name pmth +pmth speed $pmth_speed +pmth accel $pmth_accel +pmth decel $pmth_decel + +# pmx configuration +# Pre Mono Translation +# Axis number 2 +Motor pmx $motor_driver_type [params\ + asyncqueue mc1\ + axis B\ + units $pmx_units\ + hardlowerlim $pmx_rev_lim\ + hardupperlim $pmx_fwd_lim\ + maxSpeed $pmx_maxspeed\ + maxAccel $pmx_maxaccel\ + maxDecel $pmx_maxdecel\ + stepsPerX $pmx_steps_per_x\ + absEnc 1\ + absEncHome $pmx_absenchome\ + cntsPerX $pmx_cnts_per_x] +pmx softlowerlim $pmx_rev_lim +pmx softupperlim $pmx_fwd_lim +pmx home $pmx_home +pmx part $pmx_part +pmx long_name pmx +pmx speed $pmx_speed +pmx accel $pmx_accel +pmx decel $pmx_decel + +proc motor_set_sobj_attributes {} {} diff --git a/site_ansto/instrument/emu/config/motors/genmotconf_errors.log b/site_ansto/instrument/emu/config/motors/genmotconf_errors.log new file mode 100644 index 00000000..0401a963 --- /dev/null +++ b/site_ansto/instrument/emu/config/motors/genmotconf_errors.log @@ -0,0 +1,5 @@ +0 ERRORS IN PARSE STAGE 'Emu_motion_control_commissioning_checklist.csv'. PROCESSED 64 lines +0 ERRORS IN PARSE STAGE 'sicsmot_attlist.csv'. PROCESSED 28 lines +GENERATE MOTOR CONFIGURATIONS +Required attributes: axis fwd_lim home maxaccel maxdecel maxspeed mc part rev_lim steps_per_x units +Found 0 incomplete motor configurations diff --git a/site_ansto/instrument/emu/config/motors/genmotconf_report.log b/site_ansto/instrument/emu/config/motors/genmotconf_report.log new file mode 100644 index 00000000..f7e694f7 --- /dev/null +++ b/site_ansto/instrument/emu/config/motors/genmotconf_report.log @@ -0,0 +1,198 @@ + +PARSE 'Emu_motion_control_commissioning_checklist.csv' +Processing 'mtth2_axis,F' +Add ::mtth2_attarr(axis) = F +Processing 'mtth2_axis_number,14' +Add ::mtth2_attarr(axis_number) = 14 +Processing 'mtth2_cnts_per_x,8192' +Add ::mtth2_encatts(cnts_per_x) = 8192 +Processing 'mtth2_description,2nd Reflector rotation' +Add ::mtth2_attarr(description) = 2nd Reflector rotation +Processing 'mtth2_dflt_accel_steps,25000' +Add ::mtth2_attarr(dflt_accel_steps) = 25000 +Processing 'mtth2_dflt_decel_steps,25000' +Add ::mtth2_attarr(dflt_decel_steps) = 25000 +Processing 'mtth2_dflt_speed_steps,100000' +Add ::mtth2_attarr(dflt_speed_steps) = 100000 +Processing 'mtth2_fwd_enc_lim,293114' +Add ::mtth2_encatts(fwd_enc_lim) = 293114 +Processing 'mtth2_maxaccel,0.4' +Add ::mtth2_attarr(maxaccel) = 0.4 +Processing 'mtth2_maxdecel,0.4' +Add ::mtth2_attarr(maxdecel) = 0.4 +Processing 'mtth2_maxspeed,0.4' +Add ::mtth2_attarr(maxspeed) = 0.4 +Processing 'mtth2_mc,mc2' +Add ::mtth2_attarr(mc) = mc2 +Processing 'mtth2_part,instrument' +Add ::mtth2_attarr(part) = instrument +Processing 'mtth2_rev_enc_lim,23251' +Add ::mtth2_encatts(rev_enc_lim) = 23251 +Processing 'mtth2_steps_per_x,500000' +Add ::mtth2_attarr(steps_per_x) = 500000 +Processing 'mtth2_units,degrees' +Add ::mtth2_attarr(units) = degrees +Processing 'pmchi_axis,A' +Add ::pmchi_attarr(axis) = A +Processing 'pmchi_axis_number,1' +Add ::pmchi_attarr(axis_number) = 1 +Processing 'pmchi_cnts_per_x,2046' +Add ::pmchi_encatts(cnts_per_x) = 2046 +Processing 'pmchi_description,Pre Mono Tilt' +Add ::pmchi_attarr(description) = Pre Mono Tilt +Processing 'pmchi_dflt_accel_steps,50000' +Add ::pmchi_attarr(dflt_accel_steps) = 50000 +Processing 'pmchi_dflt_decel_steps,50000' +Add ::pmchi_attarr(dflt_decel_steps) = 50000 +Processing 'pmchi_dflt_speed_steps,50000' +Add ::pmchi_attarr(dflt_speed_steps) = 50000 +Processing 'pmchi_fwd_enc_lim,4181460' +Add ::pmchi_encatts(fwd_enc_lim) = 4181460 +Processing 'pmchi_maxaccel,0.1' +Add ::pmchi_attarr(maxaccel) = 0.1 +Processing 'pmchi_maxdecel,0.1' +Add ::pmchi_attarr(maxdecel) = 0.1 +Processing 'pmchi_maxspeed,0.1' +Add ::pmchi_attarr(maxspeed) = 0.1 +Processing 'pmchi_mc,mc1' +Add ::pmchi_attarr(mc) = mc1 +Processing 'pmchi_part,instrument' +Add ::pmchi_attarr(part) = instrument +Processing 'pmchi_rev_enc_lim,4210266' +Add ::pmchi_encatts(rev_enc_lim) = 4210266 +Processing 'pmchi_steps_per_x,500000' +Add ::pmchi_attarr(steps_per_x) = 500000 +Processing 'pmchi_units,degrees' +Add ::pmchi_attarr(units) = degrees +Processing 'pmth_axis,A' +Add ::pmth_attarr(axis) = A +Processing 'pmth_axis_number,9' +Add ::pmth_attarr(axis_number) = 9 +Processing 'pmth_cnts_per_x,93206.7555555556' +Add ::pmth_encatts(cnts_per_x) = 93206.7555555556 +Processing 'pmth_description,Pre Mono Rotation' +Add ::pmth_attarr(description) = Pre Mono Rotation +Processing 'pmth_dflt_accel_steps,50000' +Add ::pmth_attarr(dflt_accel_steps) = 50000 +Processing 'pmth_dflt_decel_steps,50000' +Add ::pmth_attarr(dflt_decel_steps) = 50000 +Processing 'pmth_dflt_speed_steps,50000' +Add ::pmth_attarr(dflt_speed_steps) = 50000 +Processing 'pmth_fwd_enc_lim,19270709' +Add ::pmth_encatts(fwd_enc_lim) = 19270709 +Processing 'pmth_maxaccel,0.1' +Add ::pmth_attarr(maxaccel) = 0.1 +Processing 'pmth_maxdecel,0.1' +Add ::pmth_attarr(maxdecel) = 0.1 +Processing 'pmth_maxspeed,0.1' +Add ::pmth_attarr(maxspeed) = 0.1 +Processing 'pmth_mc,mc2' +Add ::pmth_attarr(mc) = mc2 +Processing 'pmth_part,instrument' +Add ::pmth_attarr(part) = instrument +Processing 'pmth_rev_enc_lim,20287178' +Add ::pmth_encatts(rev_enc_lim) = 20287178 +Processing 'pmth_steps_per_x,500000' +Add ::pmth_attarr(steps_per_x) = 500000 +Processing 'pmth_units,degrees' +Add ::pmth_attarr(units) = degrees +Processing 'pmx_axis,B' +Add ::pmx_attarr(axis) = B +Processing 'pmx_axis_number,2' +Add ::pmx_attarr(axis_number) = 2 +Processing 'pmx_cnts_per_x,10241' +Add ::pmx_encatts(cnts_per_x) = 10241 +Processing 'pmx_description,Pre Mono Translation' +Add ::pmx_attarr(description) = Pre Mono Translation +Processing 'pmx_dflt_accel_steps,50000' +Add ::pmx_attarr(dflt_accel_steps) = 50000 +Processing 'pmx_dflt_decel_steps,50000' +Add ::pmx_attarr(dflt_decel_steps) = 50000 +Processing 'pmx_dflt_speed_steps,50000' +Add ::pmx_attarr(dflt_speed_steps) = 50000 +Processing 'pmx_fwd_enc_lim,4131464' +Add ::pmx_encatts(fwd_enc_lim) = 4131464 +Processing 'pmx_maxaccel,0.4' +Add ::pmx_attarr(maxaccel) = 0.4 +Processing 'pmx_maxdecel,0.4' +Add ::pmx_attarr(maxdecel) = 0.4 +Processing 'pmx_maxspeed,0.4' +Add ::pmx_attarr(maxspeed) = 0.4 +Processing 'pmx_mc,mc1' +Add ::pmx_attarr(mc) = mc1 +Processing 'pmx_part,instrument' +Add ::pmx_attarr(part) = instrument +Processing 'pmx_rev_enc_lim,4275488' +Add ::pmx_encatts(rev_enc_lim) = 4275488 +Processing 'pmx_steps_per_x,125000' +Add ::pmx_attarr(steps_per_x) = 125000 +Processing 'pmx_units,mm' +Add ::pmx_attarr(units) = mm +CONTROLLER USAGE COUNT: mc1 count=2; mc2 count=2; +PARSED 64 lines in 'Emu_motion_control_commissioning_checklist.csv'; failed 0 lines + +PARSE 'sicsmot_attlist.csv' +Processing 'mtth2_absenchome,23251.0000' +Add ::mtth2_attarr(absenchome) = 23251.0000 +Processing 'mtth2_accel,0.0500' +Add ::mtth2_attarr(accel) = 0.0500 +Processing 'mtth2_decel,0.0500' +Add ::mtth2_attarr(decel) = 0.0500 +Processing 'mtth2_fwd_lim,32.9423' +Add ::mtth2_attarr(fwd_lim) = 32.9423 +Processing 'mtth2_home,0.0000' +Add ::mtth2_attarr(home) = 0.0000 +Processing 'mtth2_rev_lim,0.0000' +Add ::mtth2_attarr(rev_lim) = 0.0000 +Processing 'mtth2_speed,0.2000' +Add ::mtth2_attarr(speed) = 0.2000 +Processing 'pmchi_absenchome,4210266.0000' +Add ::pmchi_attarr(absenchome) = 4210266.0000 +Processing 'pmchi_accel,0.1000' +Add ::pmchi_attarr(accel) = 0.1000 +Processing 'pmchi_decel,0.1000' +Add ::pmchi_attarr(decel) = 0.1000 +Processing 'pmchi_fwd_lim,-14.0792' +Add ::pmchi_attarr(fwd_lim) = -14.0792 +Processing 'pmchi_home,0.0000' +Add ::pmchi_attarr(home) = 0.0000 +Processing 'pmchi_rev_lim,0.0000' +Add ::pmchi_attarr(rev_lim) = 0.0000 +Processing 'pmchi_speed,0.1000' +Add ::pmchi_attarr(speed) = 0.1000 +Processing 'pmth_absenchome,20287178.0000' +Add ::pmth_attarr(absenchome) = 20287178.0000 +Processing 'pmth_accel,0.1000' +Add ::pmth_attarr(accel) = 0.1000 +Processing 'pmth_decel,0.1000' +Add ::pmth_attarr(decel) = 0.1000 +Processing 'pmth_fwd_lim,-10.9055' +Add ::pmth_attarr(fwd_lim) = -10.9055 +Processing 'pmth_home,0.0000' +Add ::pmth_attarr(home) = 0.0000 +Processing 'pmth_rev_lim,0.0000' +Add ::pmth_attarr(rev_lim) = 0.0000 +Processing 'pmth_speed,0.1000' +Add ::pmth_attarr(speed) = 0.1000 +Processing 'pmx_absenchome,4275488.0000' +Add ::pmx_attarr(absenchome) = 4275488.0000 +Processing 'pmx_accel,0.4000' +Add ::pmx_attarr(accel) = 0.4000 +Processing 'pmx_decel,0.4000' +Add ::pmx_attarr(decel) = 0.4000 +Processing 'pmx_fwd_lim,-14.0635' +Add ::pmx_attarr(fwd_lim) = -14.0635 +Processing 'pmx_home,0.0000' +Add ::pmx_attarr(home) = 0.0000 +Processing 'pmx_rev_lim,0.0000' +Add ::pmx_attarr(rev_lim) = 0.0000 +Processing 'pmx_speed,0.4000' +Add ::pmx_attarr(speed) = 0.4000 +CONTROLLER USAGE COUNT: mc1 count=2; mc2 count=2; +PARSED 28 lines in 'sicsmot_attlist.csv'; failed 0 lines +GENERATE MOTOR CONFIGURATIONS +Configured mtth2 +Configured pmchi +Configured pmth +Configured pmx +Generated 4 motor driver configurations diff --git a/site_ansto/instrument/emu/config/motors/motor_configuration.tcl b/site_ansto/instrument/emu/config/motors/motor_configuration.tcl new file mode 100644 index 00000000..dddd2696 --- /dev/null +++ b/site_ansto/instrument/emu/config/motors/motor_configuration.tcl @@ -0,0 +1,2 @@ +# @file Loads the generated_motor_configuration.tcl file which is created by util/genmotconf.tcl from CSV files. +fileeval config/motors/generated_motor_configuration.tcl diff --git a/site_ansto/instrument/emu/config/motors/sicsmot_attlist.csv b/site_ansto/instrument/emu/config/motors/sicsmot_attlist.csv new file mode 100644 index 00000000..98cee0b0 --- /dev/null +++ b/site_ansto/instrument/emu/config/motors/sicsmot_attlist.csv @@ -0,0 +1,28 @@ +mtth2_absenchome,23251.0000 +mtth2_accel,0.0500 +mtth2_decel,0.0500 +mtth2_fwd_lim,32.9423 +mtth2_home,0.0000 +mtth2_rev_lim,0.0000 +mtth2_speed,0.2000 +pmchi_absenchome,4210266.0000 +pmchi_accel,0.1000 +pmchi_decel,0.1000 +pmchi_fwd_lim,-14.0792 +pmchi_home,0.0000 +pmchi_rev_lim,0.0000 +pmchi_speed,0.1000 +pmth_absenchome,20287178.0000 +pmth_accel,0.1000 +pmth_decel,0.1000 +pmth_fwd_lim,-10.9055 +pmth_home,0.0000 +pmth_rev_lim,0.0000 +pmth_speed,0.1000 +pmx_absenchome,4275488.0000 +pmx_accel,0.4000 +pmx_decel,0.4000 +pmx_fwd_lim,-14.0635 +pmx_home,0.0000 +pmx_rev_lim,0.0000 +pmx_speed,0.4000 diff --git a/site_ansto/instrument/emu/config/nexus/nxscripts.tcl b/site_ansto/instrument/emu/config/nexus/nxscripts.tcl new file mode 100644 index 00000000..5f4166ab --- /dev/null +++ b/site_ansto/instrument/emu/config/nexus/nxscripts.tcl @@ -0,0 +1,4 @@ +source $cfPath(nexus)/nxscripts_common_1.tcl +proc ::nexus::isc_initialize {} { + ::nexus::ic_initialize +} diff --git a/site_ansto/instrument/emu/emu_configuration.tcl b/site_ansto/instrument/emu/emu_configuration.tcl new file mode 100644 index 00000000..0dd2b104 --- /dev/null +++ b/site_ansto/instrument/emu/emu_configuration.tcl @@ -0,0 +1,37 @@ + +# Author: Ferdi Franceschini (ffr@ansto.gov.au) + +# Required by server_config.tcl +VarMake Instrument Text Internal +Instrument Emu +Instrument lock + +#START SERVER CONFIGURATION SECTION +source util/dmc2280/dmc2280_util.tcl +source server_config.tcl +MakeDrive +#END SERVER CONFIGURATION SECTION + +######################################## +# INSTRUMENT SPECIFIC CONFIGURATION + +fileeval $cfPath(motors)/motor_configuration.tcl + + +fileeval $cfPath(source)/source.tcl +source $cfPath(hipadaba)/hipadaba_configuration.tcl +fileeval $cfPath(plc)/plc.tcl +fileeval $cfPath(counter)/counter.tcl +fileeval $cfPath(hmm)/hmm_configuration.tcl +fileeval $cfPath(nexus)/nxscripts.tcl +fileeval $cfPath(scan)/scan.tcl +fileeval $cfPath(commands)/commands.tcl +fileeval $cfPath(anticollider)/anticollider.tcl +source gumxml.tcl + + +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 diff --git a/site_ansto/instrument/emu/hostport_config.tcl b/site_ansto/instrument/emu/hostport_config.tcl new file mode 100644 index 00000000..e60141b8 --- /dev/null +++ b/site_ansto/instrument/emu/hostport_config.tcl @@ -0,0 +1,35 @@ +# MOTOR HOST AND PORT +foreach {mc host port} { + MC1 mc1-emu 1034 + MC2 mc2-emu 1034 +} { + dict set MOTOR_HOSTPORT $mc HOST $host + dict set MOTOR_HOSTPORT $mc PORT $port +} + +# BEAM MONITOR HOST AND PORT +foreach {bm host port} { + MONITOR_1 das1-emu 30000 +} { + dict set MONITOR_HOSTPORT $bm HOST $host + dict set MONITOR_HOSTPORT $bm PORT $port +} + +# HISTOGRAM SERVER HOST AND PORT +# TODO HV control +foreach {key host port} { + HMM das1-emu.nbi.ansto.gov.au 8080 + HMSTAT das1-emu.nbi.ansto.gov.au 8081 +} { + dict set HISTMEM_HOSTPORT $key HOST $host + dict set HISTMEM_HOSTPORT $key PORT $port +} + +# Safety Interlock System +# TODO +foreach {host port} { + IP PORT +} { + dict set PLC_HOSTPORT HOST $host + dict set PLC_HOSTPORT PORT $port +} diff --git a/site_ansto/instrument/emu/hostport_config_test.tcl b/site_ansto/instrument/emu/hostport_config_test.tcl new file mode 100644 index 00000000..42f930ea --- /dev/null +++ b/site_ansto/instrument/emu/hostport_config_test.tcl @@ -0,0 +1,36 @@ +# Specify NONE for HOST and PORT if there is no fake device to talk to. + +# TEST MOTOR HOST AND PORT +foreach {key host port} { + MC1 localhost 63130 + MC2 localhost 63131 +} { + dict set MOTOR_HOSTPORT $key HOST $host + dict set MOTOR_HOSTPORT $key PORT $port +} + +# TEST BEAM MONITOR HOST AND PORT +foreach {key host port} { + MONITOR_1 localhost 30000 +} { + dict set MONITOR_HOSTPORT $key HOST $host + dict set MONITOR_HOSTPORT $key PORT $port +} + +# TEST HISTOGRAM SERVER HOST AND PORT +foreach {key host port} { + HMM das1-test.nbi.ansto.gov.au 8080 + HMSTAT das1-test.nbi.ansto.gov.au 8081 +} { + dict set HISTMEM_HOSTPORT $key HOST $host + dict set HISTMEM_HOSTPORT $key PORT $port +} + +# Safety Interlock System +# TODO +foreach {host port} { + NONE NONE +} { + dict set PLC_HOSTPORT HOST $host + dict set PLC_HOSTPORT PORT $port +} diff --git a/site_ansto/instrument/emu/runsics_def.py b/site_ansto/instrument/emu/runsics_def.py new file mode 100644 index 00000000..bc0a0161 --- /dev/null +++ b/site_ansto/instrument/emu/runsics_def.py @@ -0,0 +1,3 @@ +inst_user = 'emu_sics' +inst_name = 'emu' +inst_config = 'emu_configuration.tcl' diff --git a/site_ansto/instrument/emu/sics_simulation.tcl b/site_ansto/instrument/emu/sics_simulation.tcl new file mode 100644 index 00000000..61074dae --- /dev/null +++ b/site_ansto/instrument/emu/sics_simulation.tcl @@ -0,0 +1,23 @@ +# Simulation flags, possible values = true or false +# true: The simulated driver will be used. +# false: The real driver will be used. +# icsval column = settings when running on the Instrument Control Server (ie SICS_SIMULATION not defined) +# fakedev column = settings for test platforms (ie SICS_SIMULATION=fakedev) +foreach {simflag icsval fakedev} { + opal_simulation false true + detector_simulation false true + hmm_simulation false true + environment_simulation false false + counter_simulation true true + motor_simulation false false + chopper_simulation false true + velsel_simulation false true + plc_simulation false true + rfgen_simulation false true + goniometer_simulation false true + magnetic_simulation false true +} { + dict set SIMFLAG_VAL $simflag ICSVAL $icsval + dict set SIMFLAG_VAL $simflag FAKEDEV $fakedev + VarMake $simflag Text internal +}