- Added a couple of forgotten files
This commit is contained in:
45
ecbdriv.h
Normal file
45
ecbdriv.h
Normal file
@ -0,0 +1,45 @@
|
||||
/*------------------------------------------------------------------------
|
||||
this is a motor driver for the Risoe motor controllers within the
|
||||
ECB system. The motor is controlled through functions invoked in the
|
||||
Z80 processor of the ECB system which is connected through a GPIB
|
||||
bus to the wider world. This driver has to do a lot of extra things:
|
||||
- it has to convert from physical values to motor steps.
|
||||
- Quite a few parameters, such as ramping parameters,
|
||||
have to be downloaded to the ECB
|
||||
- Risoe motors may have a virtual encoder or a real encoder.
|
||||
- The motor may have to control air cushions as well.
|
||||
- Tricky backlash handling. Backlash handling ensures that a position is
|
||||
always arrived at from a defined direction. If backlash is applied
|
||||
a restart flag is set in ECBRunTo. ECBGetStatus checks for that and
|
||||
causes the motor to drive back to the position actually desired.
|
||||
|
||||
This driver support only P2048a motor controllers, as these are the
|
||||
only ones which seem to have arrived at PSI. The P1648 and Tridynamic
|
||||
things are not supported.
|
||||
|
||||
Multiplexed motors: Originally the ECB supported 24 motors. This did
|
||||
prove to be not enough. Therefore another device called P2234e was
|
||||
introduced which allowed to run 8 motors from one controller port. In this
|
||||
case the motor parameters have to be copied to the ECB before
|
||||
driving the motor. Multiplexing is selected through the parameter MULT.
|
||||
MULT 0 means no multiplexing, MULT > 0 makes MULT the number of the
|
||||
motor in the multiplexer. MULT is now also used to flag a download of
|
||||
parameters to the ECB. In such a case MULT is -1.
|
||||
|
||||
|
||||
Some of this code was taken from the tascom driver for the ECB.
|
||||
|
||||
copyright: see file COPYRIGHT
|
||||
|
||||
Mark Koennecke, January 2003
|
||||
|
||||
--------------------------------------------------------------------------*/
|
||||
#ifndef ECBDRIV
|
||||
#define ECBDRIV
|
||||
|
||||
MotorDriver *CreateECBMotor(SConnection *pCon, int argc, char *argv[]);
|
||||
void KillECBMotor(void *driver);
|
||||
|
||||
#endif
|
||||
|
||||
|
54
nxsupport.tcl
Normal file
54
nxsupport.tcl
Normal file
@ -0,0 +1,54 @@
|
||||
#===========================================================================
|
||||
# Support routines for scripting NeXus files with nxscript.
|
||||
#
|
||||
# Mark Koennecke, February 2003
|
||||
#==========================================================================
|
||||
proc makeFileName args {
|
||||
sicsdatanumber incr
|
||||
set num [SplitReply [sicsdatanumber]]
|
||||
set p [string trim [SplitReply [sicsdatapath]]]
|
||||
set pre [string trim [SplitReply [sicsdataprefix]]]
|
||||
set po [string trim [SplitReply [sicsdatapostfix]]]
|
||||
return [format "%s%s%5.5d2003%s" $p $pre $num $po]
|
||||
}
|
||||
#==========================================================================
|
||||
proc writeFloatVar {alias var} {
|
||||
set ret [catch {set val [SplitReply [$var]]} val]
|
||||
if { $ret != 0} {
|
||||
clientput [format "ERROR: failed to read %s, %s" $var $val]
|
||||
return
|
||||
} else {
|
||||
nxscript putfloat $alias [expr $val * 1.0 ]
|
||||
}
|
||||
}
|
||||
#=========================================================================
|
||||
proc writeTextVar {alias var} {
|
||||
set ret [catch {set val [SplitReply [$var]]} val]
|
||||
if { $ret != 0} {
|
||||
clientput [format "ERROR: failed to read %s" $var]
|
||||
return
|
||||
} else {
|
||||
nxscript puttext $alias $val
|
||||
}
|
||||
}
|
||||
#========================================================================
|
||||
proc writeTextAttribute {attName var} {
|
||||
set ret [catch {set val [SplitReply [$var]]} val]
|
||||
if { $ret != 0} {
|
||||
clientput [format "ERROR: failed to read %s" $var]
|
||||
return
|
||||
} else {
|
||||
nxscript putglobal $attName $val
|
||||
}
|
||||
}
|
||||
#=======================================================================
|
||||
proc writeStandardAttributes {fileName} {
|
||||
nxscript putglobal file_name $fileName
|
||||
nxscript putglobal file_time [sicstime]
|
||||
writeTextAttribute instrument instrument
|
||||
writeTextAttribute owner user
|
||||
writeTextAttribute owner_telephone_number phone
|
||||
writeTextAttribute owner_fax_number fax
|
||||
writeTextAttribute owner_email email
|
||||
writeTextAttribute owner_address adress
|
||||
}
|
Reference in New Issue
Block a user