# $Revision: 1.4 $ # $Date: 2006-11-07 02:04:21 $ # Author: Ferdi Franceschini (ffr@ansto.gov.au) # Last revision by: $Author: ffr $ #START SERVER CONFIGURATION SECTION source dmc2280_util.tcl set quieckport quieck-wombat set serverport server-wombat set interruptport interrupt-wombat set telnetport telnet-wombat source server_config.tcl #END SERVER CONFIGURATION SECTION ######################################## # INSTRUMENT SPECIFIC CONFIGURATION VarMake Instrument Text Internal Instrument Wombat Instrument lock # Setup addresses of Galil DMC2280 controllers. set dmc2280_controller1(host) mc1-wombat set dmc2280_controller1(port) pmc1-wombat set dmc2280_controller2(host) mc2-wombat set dmc2280_controller2(port) pmc2-wombat set dmc2280_controller3(host) mc3-wombat set dmc2280_controller3(port) pmc3-wombat set dmc2280_controller4(host) mc4-wombat set dmc2280_controller4(port) pmc4-wombat # Run slit homing routines on controllers 3 and 4 #if [catch {dmc_connect dmc2280_controller3} ] { # dmc_sendCmd dmc2280_controller3 "XQ#HOME,1" # dmc_close dmc2280_controller3 #} #if [catch {dmc_connect dmc2280_controller4} ] { # dmc_sendCmd dmc2280_controller4 "XQ#HOME,1" # dmc_close dmc2280_controller4 #} # Monochromator omega, rotate Motor mom DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis E\ units degrees\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -12500\ absEnc 1\ absEncHome 17694127\ cntsPerX -8192] setHomeandRange -motor mom -home 0 -lowrange 15 -uprange 15 mom speed 1 mom precision 0.01 # Monochromator two-theta, flight-tube rotate Motor mtth DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis F\ units degrees\ maxSpeed 0.5\ maxAccel 0.2\ maxDecel 0.2\ stepsPerX 25000\ absEnc 1\ absEncHome 10299428\ cntsPerX 93207] mtth hardlowerlim 85 mtth hardupperlim 155 mtth softlowerlim 85 mtth softupperlim 155 mtth home 120 mtth speed 0.5 mtth precision 0.01 proc mthGet {} { return [expr [SplitReply [mtth]]/2.0]} proc mthSet {val} { return "mtth=[SplitReply [mtth]]"} publish mthSet user publish mthGet user MakeConfigurableMotor mth mth readscript mthGet mth drivescript mthSet # Monochromator chi, Tilt 2, lower Motor mchi DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis B\ units degrees\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX 25000\ absEnc 1\ absEncHome 7818915\ cntsPerX 8192] setHomeandRange -motor mchi -home 90 -lowrange 5 -uprange 5 mchi speed 1 mchi precision 0.01 # Monochromator phi, Tilt 1, upper Motor mphi DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis A\ units degrees\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -25000\ absEnc 1\ absEncHome 7414753\ cntsPerX -8192] setHomeandRange -motor mphi -home 0 -lowrange 5 -uprange 5 mphi speed 1 mphi precision 0.01 # Monochromator Trans 1, upper Motor mz DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis C\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX 25000\ absEnc 1\ absEncHome 7781680\ cntsPerX 8192] setHomeandRange -motor mz -home 0 -lowrange 5 -uprange 5 mz speed 1 mz precision 0.01 # Monochromator Trans 2, lower Motor mx DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis D\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX 25000\ absEnc 1\ absEncHome 7562793\ cntsPerX 8192] setHomeandRange -motor mx -home 0 -lowrange 5 -uprange 5 mx speed 1 mx precision 0.01 # Monochromator radius, focus #Motor mr DMC2280 [params \ # host $dmc2280_controller1(host)\ # port $dmc2280_controller1(port)\ # axis xxxx\ # units xxxx\ # maxSpeed xxxx\ # maxAccel xxxx\ # maxDecel xxxx\ # stepsPerX xxxx\ # absEnc 1\ # absEncHome xxxx\ # cntsPerX xxxx] #setHomeandRange -motor mr -home 0 -lowrange 0 -uprange 0 #mr speed 1 #mr precision 0.01 # Sample Omega, rotate Motor som DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis E\ units degrees\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -12500\ absEnc 1\ absEncHome 17694127\ cntsPerX -8192] setHomeandRange -motor som -home 0 -lowrange 45 -uprange 45 som speed 1 som precision 0.01 # Sample two-theta, detector rotate Motor stth DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis F\ units degrees\ maxSpeed 0.2\ maxAccel 0.2\ maxDecel 0.2\ stepsPerX 125000\ absEnc 1\ absEncHome 6559259\ cntsPerX 93207] setHomeandRange -motor stth -home 120 -lowrange 15 -uprange 15 stth speed 0.5 stth precision 0.01 proc sthGet {} { return [expr [SplitReply [stth]]/2.0]} proc sthSet {val} { return "stth=[SplitReply [stth]]"} publish sthSet user publish sthGet user MakeConfigurableMotor sth sth readscript sthGet sth drivescript sthSet # Sample Tilt 2, lower Motor schi DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis B\ units degrees\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX 25000\ absEnc 1\ absEncHome 7581355\ cntsPerX 8192] setHomeandRange -motor schi -home 90 -lowrange 5 -uprange 5 schi speed 1 schi precision 0.01 # Sample Tilt 1, upper Motor sphi DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis A\ units degrees\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX 25000\ absEnc 1\ absEncHome 7934290\ cntsPerX 8192] setHomeandRange -motor sphi -home 0 -lowrange 5 -uprange 5 sphi speed 1 sphi precision 0.01 # Sample Trans 1 (upper) Motor sz DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis C\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX 25000\ absEnc 1\ absEncHome 7562793\ cntsPerX 8192] setHomeandRange -motor sz -home 0 -lowrange 5 -uprange 5 sz speed 1 sz precision 0.01 # Sample Trans2 (lower) Motor sx DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis D\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX 25000\ absEnc 1\ absEncHome 7562793\ cntsPerX 8192] setHomeandRange -motor sx -home 0 -lowrange 5 -uprange 5 sx speed 1 sx precision 0.01 #Default upper and lower ranges for vertical slits set vertSlitLowRange 25 set vertSlitUpRange 95 #Default upper and lower ranges for horizontal slits set horSlitLowRange 20 set horSlitUpRange 25 Motor ss1u DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis G\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 2040518] setHomeandRange -motor ss1u -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange Motor ss1d DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis H\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 2040518] setHomeandRange -motor ss1d -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange Motor ss1l DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis E\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 542093] setHomeandRange -motor ss1l -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange Motor ss1r DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis F\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 542093] setHomeandRange -motor ss1r -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange Motor ss2u DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis G\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 2043085] setHomeandRange -motor ss2u -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange Motor ss2d DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis H\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 2043085] setHomeandRange -motor ss2d -home 0 -lowrange $vertSlitLowRange -uprange $vertSlitUpRange Motor ss2l DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis E\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 500000] setHomeandRange -motor ss2l -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange Motor ss2r DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis F\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 500000] setHomeandRange -motor ss2r -home 0 -lowrange $horSlitLowRange -uprange $horSlitUpRange #-------------------------------------------------------- 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 # END MOTOR CONFIGURATION #------------------------------------------------------------------------- # System: Histogram Server #------------------------------------------------------------------------ # For the time being, use a simulated counter. # When the beam monitor is interfaced, it can be used instead. MakeCounter counter SIM -1.0 MakeHM hm anstohttp hm configure hmaddress http://localhost:8888 hm configure username spy hm configure password 007 hm configure hmconfigscript puts anstohm.xml # hm CountMode timer hm preset 2 hm exponent 0 # hm configure init 1 hm init MakeScanCommand xxxscan counter wombat.hdd recover.bin source gen_hipadaba.tcl