- 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:
cvs
2004-11-17 11:32:05 +00:00
parent 075fa10e23
commit 0727dc195d
16 changed files with 244 additions and 97 deletions

19
motor.c
View File

@@ -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;