- extended evcontroller
- remote objects - new ev drivers for oxford IPS,ITC,ILM and LC M.Z. SKIPPED: psi/eve.c psi/eve.h psi/fsm.c psi/fsm.h psi/ilmdriv.c psi/ipsdriv.c psi/itcdriv.c psi/lcdriv.c psi/logger.c psi/logger.h psi/make_gen psi/oicom.c psi/oicom.h psi/psi.c psi/remob.c psi/remob.h psi/tecs/didi psi/tecs/make_crv.tcsh psi/tecs/make_gen psi/tecs/myc_buf.c psi/tecs/six.c psi/tecs/tecs.c psi/tecs/tecs_client.f psi/tecs/tecs_plot.f psi/tecs/term.c psi/tecs/pg_plus/xwdriv.c
This commit is contained in:
19
motor.c
19
motor.c
@@ -76,6 +76,7 @@
|
||||
#define ECOUNT 11
|
||||
#define POSCOUNT 12
|
||||
#define IGNOREFAULT 13
|
||||
|
||||
/*------------------------------------------------------------------------
|
||||
a tiny structure used in CallBack work
|
||||
*/
|
||||
@@ -119,6 +120,7 @@
|
||||
if(self->pDrivInt->iErrorCount < 0)
|
||||
self->pDrivInt->iErrorCount = 0;
|
||||
|
||||
self->stopped = 1;
|
||||
return self->pDriver->Halt((void *)self->pDriver);
|
||||
}
|
||||
|
||||
@@ -208,7 +210,7 @@ static int statusRunTo(pMotor self, SConnection *pCon)
|
||||
if(self->retryCount >= ObVal(self->ParArray,POSCOUNT))
|
||||
{
|
||||
snprintf(pBueffel,255,"ERROR: aborting motor %s after %d retries",
|
||||
self->name, (int)ObVal(self->ParArray,POSCOUNT));
|
||||
self->name, self->retryCount);
|
||||
SCWrite(pCon,pBueffel,eError);
|
||||
return HWFault;
|
||||
}
|
||||
@@ -230,10 +232,16 @@ static int checkPosition(pMotor self, SConnection *pCon)
|
||||
self->fPosition = fHard;
|
||||
if(absf(fHard - self->fTarget) > ObVal(self->ParArray,PREC))
|
||||
{
|
||||
if(SCGetInterrupt(pCon) != eContinue)
|
||||
if (SCGetInterrupt(pCon) != eContinue)
|
||||
{
|
||||
return HWFault;
|
||||
}
|
||||
if(self->stopped)
|
||||
{
|
||||
snprintf(pBueffel,131,"WARNING: %s stopped", self->name);
|
||||
SCWrite(pCon,pBueffel, eWarning);
|
||||
return HWFault;
|
||||
}
|
||||
snprintf(pBueffel,131,"WARNING: %s off position by %f",
|
||||
self->name, absf(fHard - self->fTarget));
|
||||
SCWrite(pCon,pBueffel, eWarning);
|
||||
@@ -248,6 +256,7 @@ static void finishDriving(pMotor self, SConnection *pCon)
|
||||
MotCallback sCall;
|
||||
MotorGetSoftPosition(self,pCon,&sCall.fVal);
|
||||
sCall.pName = self->name;
|
||||
InvokeCallBack(self->pCall, MOTDRIVE, &sCall); /* send also very last position */
|
||||
InvokeCallBack(self->pCall, MOTEND, &sCall);
|
||||
}
|
||||
/*--------------------------------------------------------------------*/
|
||||
@@ -494,7 +503,8 @@ static void handleMoveCallback(pMotor self, SConnection *pCon)
|
||||
}
|
||||
return status;
|
||||
}
|
||||
/*---------------------------------------------------------------------------*/ pMotor MotorInit(char *drivername, char *name, MotorDriver *pDriv)
|
||||
/*---------------------------------------------------------------------------*/
|
||||
pMotor MotorInit(char *drivername, char *name, MotorDriver *pDriv)
|
||||
{
|
||||
pMotor pM = NULL;
|
||||
|
||||
@@ -866,6 +876,7 @@ extern void KillPiPiezo(void *pData);
|
||||
/* Boundaries OK, send command */
|
||||
self->posFaultCount = 0;
|
||||
self->retryCount = 0;
|
||||
self->stopped = 0;
|
||||
self->fTarget = fHard;
|
||||
iRet = self->pDriver->RunTo(self->pDriver,fHard);
|
||||
if(iRet != OKOK)
|
||||
@@ -1392,7 +1403,7 @@ extern MotorDriver *MakePiPiezo(Tcl_Interp *pTcl, char *pArray);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(pBueffel, " %s.%s = %f",self->name,pName->text,fValue);
|
||||
sprintf(pBueffel, "%s.%s = %f",self->name,pName->text,fValue);
|
||||
SCWrite(pCon,pBueffel,eValue);
|
||||
DeleteTokenList(pList);
|
||||
return 1;
|
||||
|
||||
Reference in New Issue
Block a user