# $Revision: 1.2 $ # $Date: 2006-05-22 05:00:36 $ # Author: Ferdi Franceschini (ffr@ansto.gov.au) # Last revision by: $Author: ffr $ #START SERVER CONFIGURATION SECTION installprotocolhandler # Use this to create an array of named parameters to inilise motors. proc params {args} { upvar 1 "" x; if [info exists x] {unset x} eval "array set x [list $args]" } 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 Wombat 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.130 set dmc2280_controller1(port) 1034 set dmc2280_controller2(host) 137.157.201.131 set dmc2280_controller2(port) 1034 set dmc2280_controller3(host) 137.157.201.132 set dmc2280_controller3(port) 1034 set dmc2280_controller4(host) 137.157.201.133 set dmc2280_controller4(port) 1034 Motor mth 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] mth hardlowerlim -180 mth hardupperlim 180 mth softlowerlim -180 mth softupperlim 180 mth home 0 Motor mom 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] 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 xxxx\ 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 Motor mchi 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] mchi hardlowerlim 70 mchi hardupperlim 110 mchi softlowerlim 70 mchi softupperlim 110 mchi home 90 Motor mphi 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] mphi hardlowerlim -20 mphi hardupperlim 20 mphi softlowerlim -20 mphi softupperlim 20 mphi home 0 Motor mx 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] mx hardlowerlim -20 mx hardupperlim 20 mx softlowerlim -20 mx softupperlim 20 mx home 0 Motor my 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] my hardlowerlim -20 my hardupperlim 20 my softlowerlim -20 my softupperlim 20 my home 0 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] mr hardlowerlim xxxx mr hardupperlim xxxx mr softlowerlim xxxx mr softupperlim xxxx mr home 0 Motor pc1 DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis F\ units xxxx\ maxSpeed xxxx\ maxAccel xxxx\ maxDecel xxxx\ stepsPerX xxxx] pc1 hardlowerlim xxxx pc1 hardupperlim xxxx pc1 softlowerlim xxxx pc1 softupperlim xxxx pc1 home 0 Motor pc2 DMC2280 [params \ host $dmc2280_controller1(host)\ port $dmc2280_controller1(port)\ axis G\ units xxxx\ maxSpeed xxxx\ maxAccel xxxx\ maxDecel xxxx\ stepsPerX xxxx] pc2 hardlowerlim xxxx pc2 hardupperlim xxxx pc2 softlowerlim xxxx pc2 softupperlim xxxx pc2 home 0 Motor sth DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis xxxx\ units xxxx\ maxSpeed xxxx\ maxAccel xxxx\ maxDecel xxxx\ stepsPerX xxxx\ absEnc 1\ absEncHome xxxx\ cntsPerX xxxx] sth hardlowerlim -180 sth hardupperlim 180 sth softlowerlim -180 sth softupperlim 180 sth home 0 Motor som 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 17694127\ cntsPerX 8192] som hardlowerlim -180 som hardupperlim 180 som softlowerlim -1.9 som softupperlim 1.9 som home 0 Motor stth DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis A\ units degrees\ maxSpeed 0.2\ maxAccel 0.2\ maxDecel 0.2\ stepsPerX 125000\ absEnc 1\ absEncHome 6559259\ cntsPerX -93207] stth hardlowerlim 85 stth hardupperlim 155 stth softlowerlim 85 stth softupperlim 155 stth home 120 Motor schi DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis E\ units degrees\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -25000\ absEnc 1\ absEncHome 7581355\ cntsPerX -8192] schi hardlowerlim 70 schi hardupperlim 110 schi softlowerlim 70 schi softupperlim 110 schi home 90 Motor sphi DMC2280 [params \ host $dmc2280_controller2(host)\ port $dmc2280_controller2(port)\ axis F\ units degrees\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -25000\ absEnc 1\ absEncHome 7934290\ cntsPerX -8192] sphi hardlowerlim -20 sphi hardupperlim 20 sphi softlowerlim -20 sphi softupperlim 20 sphi home 0 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] sx hardlowerlim -20 sx hardupperlim 20 sx softlowerlim -20 sx softupperlim 20 sx home 0 Motor sy 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] sy hardlowerlim -20 sy hardupperlim 20 sy softlowerlim -20 sy softupperlim 20 sy home 0 Motor ss1u DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis C\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 2040518] ss1u hardlowerlim 0 ss1u hardupperlim 50 ss1u softlowerlim 0 ss1u softupperlim 50 ss1u home 0 Motor ss1d DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis D\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 2040518] ss1d hardlowerlim 0 ss1d hardupperlim 50 ss1d softlowerlim 0 ss1d softupperlim 50 ss1d home 0 Motor ss1l DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis A\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 542093] ss1l hardlowerlim 0 ss1l hardupperlim 50 ss1l softlowerlim 0 ss1l softupperlim 50 ss1l home 0 Motor ss1r DMC2280 [params \ host $dmc2280_controller3(host)\ port $dmc2280_controller3(port)\ axis B\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 542093] ss1r hardlowerlim 0 ss1r hardupperlim 50 ss1r softlowerlim 0 ss1r softupperlim 50 ss1r home 0 Motor ss2u DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis C\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 2043085] ss2u hardlowerlim 0 ss2u hardupperlim 50 ss2u softlowerlim 0 ss2u softupperlim 50 ss2u home 0 Motor ss2d DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis D\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 2043085] ss2d hardlowerlim 0 ss2d hardupperlim 50 ss2d softlowerlim 0 ss2d softupperlim 50 ss2d home 0 Motor ss2l DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis A\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 500000] ss2l hardlowerlim 0 ss2l hardupperlim 50 ss2l softlowerlim 0 ss2l softupperlim 50 ss2l home 0 Motor ss2r DMC2280 [params \ host $dmc2280_controller4(host)\ port $dmc2280_controller4(port)\ axis B\ units mm\ maxSpeed 1\ maxAccel 1\ maxDecel 1\ stepsPerX -20125\ motorHome 500000] ss2r hardlowerlim 0 ss2r hardupperlim 50 ss2r softlowerlim 0 ss2r softupperlim 50 ss2r home 0 proc SplitReply { text } { set l [split $text =] return [lindex $l 1] } #-------------------------------------------------------- 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