- Refactored site specific stuff into a site module - PSI specific stuff is now in the PSI directory. - The old version has been tagged with pre-ansto
46 lines
2.0 KiB
C
46 lines
2.0 KiB
C
/*------------------------------------------------------------------------
|
|
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
|
|
|
|
|