# $Revision: 1.9 $ # $Date: 2006-07-13 04:54:57 $ # Author: Ferdi Franceschini (ffr@ansto.gov.au) # Last revision by: $Author: ffr $ #START SERVER CONFIGURATION SECTION installprotocolhandler source utility.tcl ServerOption statusfile /home/sics/SICS/log/status.tcl ServerOption RedirectFile /home/sics/SICS/log/stdout ServerOption LogFileBaseName /home/sics/SICS/log/serverlog ServerOption LogFileDir /home/sics/SICS/log ServerOption QuieckPort 60004 ServerOption ServerPort 60003 ServerOption InterruptPort 60002 ServerOption TelWord sicslogin ServerOption TelnetPort 60001 ServerOption ReadUserPasswdTimeout 600000 ServerOption AcceptTimeOut 10 ServerOption ReadTimeOut 10 SicsUser manager ansto 1 SicsUser user sydney 2 SicsUser spy 007 3 MakeDataNumber SicsDataNumber /home/sics/SICS/data/DataNumber VarMake SicsDataPath Text Internal SicsDataPath /home/sics/SICS/data/ SicsDataPath lock VarMake SicsDataPrefix Text Internal SicsDataPrefix smp SicsDataPrefix lock VarMake SicsDataPostFix Text Internal SicsDataPostFix .hdf SicsDataPostFix lock VarMake Title Text User VarMake Sample Text User VarMake User Text User VarMake starttime Text User VarMake currentfile Text User VarMake batchroot Text User VarMake Instrument Text Internal Instrument HRPD Instrument lock MakeDrive #END SERVER CONFIGURATION SECTION ######################################## # INSTRUMENT SPECIFIC 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 #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 Motor mtth DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis F\ units xxxx\ maxSpeed xxxx\ maxAccel xxxx\ maxDecel xxxx\ stepsPerX xxxx\ absEnc 1\ absEncHome xxxx\ cntsPerX xxxx] mtth hardlowerlim 85 mtth hardupperlim 155 mtth softlowerlim 85 mtth softupperlim 155 mtth home 120 proc mthGet {} { return [expr [SplitReply [mtth]]/2.0]} publish mthGet user proc mthSet {val} { return [expr [SplitReply [mtth]] * 2.0]} 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 # 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 # 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 # 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 xxxx] setHomeandRange -motor mx -home 0 -lowrange 5 -uprange 5 mx speed 1 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 xxxx -uprange xxxx mr speed 1 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 xxxx -uprange xxxx pc1 speed 1 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 xxxx -uprange xxxx pc2 speed 1 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 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.2 proc sthGet {} { return [expr [SplitReply [stth]]/2.0]} publish sthGet user proc sthSet {val} { return [expr [SplitReply [stth]] * 2.0]} 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 # 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 # 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 # 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 #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 # Pre comm MakeBatchManager