# $Revision: 1.16 $ # $Date: 2006-09-06 03:51:41 $ # Author: Ferdi Franceschini (ffr@ansto.gov.au) # Last revision by: $Author: ffr $ #START SERVER CONFIGURATION SECTION source dmc2280_util.tcl source server_config.tcl #END SERVER CONFIGURATION SECTION ######################################## # INSTRUMENT SPECIFIC CONFIGURATION # START MOTOR CONFIGURATION #xxxx WHICH CONTROLLER DO ECHI AND EPHI BELONG TO #Motor echi DMC2280 [params \ # host xxxx\ # port xxxx\ # axis A\ # units xxxx\ # maxSpeed xxxx\ # maxAccel xxxx\ # maxDecel xxxx\ # stepsPerX xxxx\ # absEnc 1\ # absEncHome xxxx\ # cntsPerX xxxx] #echi hardlowerlim 0 #echi hardupperlim 360 #echi softlowerlim 0 #echi softupperlim 360 #echi home 0 #Motor ephi DMC2280 [params \ # host xxxx\ # port xxxx\ # axis xxxx\ # units xxxx\ # maxSpeed xxxx\ # maxAccel xxxx\ # maxDecel xxxx\ # stepsPerX xxxx\ # absEnc 1\ # absEncHome xxxx\ # cntsPerX xxxx] #ephi hardlowerlim 0 #ephi hardupperlim 360 #ephi softlowerlim 0 #ephi softupperlim 360 #ephi home 0 # Setup addresses of Galil DMC2280 controllers. set dmc2280_controller1(host) 137.157.201.66 set dmc2280_controller1(port) 1034 set dmc2280_controller2(host) 137.157.201.67 set dmc2280_controller2(port) 1034 set dmc2280_controller3(host) 137.157.201.68 set dmc2280_controller3(port) 1034 set dmc2280_controller4(host) 137.157.201.69 set dmc2280_controller4(port) 1034 # Run slit homing routines on controllers 3 and 4 if [catch {dmc_connect dmc2280_controller3} ] { dmc_sendCmd dmc2280_controller3 "XQ#HOME,1" } if [catch {dmc_connect dmc2280_controller4} ] { dmc_sendCmd dmc2280_controller4 "XQ#HOME,1" } #Motor mom DMC2280 [params \ # host $dmc2280_controller1(host)\ # port $dmc2280_controller1(port)\ # axis E\ # units xxxx\ # maxSpeed xxxx\ # maxAccel xxxx\ # maxDecel xxxx\ # stepsPerX xxxx\ # absEnc 1\ # absEncHome xxxx\ # cntsPerX xxxx] #mom hardlowerlim -180 #mom hardupperlim 180 #mom softlowerlim -180 #mom softupperlim 180 #mom home 0 #mom speed xxx #mom precision xxx 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 135 mtth softlowerlim 85 mtth softupperlim 135 mtth home 87.635 mtth speed 0.5 mtth precision 0.001 proc mthGet {} { return [expr [SplitReply [mtth]]/2.0]} publish mthGet user # mth is readonly proc mthSet {val} { return "mtth=[SplitReply [mtth]]"} publish mthSet user MakeConfigurableMotor mth mth readscript mthGet mth drivescript mthSet # Monochromoter 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.001 # Monochromoter 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.001 # Monochromoter 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.001 # Monochromoter 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 xxxx\ cntsPerX 8192] setHomeandRange -motor mx -home 0 -lowrange 5 -uprange 5 mx speed 1 mx precision 0.001 Motor mr DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis A\ 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.001 Motor pc1 DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis F\ units xxxx\ maxSpeed xxxx\ maxAccel xxxx\ maxDecel xxxx\ stepsPerX xxxx] setHomeandRange -motor pc1 -home 0 -lowrange 0 -uprange 0 pc1 speed 1 #pc1 precision xxxx Motor pc2 DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis G\ units xxxx\ maxSpeed xxxx\ maxAccel xxxx\ maxDecel xxxx\ stepsPerX xxxx] setHomeandRange -motor pc2 -home 0 -lowrange 0 -uprange 0 pc2 speed 1 #pc2 precision xxxx 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.001 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\ motorHome 11250000\ absEnc 1\ absEncHome 6559259\ cntsPerX 93207] setHomeandRange -motor stth -home 120 -lowrange 15 -uprange 15 stth speed 0.5 stth precision 0.001 proc sthGet {} { return [expr [SplitReply [stth]]/2.0]} publish sthGet user # sth is readonly proc sthSet {val} { return "stth=[SplitReply [stth]]"} publish sthSet 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\ motorHome 500000\ absEnc 1\ absEncHome 7581355\ cntsPerX 8192] setHomeandRange -motor schi -home 90 -lowrange 5 -uprange 5 schi speed 1 schi precision 0.001 # 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\ motorHome 500000\ absEnc 1\ absEncHome 7934290\ cntsPerX 8192] setHomeandRange -motor sphi -home 0 -lowrange 5 -uprange 5 sphi speed 1 sphi precision 0.001 # 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.001 # 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.001 #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 2100893] 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 2100893] 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 592406] 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 592406] 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 2053148] 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 2053148] 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 530188] 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 530188] 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 MakeCounter simCtr SIM -1.0 MakeScanCommand xxxscan simCtr hrpd.hdd recover.bin source hipadaba_hrpd_configuration.tcl