Lift and angle axis now move simultaneously
Fixed a bug which caused the axes not to move in parallel, but after each other.
This commit is contained in:
@@ -418,15 +418,14 @@ asynStatus detectorTowerController::pollDetectorAxes(
|
||||
|
||||
// Check if the tower is moving
|
||||
if (notInPosition == 1 || positionState > 2) {
|
||||
// By now, the controller has actually started the movement
|
||||
angleAxis->startingDeferredMovement_ = false;
|
||||
*moving = true;
|
||||
|
||||
// Since the tower is now moving, the axis by definition do not wait for
|
||||
// movement start anymore.
|
||||
liftAxis->waitingForStart_ = false;
|
||||
angleAxis->waitingForStart_ = false;
|
||||
} else {
|
||||
if (angleAxis->startingDeferredMovement_) {
|
||||
*moving = true;
|
||||
} else {
|
||||
*moving = false;
|
||||
}
|
||||
*moving = false;
|
||||
}
|
||||
|
||||
// Calculate the lift position /w consideration of the angle
|
||||
@@ -809,14 +808,26 @@ asynStatus detectorTowerController::pollDetectorAxes(
|
||||
setAxisParamChecked(liftAxis, motorEnableRBV, true);
|
||||
setAxisParamChecked(supportAxis, motorEnableRBV, true);
|
||||
|
||||
// Are the axes currently moving?
|
||||
setAxisParamChecked(angleAxis, motorStatusMoving, *moving);
|
||||
setAxisParamChecked(liftAxis, motorStatusMoving, *moving);
|
||||
setAxisParamChecked(supportAxis, motorStatusMoving, *moving);
|
||||
// If the axis is starting a movement, mark it as moving. Otherwise use the
|
||||
// moving parameter.
|
||||
if (angleAxis->waitingForStart_) {
|
||||
setAxisParamChecked(angleAxis, motorStatusMoving, true);
|
||||
setAxisParamChecked(angleAxis, motorStatusDone, false);
|
||||
} else {
|
||||
setAxisParamChecked(angleAxis, motorStatusMoving, *moving);
|
||||
setAxisParamChecked(angleAxis, motorStatusDone, !(*moving));
|
||||
}
|
||||
|
||||
// Is the axis movement done?
|
||||
setAxisParamChecked(angleAxis, motorStatusDone, !(*moving));
|
||||
setAxisParamChecked(liftAxis, motorStatusDone, !(*moving));
|
||||
if (liftAxis->waitingForStart_) {
|
||||
setAxisParamChecked(liftAxis, motorStatusMoving, true);
|
||||
setAxisParamChecked(liftAxis, motorStatusDone, false);
|
||||
} else {
|
||||
setAxisParamChecked(liftAxis, motorStatusMoving, *moving);
|
||||
setAxisParamChecked(liftAxis, motorStatusDone, !(*moving));
|
||||
}
|
||||
|
||||
// Support axis status is solely deduced from system movement state
|
||||
setAxisParamChecked(supportAxis, motorStatusMoving, *moving);
|
||||
setAxisParamChecked(supportAxis, motorStatusDone, !(*moving));
|
||||
|
||||
// In which direction are the axes currently moving?
|
||||
|
||||
Reference in New Issue
Block a user