Fixed halt bug.

Cause: The DC command is invalid with PA moves.

r1213 | ffr | 2006-11-01 15:58:44 +1100 (Wed, 01 Nov 2006) | 3 lines
This commit is contained in:
Ferdi Franceschini
2006-11-01 15:58:44 +11:00
committed by Douglas Clowes
parent dc695a75b2
commit 6e3fc65d92

View File

@@ -615,10 +615,10 @@ static void DMC2280Error(void *pData, int *iCode, char *error, int errLen){
strncpy(error,"Begin not possible due to limit switch",(size_t)errLen); strncpy(error,"Begin not possible due to limit switch",(size_t)errLen);
break; break;
case RVRSLIM: case RVRSLIM:
strncpy(error,"Crashed into reverse limit switch",(size_t)errLen); strncpy(error,"Crashed into limit switch",(size_t)errLen);
break; break;
case FWDLIM: case FWDLIM:
strncpy(error,"Crashed into forward limit switch",(size_t)errLen); strncpy(error,"Crashed into limit switch",(size_t)errLen);
break; break;
case POSFAULT: case POSFAULT:
strncpy(error,"Positioning fault detected",(size_t)errLen); strncpy(error,"Positioning fault detected",(size_t)errLen);
@@ -677,7 +677,9 @@ static int DMC2280Fix(void *pData, int iCode,/*@unused@*/ float fValue){
/** \brief Emergency halt. Implements the Halt /** \brief Emergency halt. Implements the Halt
* method in the MotorDriver interface. * method in the MotorDriver interface.
* *
* Uses maximum deceleration * Cannot set maximum deceleration because the DC command
* is not valid for absolute (ie PA) moves. See DC description
* in DMC-2xxx command ref (ie manc2xxx.pdf)
* \param *pData provides access to a motor's data * \param *pData provides access to a motor's data
* *
* XXX Does abstract motor use the return values? * XXX Does abstract motor use the return values?
@@ -688,20 +690,12 @@ static int DMC2280Halt(void *pData){
self = (pDMC2280Driv)pData; self = (pDMC2280Driv)pData;
assert(self != NULL); assert(self != NULL);
/* Set maximum deceleration to stop motor */
snprintf(cmd, CMDLEN, "DC%c", motDecel(self, self->maxDecel));
if (FAILURE == DMC2280Send(self, cmd))
return HWFault;
/* Stop motor */ /* Stop motor */
snprintf(cmd, CMDLEN, "ST%c", self->axisLabel); snprintf(cmd, CMDLEN, "ST%c", self->axisLabel);
if (FAILURE == DMC2280Send(self, cmd)) if (FAILURE == DMC2280Send(self, cmd))
return HWFault; return HWFault;
/* Restore deceleration */ else
snprintf(cmd, CMDLEN, "DC%c", motDecel(self, self->decel)); return 1;
if (FAILURE == DMC2280Send(self, cmd))
return HWFault;
return 1;
} }
/** \brief Fetches the value of the named parameter, /** \brief Fetches the value of the named parameter,