diff --git a/site_ansto/instrument/reflectometer/MANIFEST.TXT b/site_ansto/instrument/reflectometer/MANIFEST.TXT index f1702844..7ad998b4 100644 --- a/site_ansto/instrument/reflectometer/MANIFEST.TXT +++ b/site_ansto/instrument/reflectometer/MANIFEST.TXT @@ -1,8 +1,5 @@ platypus_configuration.tcl -motor_configuration.tcl -chopper.tcl -hipadaba_configuration.tcl -InstXML.xml +sics_ports.tcl extraconfig.tcl -hpaths.tcl -troubleshoot_setup.tcl +config +util diff --git a/site_ansto/instrument/reflectometer/Makefile b/site_ansto/instrument/reflectometer/Makefile new file mode 100644 index 00000000..8ecc9b71 --- /dev/null +++ b/site_ansto/instrument/reflectometer/Makefile @@ -0,0 +1,14 @@ +cfPath=config/motors + +all: script_val + make -C config + + +script_val: SVmotors + + +SVmotors: $(cfPath)/motor_configuration.tcl + ../mksim_config.tcl -f $(cfPath)/motor_configuration.tcl > script_validator/$(cfPath)/motor_configuration.tcl + +clean: + make -C config clean diff --git a/site_ansto/instrument/reflectometer/config/INSTCFCOMMON.TXT b/site_ansto/instrument/reflectometer/config/INSTCFCOMMON.TXT new file mode 100644 index 00000000..49bd1e72 --- /dev/null +++ b/site_ansto/instrument/reflectometer/config/INSTCFCOMMON.TXT @@ -0,0 +1,6 @@ +config/counter/counter_common_1.tcl +config/hipadaba/common_hipadaba_configuration.tcl +config/hmm/hmm_configuration_common_1.tcl +config/scan/scan_common_1.hdd +config/scan/scan_common_1.tcl +config/nexus/nxscripts_common_1.tcl diff --git a/site_ansto/instrument/reflectometer/config/Makefile b/site_ansto/instrument/reflectometer/config/Makefile new file mode 100644 index 00000000..e4b249df --- /dev/null +++ b/site_ansto/instrument/reflectometer/config/Makefile @@ -0,0 +1,6 @@ +all: + make -C nexus + + +clean: + make -C nexus clean diff --git a/site_ansto/instrument/reflectometer/config/chopper/chopper.tcl b/site_ansto/instrument/reflectometer/config/chopper/chopper.tcl new file mode 100644 index 00000000..99dec37c --- /dev/null +++ b/site_ansto/instrument/reflectometer/config/chopper/chopper.tcl @@ -0,0 +1,29 @@ +#START SERVER CONFIGURATION SECTION +set sicsroot /usr/local/sics +source dmc2280_util.tcl +source server_config.tcl +#END SERVER CONFIGURATION SECTION + +######################################## +# INSTRUMENT SPECIFIC CONFIGURATION +VarMake Instrument Text Internal +Instrument Platypus +Instrument lock + +# Chopper NCS013 communications +set chopper_controller(host) 137.157.202.130 +set chopper_controller(port) 10000 +set chopper_controller(user) NCS +set chopper_controller(password) NCS013 + + +# CHOPPER +MakeChopper chopperController tcpdocho [params \ + host $chopper_controller(host) \ + port $chopper_controller(port) \ + nchopper 4 \ + timeout 30 \ + user $chopper_controller(user) \ + password $chopper_controller(password) \ +] +ChopperAdapter chspeed chopperController speed 0 10 diff --git a/site_ansto/instrument/reflectometer/config/counter/counter.tcl b/site_ansto/instrument/reflectometer/config/counter/counter.tcl new file mode 100644 index 00000000..e69de29b diff --git a/site_ansto/instrument/reflectometer/config/hipadaba/hipadaba_configuration.tcl b/site_ansto/instrument/reflectometer/config/hipadaba/hipadaba_configuration.tcl new file mode 100644 index 00000000..eae0fc03 --- /dev/null +++ b/site_ansto/instrument/reflectometer/config/hipadaba/hipadaba_configuration.tcl @@ -0,0 +1 @@ +source $cfPath(hipadaba)/common_hipadaba_configuration.tcl diff --git a/site_ansto/instrument/reflectometer/config/hipadaba/hpaths.tcl b/site_ansto/instrument/reflectometer/config/hipadaba/hpaths.tcl new file mode 100644 index 00000000..1ed0dafc --- /dev/null +++ b/site_ansto/instrument/reflectometer/config/hipadaba/hpaths.tcl @@ -0,0 +1,55 @@ +set hpaths [list \ +experiment sample detector slits \ +slits/1 slits/1/horizontal slits/1/vertical \ +slits/2 slits/2/horizontal slits/2/vertical \ +slits/3 slits/3/horizontal slits/3/vertical \ +slits/4 slits/4/horizontal slits/4/vertical] + +# Maps devices (eg motors) to hipadaba paths. +# obj name path +set motor_hpath [list \ +ss1u top /slits/1/vertical \ +ss1d bottom /slits/1/vertical \ +ss1l left /slits/1/horizontal \ +ss1r right /slits/1/horizontal \ +ss2u top /slits/2/vertical \ +ss2d bottom /slits/2/vertical \ +ss2l left /slits/2/horizontal \ +ss2r right /slits/2/horizontal \ +ss3u top /slits/3/vertical \ +ss3d bottom /slits/3/vertical \ +ss3l left /slits/3/horizontal \ +ss3r right /slits/3/horizontal \ +ss4u top /slits/4/vertical \ +ss4d bottom /slits/4/vertical \ +ss4l left /slits/4/horizontal \ +ss4r right /slits/4/horizontal \ +st3vt st3vt /slits/3/vertical \ +st4vt st4vt /slits/4/vertical \ +sz translate_z /sample \ +sx translate_x /sample \ +sth sth /sample \ +sphi sphi /sample \ +bz shade /detector \ +dz detector /detector ] + +# Configurable virtual motors +# obj name path master_obj +set cvirtmotor_hpath [list \ +ss1hg gap /slits/1/horizontal left\ +ss1ho offset /slits/1/horizontal left\ +ss1vg gap /slits/1/vertical top\ +ss1vo offset /slits/1/vertical top\ +ss2hg gap /slits/2/horizontal left\ +ss2ho offset /slits/2/horizontal left\ +ss2vg gap /slits/2/vertical top\ +ss2vo offset /slits/2/vertical top\ +ss3hg gap /slits/3/horizontal left\ +ss3ho offset /slits/3/horizontal left\ +ss3vg gap /slits/3/vertical top\ +ss3vo offset /slits/3/vertical top\ +ss4hg gap /slits/4/horizontal left\ +ss4ho offset /slits/4/horizontal left\ +ss4vg gap /slits/4/vertical top\ +ss4vo offset /slits/4/vertical top] + diff --git a/site_ansto/instrument/reflectometer/config/hmm/hmm_configuration.tcl b/site_ansto/instrument/reflectometer/config/hmm/hmm_configuration.tcl new file mode 100644 index 00000000..e69de29b diff --git a/site_ansto/instrument/reflectometer/config/motors/motor_configuration.tcl b/site_ansto/instrument/reflectometer/config/motors/motor_configuration.tcl new file mode 100644 index 00000000..92e75ff6 --- /dev/null +++ b/site_ansto/instrument/reflectometer/config/motors/motor_configuration.tcl @@ -0,0 +1,1137 @@ +# $Revision: 1.1 $ +# $Date: 2007-03-23 02:48:51 $ +# Author: Ferdi Franceschini (ffr@ansto.gov.au) +# Last revision by: $Author: dcl $ + +# START MOTOR CONFIGURATION + +set animal platypus +# Setup addresses of Galil DMC2280 controllers. +set dmc2280_controller1(host) mc1-$animal +set dmc2280_controller1(port) pmc1-$animal + +set dmc2280_controller2(host) mc2-$animal +set dmc2280_controller2(port) pmc2-$animal + +set dmc2280_controller3(host) mc3-$animal +set dmc2280_controller3(port) pmc3-$animal + +set dmc2280_controller4(host) mc4-$animal +set dmc2280_controller4(port) pmc4-$animal + +set use_multichan 1 + +if {$use_multichan == 1} { +MakeRS232Controller dmc_rs1 137.157.202.131 1034 +MakeRS232Controller dmc_rs2 137.157.202.132 1034 +MakeRS232Controller dmc_rs3 137.157.202.133 1034 +MakeRS232Controller dmc_rs4 137.157.202.134 1034 +MakeMultiChan dmc_mc1 dmc_rs1 +MakeMultiChan dmc_mc2 dmc_rs2 +MakeMultiChan dmc_mc3 dmc_rs3 +MakeMultiChan dmc_mc4 dmc_rs4 +} +#Measured absolute encoder reading at home position + +set bz_home 8142000 +set c1ht_home 8265000 +set m1ro_home 134658 +set bat_home 7500000 +set st3vt_home 8742250 +set st4vt_home 8806900 +set sth_home 23511400 +set sphi_home 7548440 +set sx_home 8574000 +set sy_home 7500000 +set sz_home 8927484 +set dy_home 7500000 +set dz_home 7805000 + +#Measured or computed step rate for sz (Sample Raise) +set szStepRate -116500 + +#Measured or computed slit motor steps per millimetre +# 125 steps * 161:1 gears = 20125 +set slitStepRate 20125 + +#Measured slit gap, in units, after homing on limit switches +set ss1h_Gap 56.7 +set ss1v_Gap 54.5 +set ss2h_Gap 9.1 +set ss2v_Gap 23.1 + +set ss3h_Gap 7.4 +set ss3v_Gap 28.6 +set ss4h_Gap 12.1 +set ss4v_Gap 23.6 + +set ss1r_Home [expr $ss1h_Gap/2*$slitStepRate] +set ss1l_Home [expr $ss1h_Gap/2*$slitStepRate] +set ss1u_Home [expr $ss1v_Gap/2*$slitStepRate] +set ss1d_Home [expr $ss1v_Gap/2*$slitStepRate] +set ss2r_Home [expr $ss2h_Gap/2*$slitStepRate] +set ss2l_Home [expr $ss2h_Gap/2*$slitStepRate] +set ss2u_Home [expr $ss2v_Gap/2*$slitStepRate] +set ss2d_Home [expr $ss2v_Gap/2*$slitStepRate] + +set ss3r_Home [expr $ss3h_Gap/2*$slitStepRate] +set ss3l_Home [expr $ss3h_Gap/2*$slitStepRate] +set ss3u_Home [expr $ss3v_Gap/2*$slitStepRate] +set ss3d_Home [expr $ss3v_Gap/2*$slitStepRate] +set ss4r_Home [expr $ss4h_Gap/2*$slitStepRate] +set ss4l_Home [expr $ss4h_Gap/2*$slitStepRate] +set ss4u_Home [expr $ss4v_Gap/2*$slitStepRate] +set ss4d_Home [expr $ss4v_Gap/2*$slitStepRate] + +#Default upper and lower ranges for vertical slits +set vertSlitHome 0 +set vertSlitLowRange 25 +set vertSlitUpRange 100 + +#Default upper and lower ranges for horizontal slits +set horSlitHome 0 +set horSlitLowRange 25 +set horSlitUpRange 25 + +# set movecount high to reduce the frequency of +# hnotify messages to a reasonable level +set move_count 100 + +############################ +# Motor Controller 1 +# Motor Controller 1 +# Motor Controller 1 +############################ +#:TP at HOME +# + +# Beam Shade Vertical Translation (6mm/T double helix, 500mm) +Motor bz DMC2280 [params \ + multichan dmc_mc1\ + host $dmc2280_controller1(host)\ + port $dmc2280_controller1(port)\ + axis A\ + units mm\ + hardlowerlim 0\ + hardupperlim 275\ + maxSpeed 5\ + maxAccel 1\ + maxDecel 1\ + stepsPerX [expr -25000/6]\ + absEnc 1\ + absEncHome $bz_home\ + cntsPerX [expr -8192/6]] +bz softlowerlim 0 +bz softupperlim 275 +bz home 0 + +# Collimator Table Horizontal Translation, X +Motor c1ht DMC2280 [params \ + multichan dmc_mc1\ + host $dmc2280_controller1(host)\ + port $dmc2280_controller1(port)\ + axis B\ + units mm\ + hardlowerlim 0\ + hardupperlim 1065\ + maxSpeed 10\ + maxAccel 1\ + maxDecel 1\ + stepsPerX [expr 25000/5]\ + absEnc 1\ + absEncHome $c1ht_home\ + cntsPerX [expr -8192/5]] +c1ht softlowerlim 0 +c1ht softupperlim 1065 +c1ht home 0 + +# Collimator Tilt, Z axis, positive is down +Motor m1ro DMC2280 [params \ + multichan dmc_mc1\ + host $dmc2280_controller1(host)\ + port $dmc2280_controller1(port)\ + axis C\ + units degrees\ + hardlowerlim -3.5\ + hardupperlim 3.5\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX 275000\ + absEnc 1\ + absEncHome $m1ro_home\ + cntsPerX [expr -262144/360]] +m1ro softlowerlim -3.5 +m1ro softupperlim 3.5 +m1ro home 0 + +# Beam Attenuator (16mm/turn, 200mm travel) +Motor bat DMC2280 [params \ + multichan dmc_mc1\ + host $dmc2280_controller1(host)\ + port $dmc2280_controller1(port)\ + axis D\ + units mm\ + hardlowerlim 0\ + hardupperlim 200\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX [expr 25000/16]\ + absEnc 1\ + absEncHome $bat_home\ + cntsPerX [expr 8192/16]] +bat softlowerlim 0 +bat softupperlim 200 +bat home 0 + +# Slit 3 Tower Translation (1mm/T, +/- 100mm) +Motor st3vt DMC2280 [params \ + multichan dmc_mc1\ + host $dmc2280_controller1(host)\ + port $dmc2280_controller1(port)\ + axis E\ + units mm\ + hardlowerlim 0\ + hardupperlim 253\ + maxSpeed 10\ + maxAccel 1\ + maxDecel 1\ + stepsPerX 25000\ + absEnc 1\ + absEncHome $st3vt_home\ + cntsPerX -8192] +st3vt softlowerlim 0 +st3vt softupperlim 253 +st3vt home 0 + +# Slit 4 Tower Translation (1mm/T, +/- 100mm) +Motor st4vt DMC2280 [params \ + multichan dmc_mc1\ + host $dmc2280_controller1(host)\ + port $dmc2280_controller1(port)\ + axis F\ + units mm\ + hardlowerlim 0\ + hardupperlim 249\ + maxSpeed 10\ + maxAccel 1\ + maxDecel 1\ + stepsPerX 25000\ + absEnc 1\ + absEncHome $st4vt_home\ + cntsPerX -8192] +st4vt softlowerlim 0 +st4vt softupperlim 249 +st4vt home 0 + +############################ +# Motor Controller 2 +# Motor Controller 2 +# Motor Controller 2 +############################ +#:TP at HOME +# + +# Sample Tilt 1, upper (1 degree/turn) +Motor sth DMC2280 [params \ + multichan dmc_mc2\ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ + axis A\ + units degrees\ + hardlowerlim -15\ + hardupperlim 15\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX 25000\ + absEnc 1\ + absEncHome $sth_home\ + cntsPerX 8192] +setHomeandRange -motor sth -home 0 -lowrange 5 -uprange 5 +sth speed 1 +sth precision 0.01 + +# Sample Tilt 2, lower (1 degree/turn) +Motor sphi DMC2280 [params \ + multichan dmc_mc2\ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ + axis B\ + units degrees\ + hardlowerlim 75\ + hardupperlim 105\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -25000\ + absEnc 1\ + absEncHome $sphi_home\ + cntsPerX -8192] +setHomeandRange -motor sphi -home 90 -lowrange 5 -uprange 5 +sphi speed 1 +sphi precision 0.01 + +# Sample Translation, Linear X (5mm/T, 0-750mm) +Motor sx DMC2280 [params \ + multichan dmc_mc2\ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ + axis C\ + units mm\ + hardlowerlim 0\ + hardupperlim 734\ + maxSpeed 10\ + maxAccel 1\ + maxDecel 1\ + stepsPerX [expr 25000/5]\ + absEnc 1\ + absEncHome $sx_home\ + cntsPerX [expr 8192/5]] +sx softlowerlim 0 +sx softupperlim 730 +sx home 0 + +# Sample Translation, Linear Y +#Motor sy DMC2280 [params \ +# multichan dmc_mc2\ +# host $dmc2280_controller2(host)\ +# port $dmc2280_controller2(port)\ +# axis D\ +# units mm\ +# hardlowerlim -600\ +# hardupperlim -300\ +# maxSpeed 1\ +# maxAccel 1\ +# maxDecel 1\ +# stepsPerX 25000\ +# absEnc 1\ +# absEncHome $sy_home\ +# cntsPerX 8192] +#sy softlowerlim -600 +#sy softupperlim -300 +#sy home -450 + +# Sample Translation, Linear Z (??/T, 300mm) +Motor sz DMC2280 [params \ + multichan dmc_mc2\ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ + axis E\ + units mm\ + hardlowerlim 0\ + hardupperlim 300.5\ + maxSpeed 2\ + maxAccel 1\ + maxDecel 1\ + stepsPerX $szStepRate\ + absEnc 1\ + absEncHome $sz_home\ + cntsPerX [expr -8192/5]] +sz softlowerlim 0 +sz softupperlim 300.5 +sz home 0 +sz speed 2 + +# Detector Translation, Linear Y (Not Motorized) +#Motor dy DMC2280 [params \ +# multichan dmc_mc2\ +# host $dmc2280_controller2(host)\ +# port $dmc2280_controller2(port)\ +# axis F\ +# units mm\ +# hardlowerlim -595\ +# hardupperlim 800\ +# maxSpeed 1\ +# maxAccel 1\ +# maxDecel 1\ +# stepsPerX 25000\ +# absEnc 1\ +# absEncHome $dy_home\ +# cntsPerX 8192] +#dy softlowerlim -595 +#dy softupperlim 800 +#dy home 0 + +# Detector Translation, Linear Z (5mm/T gearing unknown) +Motor dz DMC2280 [params \ + multichan dmc_mc2\ + host $dmc2280_controller2(host)\ + port $dmc2280_controller2(port)\ + axis G\ + units mm\ + hardlowerlim 0\ + hardupperlim 1351\ + maxSpeed 5\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -25000\ + absEnc 1\ + absEncHome $dz_home\ + cntsPerX [expr -8192/5]] +dz softlowerlim 0 +dz softupperlim 1351 +dz home 0 + +############################ +# Motor Controller 3 +# Motor Controller 3 +# Motor Controller 3 +############################ +# + +# Slit 1, lower +Motor ss1d DMC2280 [params \ + multichan dmc_mc3\ + host $dmc2280_controller3(host)\ + port $dmc2280_controller3(port)\ + axis D\ + units mm\ + hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ + hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX $slitStepRate\ + motorHome $ss1d_Home] +ss1d softlowerlim -25 +ss1d softupperlim 95 +ss1d home 0 + +# Slit 1, upper +Motor ss1u DMC2280 [params \ + multichan dmc_mc3\ + host $dmc2280_controller3(host)\ + port $dmc2280_controller3(port)\ + axis C\ + units mm\ + hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ + hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $ss1u_Home] +ss1u softlowerlim -25 +ss1u softupperlim 95 +ss1u home 0 + +# Slit 1, left +Motor ss1l DMC2280 [params \ + multichan dmc_mc3\ + host $dmc2280_controller3(host)\ + port $dmc2280_controller3(port)\ + axis A\ + units mm\ + hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ + hardupperlim [expr $horSlitHome + $horSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX $slitStepRate\ + motorHome $ss1l_Home] +ss1l softlowerlim -25 +ss1l softupperlim 25 +ss1l home 0 + +# Slit 1, right +Motor ss1r DMC2280 [params \ + multichan dmc_mc3\ + host $dmc2280_controller3(host)\ + port $dmc2280_controller3(port)\ + axis B\ + units mm\ + hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ + hardupperlim [expr $horSlitHome + $horSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $ss1r_Home] +ss1r softlowerlim -25 +ss1r softupperlim 25 +ss1r home 0 + +# Slit 2, lower +Motor ss2d DMC2280 [params \ + multichan dmc_mc3\ + host $dmc2280_controller3(host)\ + port $dmc2280_controller3(port)\ + axis H\ + units mm\ + hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ + hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX $slitStepRate\ + motorHome $ss2d_Home] +ss2d softlowerlim -25 +ss2d softupperlim 95 +ss2d home 0 + +# Slit 2, upper +Motor ss2u DMC2280 [params \ + multichan dmc_mc3\ + host $dmc2280_controller3(host)\ + port $dmc2280_controller3(port)\ + axis G\ + units mm\ + hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ + hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $ss2u_Home] +ss2u softlowerlim -25 +ss2u softupperlim 95 +ss2u home 0 + +# Slit 2, left +Motor ss2l DMC2280 [params \ + multichan dmc_mc3\ + host $dmc2280_controller3(host)\ + port $dmc2280_controller3(port)\ + axis E\ + units mm\ + hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ + hardupperlim [expr $horSlitHome + $horSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX $slitStepRate\ + motorHome $ss2l_Home] +ss2l softlowerlim -25 +ss2l softupperlim 25 +ss2l home 0 + +# Slit 2, right +Motor ss2r DMC2280 [params \ + multichan dmc_mc3\ + host $dmc2280_controller3(host)\ + port $dmc2280_controller3(port)\ + axis F\ + units mm\ + hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ + hardupperlim [expr $horSlitHome + $horSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $ss2r_Home] +ss2r softlowerlim -25 +ss2r softupperlim 25 +ss2r home 0 + +# Slit 3, lower +Motor ss3d DMC2280 [params \ + multichan dmc_mc4\ + host $dmc2280_controller4(host)\ + port $dmc2280_controller4(port)\ + axis A\ + units mm\ + hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ + hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX $slitStepRate\ + motorHome $ss3d_Home] +ss3d softlowerlim -25 +ss3d softupperlim 95 +ss3d home 0 + +# Slit 3, upper +Motor ss3u DMC2280 [params \ + multichan dmc_mc4\ + host $dmc2280_controller4(host)\ + port $dmc2280_controller4(port)\ + axis B\ + units mm\ + hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ + hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $ss3u_Home] +ss3u softlowerlim -25 +ss3u softupperlim 95 +ss3u home 0 + +# Slit 3, Left +Motor ss3l DMC2280 [params \ + multichan dmc_mc4\ + host $dmc2280_controller4(host)\ + port $dmc2280_controller4(port)\ + axis C\ + units mm\ + hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ + hardupperlim [expr $horSlitHome + $horSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX $slitStepRate\ + motorHome $ss3l_Home] +ss3l softlowerlim -25 +ss3l softupperlim 25 +ss3l home 0 + +# Slit 3, right +Motor ss3r DMC2280 [params \ + multichan dmc_mc4\ + host $dmc2280_controller4(host)\ + port $dmc2280_controller4(port)\ + axis D\ + units mm\ + hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ + hardupperlim [expr $horSlitHome + $horSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $ss3r_Home] +ss3r softlowerlim -25 +ss3r softupperlim 25 +ss3r home 0 + +# Slit 4, lower +Motor ss4d DMC2280 [params \ + multichan dmc_mc4\ + host $dmc2280_controller4(host)\ + port $dmc2280_controller4(port)\ + axis E\ + units mm\ + hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ + hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX $slitStepRate\ + motorHome $ss4d_Home] +ss4d softlowerlim -25 +ss4d softupperlim 95 +ss4d home 0 + +# Slit 4, upper +Motor ss4u DMC2280 [params \ + multichan dmc_mc4\ + host $dmc2280_controller4(host)\ + port $dmc2280_controller4(port)\ + axis F\ + units mm\ + hardlowerlim [expr $vertSlitHome - $vertSlitLowRange]\ + hardupperlim [expr $vertSlitHome + $vertSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $ss4u_Home] +ss4u softlowerlim -25 +ss4u softupperlim 95 +ss4u home 0 + +# Slit 4, left +Motor ss4l DMC2280 [params \ + multichan dmc_mc4\ + host $dmc2280_controller4(host)\ + port $dmc2280_controller4(port)\ + axis G\ + units mm\ + hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ + hardupperlim [expr $horSlitHome + $horSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX $slitStepRate\ + motorHome $ss4l_Home] +ss4l softlowerlim -25 +ss4l softupperlim 25 +ss4l home 0 + +# Slit 4, right +Motor ss4r DMC2280 [params \ + multichan dmc_mc4\ + host $dmc2280_controller4(host)\ + port $dmc2280_controller4(port)\ + axis H\ + units mm\ + hardlowerlim [expr $horSlitHome - $horSlitLowRange]\ + hardupperlim [expr $horSlitHome + $horSlitUpRange]\ + maxSpeed 1\ + maxAccel 1\ + maxDecel 1\ + stepsPerX -$slitStepRate\ + motorHome $ss4r_Home] +ss4r softlowerlim -25 +ss4r softupperlim 25 +ss4r home 0 + +## Polarization Analyzer Vertical Translation, Z +#Motor anzvt DMC2280 [params \ +# multichan dmc_mc2\ +# host $dmc2280_controller2(host)\ +# port $dmc2280_controller2(port)\ +# axis xxxx\ +# units mm\ +# maxSpeed 1\ +# maxAccel 1\ +# maxDecel 1\ +# stepsPerX 25000\ +# absEnc 1\ +# absEncHome 7500000\ +# cntsPerX 8192] +#anzvt hardlowerlim xxxx +#anzvt hardupperlim xxxx +#anzvt softlowerlim xxxx +#anzvt softupperlim xxxx +#anzvt home 0 + +## Polarization Analyzer Rotation +#Motor anro DMC2280 [params \ +# multichan dmc_mc2\ +# host $dmc2280_controller2(host)\ +# port $dmc2280_controller2(port)\ +# axis xxxx\ +# units mm\ +# hardlowerlim -10\ +# hardupperlim 10\ +# maxSpeed 1\ +# maxAccel 1\ +# maxDecel 1\ +# stepsPerX 25000\ +# absEnc 1\ +# absEncHome 7500000\ +# cntsPerX 8192] +#anro softlowerlim -10 +#anro softupperlim 10 +#anro home 0 + +#proc SplitReply { text } { +# set l [split $text =] +# return [lindex $l 1] +#} + +if {1} { +proc get_gap_width {m1 m2} { + return [expr [SplitReply [$m1]] - [SplitReply [$m2]]] +} + +proc set_gap_width {m1 m2 val} { + set currentWidth [expr [SplitReply [$m1]] - [SplitReply [$m2]]] + set diff [expr $val - $currentWidth] + set newD1R [expr [SplitReply [$m1]] + $diff/2] + set newD1L [expr [SplitReply [$m2]] - $diff/2] + return "$m1=$newD1R,$m2=$newD1L" +} + +proc get_gap_offset {m1 m2} { + set S1 [SplitReply [$m1]] + set S2 [SplitReply [$m2]] + return [ expr ($S1 + $S2)/2.0 ] +} + +proc set_gap_offset {m1 m2 val} { + set S1 [SplitReply [$m1]] + set S2 [SplitReply [$m2]] + set currentoffset [expr ($S1 + $S2)/2.0 ] + set diff [expr $val - $currentoffset] + set newD1R [expr $S1 + $diff] + set newD1L [expr $S2 + $diff] + return "$m1=$newD1R,$m2=$newD1L" +} + +# make_gap_motors virt_width_motor virt_offset_motor real_high_motor real_low_motor +proc make_gap_motors {vm1 vm2 m1 m2} { + eval "proc get_$vm1 {} { get_gap_width $m1 $m2 }" + set v {$var} + eval "proc set_$vm1 {var} { set_gap_width $m1 $m2 $v }" + MakeConfigurableMotor $vm1 + $vm1 readscript get_$vm1 + $vm1 drivescript set_$vm1 +publish get_$vm1 user +publish set_$vm1 user + + eval "proc get_$vm2 {} { get_gap_offset $m1 $m2 }" + set v {$var} + eval "proc set_$vm2 {var} { set_gap_offset $m1 $m2 $v }" + MakeConfigurableMotor $vm2 + $vm2 readscript get_$vm2 + $vm2 drivescript set_$vm2 +publish get_$vm2 user +publish set_$vm2 user +} + +make_gap_motors ss1vg ss1vo ss1u ss1d +make_gap_motors ss1hg ss1ho ss1r ss1l + +make_gap_motors ss2vg ss2vo ss2u ss2d +make_gap_motors ss2hg ss2ho ss2r ss2l + +make_gap_motors ss3vg ss3vo ss3u ss3d +make_gap_motors ss3hg ss3ho ss3r ss3l + +make_gap_motors ss4vg ss4vo ss4u ss4d +make_gap_motors ss4hg ss4ho ss4r ss4l +} else { +#-------------------------------------------------------- +proc ss1widthscript {val} { + set currentWidth [expr [SplitReply [ss1r]] + [SplitReply [ss1l]]] + set diff [expr $val - $currentWidth] + set newD1R [expr [SplitReply [ss1r]] + $diff/2] + set newD1L [expr [SplitReply [ss1l]] + $diff/2] + return "ss1r=$newD1R,ss1l=$newD1L" +} +publish ss1widthscript user + +#------------------------------------------------------- +proc ss1readwidth {} { + return [expr [SplitReply [ss1r]] + [SplitReply [ss1l]]] +} +publish ss1readwidth user +MakeConfigurableMotor ss1hg +ss1hg drivescript ss1widthscript +ss1hg readscript ss1readwidth + +#-------------------------------------------------------- +proc ss1horoffsetscript {val} { + set SR [SplitReply [ss1r]] + set SL [SplitReply [ss1l]] + set currentOffset [ expr $SR - ($SR + $SL)/2.0 ] + set diff [expr $val - $currentOffset] + set newD1R [expr $SR + $diff] + set newD1L [expr $SL - $diff] + return "ss1r=$newD1R,ss1l=$newD1L" +} +publish ss1horoffsetscript user + +#------------------------------------------------------- +proc ss1readhoroffset {} { + set SR [SplitReply [ss1r]] + return [ expr $SR - ($SR + [SplitReply [ss1l]])/2.0 ] +} +publish ss1readhoroffset user + +#------------------------------------------------------- +MakeConfigurableMotor ss1ho +ss1ho drivescript ss1horoffsetscript +ss1ho readscript ss1readhoroffset + +#------------------------------------------------------- +proc ss1heightscript {val} { + set currentWidth [expr [SplitReply [ss1u]] + [SplitReply [ss1d]]] + set diff [expr $val - $currentWidth] + set newD1B [expr [SplitReply [ss1d]] + $diff/2] + set newD1T [expr [SplitReply [ss1u]] + $diff/2] + return "ss1d=$newD1B,ss1u=$newD1T" +} +publish ss1heightscript user + +#------------------------------------------------------- +proc ss1readheight {} { + return [expr [SplitReply [ss1u]] + [SplitReply [ss1d]]] +} +publish ss1readheight user + +#--------------------------------------------------------- +MakeConfigurableMotor ss1vg +ss1vg drivescript ss1heightscript +ss1vg readscript ss1readheight + +#-------------------------------------------------------- +proc ss1vertoffsetscript {val} { + set SU [SplitReply [ss1u]] + set SD [SplitReply [ss1d]] + set currentOffset [ expr $SU - ($SU + $SD)/2.0 ] + set diff [expr $val - $currentOffset] + set newD1U [expr $SU + $diff] + set newD1D [expr $SD - $diff] + return "ss1u=$newD1U,ss1d=$newD1D" +} +publish ss1vertoffsetscript user + +#------------------------------------------------------- +proc ss1readvertoffset {} { + set SU [SplitReply [ss1u]] + return [ expr $SU - ($SU + [SplitReply [ss1d]])/2.0 ] +} +publish ss1readvertoffset user + +#------------------------------------------------------- +MakeConfigurableMotor ss1vo +ss1vo drivescript ss1vertoffsetscript +ss1vo readscript ss1readvertoffset + +############################################### + +#-------------------------------------------------------- +proc ss2widthscript {val} { + set currentWidth [expr [SplitReply [ss2r]] + [SplitReply [ss2l]]] + set diff [expr $val - $currentWidth] + set newD1R [expr [SplitReply [ss2r]] + $diff/2] + set newD1L [expr [SplitReply [ss2l]] + $diff/2] + return "ss2r=$newD1R,ss2l=$newD1L" +} +publish ss2widthscript user + +#------------------------------------------------------- +proc ss2readwidth {} { + return [expr [SplitReply [ss2r]] + [SplitReply [ss2l]]] +} +publish ss2readwidth user +MakeConfigurableMotor ss2hg +ss2hg drivescript ss2widthscript +ss2hg readscript ss2readwidth + +#-------------------------------------------------------- +proc ss2horoffsetscript {val} { + set SR [SplitReply [ss2r]] + set SL [SplitReply [ss2l]] + set currentOffset [ expr $SR - ($SR + $SL)/2.0 ] + set diff [expr $val - $currentOffset] + set newD1R [expr $SR + $diff] + set newD1L [expr $SL - $diff] + return "ss2r=$newD1R,ss2l=$newD1L" +} +publish ss2horoffsetscript user + +#------------------------------------------------------- +proc ss2readhoroffset {} { + set SR [SplitReply [ss2r]] + return [ expr $SR - ($SR + [SplitReply [ss2l]])/2.0 ] +} +publish ss2readhoroffset user + +#------------------------------------------------------- +MakeConfigurableMotor ss2ho +ss2ho drivescript ss2horoffsetscript +ss2ho readscript ss2readhoroffset + +#-------------------------------------------------------- +#----------------------------------------------------- +proc ss2heightscript {val} { + set currentWidth [expr [SplitReply [ss2u]] + [SplitReply [ss2d]]] + set diff [expr $val - $currentWidth] + set newD1B [expr [SplitReply [ss2d]] + $diff/2] + set newD1T [expr [SplitReply [ss2u]] + $diff/2] + return "ss2d=$newD1B,ss2u=$newD1T" +} +publish ss2heightscript user + +#------------------------------------------------------- +proc ss2readheight {} { + return [expr [SplitReply [ss2u]] + [SplitReply [ss2d]]] +} +publish ss2readheight user + +#--------------------------------------------------------- +MakeConfigurableMotor ss2vg +ss2vg drivescript ss2heightscript +ss2vg readscript ss2readheight + +#-------------------------------------------------------- +proc ss2vertoffsetscript {val} { + set SU [SplitReply [ss2u]] + set SD [SplitReply [ss2d]] + set currentOffset [ expr $SU - ($SU + $SD)/2.0 ] + set diff [expr $val - $currentOffset] + set newD1U [expr $SU + $diff] + set newD1D [expr $SD - $diff] + return "ss2u=$newD1U,ss2d=$newD1D" +} +publish ss2vertoffsetscript user + +#------------------------------------------------------- +proc ss2readvertoffset {} { + set SU [SplitReply [ss2u]] + return [ expr $SU - ($SU + [SplitReply [ss2d]])/2.0 ] +} +publish ss2readvertoffset user + +#------------------------------------------------------- +MakeConfigurableMotor ss2vo +ss2vo drivescript ss2vertoffsetscript +ss2vo readscript ss2readvertoffset + +############################################### + +#-------------------------------------------------------- +proc ss3widthscript {val} { + set currentWidth [expr [SplitReply [ss3r]] + [SplitReply [ss3l]]] + set diff [expr $val - $currentWidth] + set newD1R [expr [SplitReply [ss3r]] + $diff/2] + set newD1L [expr [SplitReply [ss3l]] + $diff/2] + return "ss3r=$newD1R,ss3l=$newD1L" +} +publish ss3widthscript user + +#------------------------------------------------------- +proc ss3readwidth {} { + return [expr [SplitReply [ss3r]] + [SplitReply [ss3l]]] +} +publish ss3readwidth user +MakeConfigurableMotor ss3hg +ss3hg drivescript ss3widthscript +ss3hg readscript ss3readwidth + +#----------------------------------------------------- +proc ss3heightscript {val} { + set currentWidth [expr [SplitReply [ss3u]] + [SplitReply [ss3d]]] + set diff [expr $val - $currentWidth] + set newD1B [expr [SplitReply [ss3d]] + $diff/2] + set newD1T [expr [SplitReply [ss3u]] + $diff/2] + return "ss3d=$newD1B,ss3u=$newD1T" +} +publish ss3heightscript user + +#------------------------------------------------------- +proc ss3readheight {} { + return [expr [SplitReply [ss3u]] + [SplitReply [ss3d]]] +} +publish ss3readheight user + +#--------------------------------------------------------- +MakeConfigurableMotor ss3vg +ss3vg drivescript ss3heightscript +ss3vg readscript ss3readheight + +#-------------------------------------------------------- +proc ss3horoffsetscript {val} { + set SR [SplitReply [ss3r]] + set SL [SplitReply [ss3l]] + set currentoffset [ expr $SR - ($SR + $SL)/2.0 ] + set diff [expr $val - $currentoffset] + set newd1r [expr $SR + $diff] + set newd1l [expr $SL - $diff] + return "ss3r=$newd1r,ss3l=$newd1l" +} +publish ss3horoffsetscript user + +#------------------------------------------------------- +proc ss3readhoroffset {} { + set SR [SplitReply [ss3r]] + return [ expr $SR - ($SR + [SplitReply [ss3l]])/2.0 ] +} +publish ss3readhoroffset user + +#------------------------------------------------------- +MakeConfigurableMotor ss3ho +ss3ho drivescript ss3horoffsetscript +ss3ho readscript ss3readhoroffset + +#-------------------------------------------------------- +proc ss3vertoffsetscript {val} { + set SU [SplitReply [ss3u]] + set SD [SplitReply [ss3d]] + set currentOffset [ expr $SU - ($SU + $SD)/2.0 ] + set diff [expr $val - $currentOffset] + set newD1U [expr $SU + $diff] + set newD1D [expr $SD - $diff] + return "ss3u=$newD1U,ss3d=$newD1D" +} +publish ss3vertoffsetscript user + +#------------------------------------------------------- +proc ss3readvertoffset {} { + set SU [SplitReply [ss3u]] + return [ expr $SU - ($SU + [SplitReply [ss3d]])/2.0 ] +} +publish ss3readvertoffset user + +#------------------------------------------------------- +MakeConfigurableMotor ss3vo +ss3vo drivescript ss3vertoffsetscript +ss3vo readscript ss3readvertoffset + +############################################### + +#-------------------------------------------------------- +proc ss4widthscript {val} { + set currentWidth [expr [SplitReply [ss4r]] + [SplitReply [ss4l]]] + set diff [expr $val - $currentWidth] + set newD1R [expr [SplitReply [ss4r]] + $diff/2] + set newD1L [expr [SplitReply [ss4l]] + $diff/2] + return "ss4r=$newD1R,ss4l=$newD1L" +} +publish ss4widthscript user + +#------------------------------------------------------- +proc ss4readwidth {} { + return [expr [SplitReply [ss4r]] + [SplitReply [ss4l]]] +} +publish ss4readwidth user +MakeConfigurableMotor ss4hg +ss4hg drivescript ss4widthscript +ss4hg readscript ss4readwidth + +#----------------------------------------------------- +proc ss4heightscript {val} { + set currentWidth [expr [SplitReply [ss4u]] + [SplitReply [ss4d]]] + set diff [expr $val - $currentWidth] + set newD1B [expr [SplitReply [ss4d]] + $diff/2] + set newD1T [expr [SplitReply [ss4u]] + $diff/2] + return "ss4d=$newD1B,ss4u=$newD1T" +} +publish ss4heightscript user + +#------------------------------------------------------- +proc ss4readheight {} { + return [expr [SplitReply [ss4u]] + [SplitReply [ss4d]]] +} +publish ss4readheight user + +#--------------------------------------------------------- +MakeConfigurableMotor ss4vg +ss4vg drivescript ss4heightscript +ss4vg readscript ss4readheight + +#-------------------------------------------------------- +proc ss4horoffsetscript {val} { + set SR [SplitReply [ss4r]] + set SL [SplitReply [ss4l]] + set currentoffset [ expr $SR - ($SR + $SL)/2.0 ] + set diff [expr $val - $currentoffset] + set newd1r [expr $SR + $diff] + set newd1l [expr $SL - $diff] + return "ss4r=$newd1r,ss4l=$newd1l" +} +publish ss4horoffsetscript user + +#------------------------------------------------------- +proc ss4readhoroffset {} { + set SR [SplitReply [ss4r]] + return [ expr $SR - ($SR + [SplitReply [ss4l]])/2.0 ] +} +publish ss4readhoroffset user + +#------------------------------------------------------- +MakeConfigurableMotor ss4ho +ss4ho drivescript ss4horoffsetscript +ss4ho readscript ss4readhoroffset + +#-------------------------------------------------------- +proc ss4vertoffsetscript {val} { + set SU [SplitReply [ss4u]] + set SD [SplitReply [ss4d]] + set currentOffset [ expr $SU - ($SU + $SD)/2.0 ] + set diff [expr $val - $currentOffset] + set newD1U [expr $SU + $diff] + set newD1D [expr $SD - $diff] + return "ss4u=$newD1U,ss4d=$newD1D" +} +publish ss4vertoffsetscript user + +#------------------------------------------------------- +proc ss4readvertoffset {} { + set SU [SplitReply [ss4u]] + return [ expr $SU - ($SU + [SplitReply [ss4d]])/2.0 ] +} +publish ss4readvertoffset user + +#------------------------------------------------------- +MakeConfigurableMotor ss4vo +ss4vo drivescript ss4vertoffsetscript +ss4vo readscript ss4readvertoffset +} diff --git a/site_ansto/instrument/reflectometer/config/nexus/Makefile b/site_ansto/instrument/reflectometer/config/nexus/Makefile new file mode 100644 index 00000000..f4962064 --- /dev/null +++ b/site_ansto/instrument/reflectometer/config/nexus/Makefile @@ -0,0 +1,18 @@ +BMON_COMMON=nexus_in_common_1.dic nexus_in_bmon_common_1.dic nexus_in_scan_common_1.dic +HMM_COMMON=nexus_in_common_1.dic nexus_in_hmm_common_1.dic nexus_in_bmon_common_1.dic nexus_in_scan_common_1.dic + +all: nexus_bmonscan.dic nexus_hmscan.dic + rm -f $(BMON_COMMON) $(HMM_COMMON) + +%.dic: + cp ../../../config/nexus/$@ . + +nexus_bmonscan.dic: $(BMON_COMMON) nexus_in_motors.dic + cat $^ > $@ + +nexus_hmscan.dic: $(HMM_COMMON) nexus_in_motors.dic + cat $^ > $@ + +clean: + rm nexus_bmonscan.dic nexus_hmscan.dic + diff --git a/site_ansto/instrument/reflectometer/config/nexus/nexus_bmonscan.dic b/site_ansto/instrument/reflectometer/config/nexus/nexus_bmonscan.dic new file mode 100644 index 00000000..e9dfcf0a --- /dev/null +++ b/site_ansto/instrument/reflectometer/config/nexus/nexus_bmonscan.dic @@ -0,0 +1,86 @@ +##NXDICT-1.0 +#---------------------------------------------------------------------------- +# +# DO NOT EDIT WHEN YOU DO NOT KNOW WHAT YOU ARE DOING! +# This file determines the placement of data items in the NeXus +# data file. Your data may not be readable if this file is messed up. +# +#---------------------------------------------------------------------------- +entryName=entry1 +inst=instrument +monochromator=monochromator +detector=detector +padim0=512 +padim1=128 +scan_variable=scanvar + +#---------- NXentry level +etitle=/$(entryName),NXentry/SDS title -type NX_CHAR +sics_release=/$(entryName),NXentry/SDS release_tag -type NX_CHAR +estart=/$(entryName),NXentry/SDS start_time -type NX_CHAR +eend=/$(entryName),NXentry/SDS end_time -type NX_CHAR + +#----------------- NXinstrument +iname=/$(entryName),NXentry/$(inst),NXinstrument/SDS name -type NX_CHAR \ + -rank 1 -dim {132} + +#----------------- NXuser +username=/$(entryName),NXentry/user,NXuser/SDS name -type NX_CHAR +userrole=/$(entryName),NXentry/user,NXuser/SDS role -type NX_CHAR +useraddress=/$(entryName),NXentry/user,NXuser/SDS address -type NX_CHAR +userphone=/$(entryName),NXentry/user,NXuser/SDS phone -type NX_CHAR +useremail=/$(entryName),NXentry/user,NXuser/SDS email -type NX_CHAR + +#----------------- NXsource +sname=/$(entryName),NXentry/$(inst),NXinstrument/source,NXsource/SDS name \ + -type NX_CHAR -rank 1 +stype=/$(entryName),NXentry/$(inst),NXinstrument/source,NXsource/SDS type -type NX_CHAR -rank 1 +sprobe=/$(entryName),NXentry/$(inst),NXinstrument/source,NXsource/SDS probe -type NX_CHAR -rank 1 + +#----------------- NXcrystal +clambda=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS wavelength -type NX_FLOAT32 -attr {units,Angstrom} +ctype=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS type -type NX_CHAR + +#--------------- NXsample +saname=/$(entryName),NXentry/sample,NXsample/SDS name -type NX_CHAR +#----------------- NXmonitor +mmode=/$(entryName),NXentry/monitor,NXmonitor/SDS mode -type NX_CHAR +mpreset=/$(entryName),NXentry/monitor,NXmonitor/SDS preset -type NX_FLOAT32 +mdata=/$(entryName),NXentry/monitor,NXmonitor/SDS data -type NX_INT32 +mdistance=/$(entryName),NXentry/monitor,NXmonitor/SDS distance -type NX_FLOAT32 -attr {units,metre} +dlayout=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS layout -type NX_CHAR +scanvar_name=xxx +scanvar_units=xxx +scanvar_longname=xxx + +#----------------NXdata ------------------------------------------------ + +scandata=/$(entryName),NXentry/scan_data,NXdata/NXVGROUP +scanvertaxis=/$(entryName),NXentry/vertical_axis,NXdata/NXVGROUP +scanvar=/$(entryName),NXentry/scan_variable,NXdata/SDS $(scanvar_name) -type NX_FLOAT32 -attr {units,$(scanvar_units)} -attr {long_name,$(scanvar_longname)} +scanstep=/$(entryName),NXentry/scan_step,NXdata/SDS value -type NX_FLOAT32 -attr {units,degree} -attr {long_name,stepsize} +#histogram=/$(entryName),NXentry/histogram,NXdata/NXVGROUP +#scanvar=/$(entryName),NXentry/$(scan_variable),NXdata/NXVGROUP + +mot_name=xxx +mot_units=xxx +mot_long_name=xxx +#--------------- NXmonochromator +nxcrystal_mot=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)} +#XXX add units command to configurable virtual motors. +mth=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS mth -type NX_FLOAT32 -attr {units,degree} -attr {long_name,mth} +#--------------- NXsample +nxsample_mot=/$(entryName),NXentry/sample,NXsample/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)} +#XXX add units command to configurable virtual motors. +sth=/$(entryName),NXentry/sample,NXsample/SDS sth -type NX_FLOAT32 -attr {units,degree} -attr {long_name,sth} +# Slit motors +nxfilter_mot=/$(entryName),NXentry/slits,NXfilter/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)} +#XXX add units command to configurable virtual motors. +ss1vg=/$(entryName),NXentry/slits,NXfilter/SDS ss1vg -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss1vg} +ss1vo=/$(entryName),NXentry/slits,NXfilter/SDS ss1vo -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss1vo} +ss1hg=/$(entryName),NXentry/slits,NXfilter/SDS ss1hg -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss1hg} +ss1ho=/$(entryName),NXentry/slits,NXfilter/SDS ss1ho -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss1ho} +ss2vg=/$(entryName),NXentry/slits,NXfilter/SDS ss2vg -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2vg} +ss2vo=/$(entryName),NXentry/slits,NXfilter/SDS ss2vo -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2vo} +ss2hg=/$(entryName),NXentry/slits,NXfilter/SDS ss2hg -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2hg} +ss2ho=/$(entryName),NXentry/slits,NXfilter/SDS ss2ho -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2ho} diff --git a/site_ansto/instrument/reflectometer/config/nexus/nexus_hmscan.dic b/site_ansto/instrument/reflectometer/config/nexus/nexus_hmscan.dic new file mode 100644 index 00000000..a820ab5f --- /dev/null +++ b/site_ansto/instrument/reflectometer/config/nexus/nexus_hmscan.dic @@ -0,0 +1,109 @@ +##NXDICT-1.0 +#---------------------------------------------------------------------------- +# +# DO NOT EDIT WHEN YOU DO NOT KNOW WHAT YOU ARE DOING! +# This file determines the placement of data items in the NeXus +# data file. Your data may not be readable if this file is messed up. +# +#---------------------------------------------------------------------------- +entryName=entry1 +inst=instrument +monochromator=monochromator +detector=detector +padim0=512 +padim1=128 +scan_variable=scanvar + +#---------- NXentry level +etitle=/$(entryName),NXentry/SDS title -type NX_CHAR +sics_release=/$(entryName),NXentry/SDS release_tag -type NX_CHAR +estart=/$(entryName),NXentry/SDS start_time -type NX_CHAR +eend=/$(entryName),NXentry/SDS end_time -type NX_CHAR + +#----------------- NXinstrument +iname=/$(entryName),NXentry/$(inst),NXinstrument/SDS name -type NX_CHAR \ + -rank 1 -dim {132} + +#----------------- NXuser +username=/$(entryName),NXentry/user,NXuser/SDS name -type NX_CHAR +userrole=/$(entryName),NXentry/user,NXuser/SDS role -type NX_CHAR +useraddress=/$(entryName),NXentry/user,NXuser/SDS address -type NX_CHAR +userphone=/$(entryName),NXentry/user,NXuser/SDS phone -type NX_CHAR +useremail=/$(entryName),NXentry/user,NXuser/SDS email -type NX_CHAR + +#----------------- NXsource +sname=/$(entryName),NXentry/$(inst),NXinstrument/source,NXsource/SDS name \ + -type NX_CHAR -rank 1 +stype=/$(entryName),NXentry/$(inst),NXinstrument/source,NXsource/SDS type -type NX_CHAR -rank 1 +sprobe=/$(entryName),NXentry/$(inst),NXinstrument/source,NXsource/SDS probe -type NX_CHAR -rank 1 + +#----------------- NXcrystal +clambda=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS wavelength -type NX_FLOAT32 -attr {units,Angstrom} +ctype=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS type -type NX_CHAR + +#--------------- NXsample +saname=/$(entryName),NXentry/sample,NXsample/SDS name -type NX_CHAR +#-------------- Detector +# histogram data + + +dradius=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS distance -type NX_FLOAT32 -attr {units,mm} +dheight=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS detector_height -type NX_FLOAT32 -attr {units,mm} -attr {long_name, active height} +detangle_rad=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS angular_coverage -type NX_FLOAT32 -attr {units,radians} +detangle_degrees=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS angular_coverage -type NX_FLOAT32 -attr {units,degrees} +dtheta=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS polar_angle -type NX_FLOAT32 -LZW -rank 2 -dim {$(padim0),$(padim1)} -attr {units,radians} +dvaxis=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS vertical_axis -type NX_FLOAT32 -LZW -rank 1 -dim {$(padim0)} -attr {units,mm} + +dcounts=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS \ + data -type NX_INT32 -LZW -rank 2 -dim {$(dim0),$(dim1)} \ + -attr {signal,1} + +deff=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/calibration,NXdata/SDS efficiency -type NX_INT32 -LZW -rank 2 -dim {$(dim0),$(dim1)} + +ddesc=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS description -type NX_CHAR + +dtype=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS type -type NX_CHAR + +dlayout=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS layout -type NX_CHAR + +#----------------- NXmonitor +mmode=/$(entryName),NXentry/monitor,NXmonitor/SDS mode -type NX_CHAR +mpreset=/$(entryName),NXentry/monitor,NXmonitor/SDS preset -type NX_FLOAT32 +mdata=/$(entryName),NXentry/monitor,NXmonitor/SDS data -type NX_INT32 +mdistance=/$(entryName),NXentry/monitor,NXmonitor/SDS distance -type NX_FLOAT32 -attr {units,metre} +dlayout=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS layout -type NX_CHAR +scanvar_name=xxx +scanvar_units=xxx +scanvar_longname=xxx + +#----------------NXdata ------------------------------------------------ + +scandata=/$(entryName),NXentry/scan_data,NXdata/NXVGROUP +scanvertaxis=/$(entryName),NXentry/vertical_axis,NXdata/NXVGROUP +scanvar=/$(entryName),NXentry/scan_variable,NXdata/SDS $(scanvar_name) -type NX_FLOAT32 -attr {units,$(scanvar_units)} -attr {long_name,$(scanvar_longname)} +scanstep=/$(entryName),NXentry/scan_step,NXdata/SDS value -type NX_FLOAT32 -attr {units,degree} -attr {long_name,stepsize} +#histogram=/$(entryName),NXentry/histogram,NXdata/NXVGROUP +#scanvar=/$(entryName),NXentry/$(scan_variable),NXdata/NXVGROUP + +mot_name=xxx +mot_units=xxx +mot_long_name=xxx +#--------------- NXmonochromator +nxcrystal_mot=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)} +#XXX add units command to configurable virtual motors. +mth=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS mth -type NX_FLOAT32 -attr {units,degree} -attr {long_name,mth} +#--------------- NXsample +nxsample_mot=/$(entryName),NXentry/sample,NXsample/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)} +#XXX add units command to configurable virtual motors. +sth=/$(entryName),NXentry/sample,NXsample/SDS sth -type NX_FLOAT32 -attr {units,degree} -attr {long_name,sth} +# Slit motors +nxfilter_mot=/$(entryName),NXentry/slits,NXfilter/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)} +#XXX add units command to configurable virtual motors. +ss1vg=/$(entryName),NXentry/slits,NXfilter/SDS ss1vg -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss1vg} +ss1vo=/$(entryName),NXentry/slits,NXfilter/SDS ss1vo -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss1vo} +ss1hg=/$(entryName),NXentry/slits,NXfilter/SDS ss1hg -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss1hg} +ss1ho=/$(entryName),NXentry/slits,NXfilter/SDS ss1ho -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss1ho} +ss2vg=/$(entryName),NXentry/slits,NXfilter/SDS ss2vg -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2vg} +ss2vo=/$(entryName),NXentry/slits,NXfilter/SDS ss2vo -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2vo} +ss2hg=/$(entryName),NXentry/slits,NXfilter/SDS ss2hg -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2hg} +ss2ho=/$(entryName),NXentry/slits,NXfilter/SDS ss2ho -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2ho} diff --git a/site_ansto/instrument/reflectometer/config/nexus/nexus_in_motors.dic b/site_ansto/instrument/reflectometer/config/nexus/nexus_in_motors.dic new file mode 100644 index 00000000..611608dd --- /dev/null +++ b/site_ansto/instrument/reflectometer/config/nexus/nexus_in_motors.dic @@ -0,0 +1,22 @@ +mot_name=xxx +mot_units=xxx +mot_long_name=xxx +#--------------- NXmonochromator +nxcrystal_mot=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)} +#XXX add units command to configurable virtual motors. +mth=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS mth -type NX_FLOAT32 -attr {units,degree} -attr {long_name,mth} +#--------------- NXsample +nxsample_mot=/$(entryName),NXentry/sample,NXsample/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)} +#XXX add units command to configurable virtual motors. +sth=/$(entryName),NXentry/sample,NXsample/SDS sth -type NX_FLOAT32 -attr {units,degree} -attr {long_name,sth} +# Slit motors +nxfilter_mot=/$(entryName),NXentry/slits,NXfilter/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)} +#XXX add units command to configurable virtual motors. +ss1vg=/$(entryName),NXentry/slits,NXfilter/SDS ss1vg -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss1vg} +ss1vo=/$(entryName),NXentry/slits,NXfilter/SDS ss1vo -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss1vo} +ss1hg=/$(entryName),NXentry/slits,NXfilter/SDS ss1hg -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss1hg} +ss1ho=/$(entryName),NXentry/slits,NXfilter/SDS ss1ho -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss1ho} +ss2vg=/$(entryName),NXentry/slits,NXfilter/SDS ss2vg -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2vg} +ss2vo=/$(entryName),NXentry/slits,NXfilter/SDS ss2vo -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2vo} +ss2hg=/$(entryName),NXentry/slits,NXfilter/SDS ss2hg -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2hg} +ss2ho=/$(entryName),NXentry/slits,NXfilter/SDS ss2ho -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2ho} diff --git a/site_ansto/instrument/reflectometer/config/nexus/nxscripts.tcl b/site_ansto/instrument/reflectometer/config/nexus/nxscripts.tcl new file mode 100644 index 00000000..1845cac3 --- /dev/null +++ b/site_ansto/instrument/reflectometer/config/nexus/nxscripts.tcl @@ -0,0 +1 @@ +source $cfPath(nexus)/nxscripts_common_1.tcl diff --git a/site_ansto/instrument/reflectometer/config/scan/scan.tcl b/site_ansto/instrument/reflectometer/config/scan/scan.tcl new file mode 100644 index 00000000..3e716b42 --- /dev/null +++ b/site_ansto/instrument/reflectometer/config/scan/scan.tcl @@ -0,0 +1,8 @@ +namespace eval scancommand { + proc init {} { + } + proc commands_hpath_setup {parent} { + } + proc graphics_hpath_setup {parent} { + } +} diff --git a/site_ansto/instrument/reflectometer/platypus_configuration.tcl b/site_ansto/instrument/reflectometer/platypus_configuration.tcl index e8493e61..eb637db1 100644 --- a/site_ansto/instrument/reflectometer/platypus_configuration.tcl +++ b/site_ansto/instrument/reflectometer/platypus_configuration.tcl @@ -1,24 +1,31 @@ -# $Revision: 1.6 $ -# $Date: 2007-02-12 05:57:50 $ +# $Revision: 1.7 $ +# $Date: 2007-03-23 02:55:06 $ # Author: Ferdi Franceschini (ffr@ansto.gov.au) -# Last revision by: $Author: ffr $ +# Last revision by: $Author: dcl $ + +# Required by server_config.tcl +VarMake Instrument Text Internal +Instrument Platypus +Instrument lock #START SERVER CONFIGURATION SECTION -source dmc2280_util.tcl -set quieckport quieck-platypus -set serverport server-platypus -set interruptport interrupt-platypus -set telnetport telnet-platypus +source util/dmc2280/dmc2280_util.tcl +source sics_ports.tcl source server_config.tcl #END SERVER CONFIGURATION SECTION ######################################## # INSTRUMENT SPECIFIC CONFIGURATION -VarMake Instrument Text Internal -Instrument Platypus -Instrument lock -fileeval chopper.tcl -fileeval motor_configuration.tcl -fileeval gen_hipadaba.tcl +#fileeval chopper.tcl +fileeval $cfPath(motors)/motor_configuration.tcl +#fileeval gen_hipadaba.tcl + +fileeval $cfPath(counter)/counter.tcl +fileeval $cfPath(hmm)/hmm_configuration.tcl +fileeval $cfPath(nexus)/nxscripts.tcl +fileeval $cfPath(scan)/scan.tcl +source $cfPath(hipadaba)/hipadaba_configuration.tcl +source gumxml.tcl + fileeval extraconfig.tcl diff --git a/site_ansto/instrument/reflectometer/script_validator/MANIFEST.TXT b/site_ansto/instrument/reflectometer/script_validator/MANIFEST.TXT new file mode 100644 index 00000000..b541f143 --- /dev/null +++ b/site_ansto/instrument/reflectometer/script_validator/MANIFEST.TXT @@ -0,0 +1,2 @@ +sics_ports.tcl +config diff --git a/site_ansto/instrument/reflectometer/script_validator/sics_ports.tcl b/site_ansto/instrument/reflectometer/script_validator/sics_ports.tcl new file mode 100644 index 00000000..25f2802a --- /dev/null +++ b/site_ansto/instrument/reflectometer/script_validator/sics_ports.tcl @@ -0,0 +1,4 @@ +set quieckport quieck-val-platypus +set serverport server-val-platypus +set interruptport interrupt-val-platypus +set telnetport telnet-val-platypus diff --git a/site_ansto/instrument/reflectometer/sics_ports.tcl b/site_ansto/instrument/reflectometer/sics_ports.tcl new file mode 100644 index 00000000..6f377861 --- /dev/null +++ b/site_ansto/instrument/reflectometer/sics_ports.tcl @@ -0,0 +1,4 @@ +set quieckport quieck-platypus +set serverport server-platypus +set interruptport interrupt-platypus +set telnetport telnet-platypus