Bug fix for STUP not being processed when LVIO true or

SPMG set to PAUSE.
This commit is contained in:
Ron Sluiter
2006-03-08 21:09:11 +00:00
parent d9e1c9f528
commit 22c104ab75
+28 -34
View File
@@ -2,9 +2,9 @@
FILENAME... motorRecord.cc
USAGE... Motor Record Support.
Version: $Revision: 1.28 $
Version: $Revision: 1.29 $
Modified By: $Author: sluiter $
Last Modified: $Date: 2006-02-23 13:45:57 $
Last Modified: $Date: 2006-03-08 21:09:11 $
*/
/*
@@ -84,7 +84,9 @@ Last Modified: $Date: 2006-02-23 13:45:57 $
* incorrect values for VELO.
* .27 02-14-06 rls - Bug fix for record issuing moves when |DIFF| < |RDBD|.
* - removed "slop" from do_work.
*
* .28 03-08-06 rls - Moved STUP processing to top of do_work() so that things
* like LVIO true and SPMG set to PAUSE do not prevent
* status update.
*/
#define VERSION 5.9
@@ -1289,24 +1291,20 @@ DEFINITIONS:
LOGIC:
Initialize.
IF Stop button activated, AND, NOT processing a STOP request.
Set MIP field to indicate processing a STOP request.
Mark MIP field as changed. Set Post process command field TRUE.
Clear Jog forward and reverse request. Clear Stop request.
Send STOP_AXIS message to controller.
NORMAL RETURN.
IF Status Update request is YES.
Send an INFO command.
ENDIF
IF Stop/Pause/Move/Go field has changed.
Update Last Stop/Pause/Move/Go field.
IF SPMG field set to STOP, OR, PAUSE.
IF SPMG field set to STOP.
IF Stop/Pause/Move/Go field has changed, OR, STOP field true.
Update Last SPMG or clear STOP field.
IF SPMG field set to STOP or PAUSE, OR, STOP was true.
IF SPMG field set to STOP, OR, STOP was true.
IF MIP state is DONE, STOP or RETRY.
Shouldn't be moving, but send a STOP command without
changing to the STOP state.
NORMAL RETURN.
ELSE IF Motor is moving (MOVN).
Set Post process command TRUE.
Set Post process command TRUE. Clear Jog and Home requests.
ELSE
Set VAL <- RBV and mark as changed.
Set DVAL <- DRBV and mark as changed.
@@ -1429,10 +1427,6 @@ LOGIC:
NORMAL RETURN.
ENDIF
IF Status Update request is YES.
Send an INFO command.
ENDIF
IF DVAL field has changed, OR, NOT done moving.
Mark DVAL as changed.
Calculate new DIFF and RDIF fields and mark as changed.
@@ -1511,6 +1505,22 @@ static RTN_STATUS do_work(motorRecord * pmr, CALLBACK_VALUE proc_ind)
Debug(3, "do_work: begin\n");
if (pmr->stup == motorSTUP_ON)
{
RTN_STATUS status;
pmr->stup = motorSTUP_BUSY;
MARK_AUX(M_STUP);
INIT_MSG();
status = WRITE_MSG(GET_INFO, NULL);
/* Avoid errors from devices that do not have "GET_INFO" (e.g. Soft
Channel). */
if (status == ERROR)
pmr->stup = motorSTUP_OFF;
else
SEND_MSG();
}
/*** Process Stop/Pause/Go_Pause/Go switch. ***
*
* STOP means make the motor stop and, when it does, make the drive
@@ -1929,22 +1939,6 @@ static RTN_STATUS do_work(motorRecord * pmr, CALLBACK_VALUE proc_ind)
if (stop_or_pause == true)
return(OK);
if (pmr->stup == motorSTUP_ON)
{
RTN_STATUS status;
pmr->stup = motorSTUP_BUSY;
MARK_AUX(M_STUP);
INIT_MSG();
status = WRITE_MSG(GET_INFO, NULL);
/* Avoid errors from devices that do not have "GET_INFO" (e.g. Soft
Channel). */
if (status == ERROR)
pmr->stup = motorSTUP_OFF;
else
SEND_MSG();
}
/* IF DVAL field has changed, OR, NOT done moving. */
if (pmr->dval != pmr->ldvl || !pmr->dmov)
{