/*------------------------------------------------------------------------ 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