Compare commits
7 Commits
fix_hw_err
...
strict_hom
| Author | SHA1 | Date | |
|---|---|---|---|
| e7ce44fdb6 | |||
| 08ce0999a3 | |||
| 1d662ecd43 | |||
| bea68c807b | |||
| 01a04d3b24 | |||
| 76cc48a49c | |||
| a9f623ba1d |
2
Makefile
2
Makefile
@@ -10,7 +10,7 @@ ARCH_FILTER=RHEL%
|
||||
REQUIRED+=motorBase
|
||||
|
||||
# Specify the version of motorBase we want to build against
|
||||
motorBase_VERSION=7.2.2
|
||||
motorBase_VERSION=7.3.2
|
||||
|
||||
# These headers allow to depend on this library for derived drivers.
|
||||
HEADERS += src/pmacAsynIPPort.h
|
||||
|
||||
Submodule sinqMotor updated: 4e30331c92...a84992b4cd
@@ -91,9 +91,9 @@ turboPmacAxis::turboPmacAxis(turboPmacController *pC, int axisNo,
|
||||
}
|
||||
|
||||
// Even though this happens already in sinqAxis, a default value for
|
||||
// motorMessageText is set here again, because apparently the sinqAxis
|
||||
// motorErrorMessage is set here again, because apparently the sinqAxis
|
||||
// constructor is not run before the string is accessed?
|
||||
status = setStringParam(pC_->motorMessageText(), "");
|
||||
status = setStringParam(pC_->motorErrorMessage(), "");
|
||||
if (status != asynSuccess) {
|
||||
asynPrint(pC_->pasynUser(), ASYN_TRACE_ERROR,
|
||||
"Controller \"%s\", axis %d => %s, line %d:\nFATAL ERROR "
|
||||
@@ -140,6 +140,9 @@ asynStatus turboPmacAxis::init() {
|
||||
// Deadband in counts. Can be a fraction of a count, hence double.
|
||||
double deadband_counts = 0.0;
|
||||
|
||||
// Read from the controller if the motor has been homed before
|
||||
int hasBeenHomed = 0;
|
||||
|
||||
// Offset time for the movement watchdog caused by the air cushions in
|
||||
// milliseconds.
|
||||
int acoDelay = 0.0;
|
||||
@@ -176,9 +179,11 @@ asynStatus turboPmacAxis::init() {
|
||||
Ixx65.
|
||||
*/
|
||||
snprintf(command, sizeof(command),
|
||||
"Q%2.2d10 Q%2.2d03 Q%2.2d04 Q%2.2d06 P%2.2d22 Q%2.2d00 I%2.2d65",
|
||||
axisNo_, axisNo_, axisNo_, axisNo_, axisNo_, axisNo_, axisNo_);
|
||||
status = pC_->writeRead(axisNo_, command, response, 7);
|
||||
"Q%2.2d10 Q%2.2d03 Q%2.2d04 Q%2.2d06 P%2.2d22 Q%2.2d00 I%2.2d65 "
|
||||
"M%2.2d45",
|
||||
axisNo_, axisNo_, axisNo_, axisNo_, axisNo_, axisNo_, axisNo_,
|
||||
axisNo_);
|
||||
status = pC_->writeRead(axisNo_, command, response, 8);
|
||||
|
||||
msgPrintControlKey keyDisconnected = msgPrintControlKey(
|
||||
pC_->portName, axisNo_, __PRETTY_FUNCTION__, __LINE__, 1);
|
||||
@@ -205,9 +210,9 @@ asynStatus turboPmacAxis::init() {
|
||||
pC_->getMsgPrintControl().resetCount(keyDisconnected, pC_->pasynUser());
|
||||
}
|
||||
|
||||
nvals = sscanf(response, "%lf %lf %lf %lf %d %lf %lf", &motorPos,
|
||||
nvals = sscanf(response, "%lf %lf %lf %lf %d %lf %lf %d", &motorPos,
|
||||
&motorVmax, &motorVelocity, &motorAccel, &acoDelay,
|
||||
&counts_to_eu, &deadband_counts);
|
||||
&counts_to_eu, &deadband_counts, &hasBeenHomed);
|
||||
|
||||
// The acoDelay is given in milliseconds -> Convert to seconds, rounded
|
||||
// up
|
||||
@@ -218,7 +223,7 @@ asynStatus turboPmacAxis::init() {
|
||||
// here to mm/s^2.
|
||||
motorAccel = motorAccel * 1000;
|
||||
|
||||
if (nvals != 8) {
|
||||
if (nvals != 7) {
|
||||
return pC_->couldNotParseResponse(command, response, axisNo_,
|
||||
__PRETTY_FUNCTION__, __LINE__);
|
||||
}
|
||||
@@ -282,6 +287,9 @@ asynStatus turboPmacAxis::init() {
|
||||
pTurboPmacA_->needInit = false;
|
||||
}
|
||||
|
||||
// Use the homing status reported by the controller
|
||||
setAxisParamChecked(this, motorStatusHomed, hasBeenHomed);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -339,7 +347,7 @@ asynStatus turboPmacAxis::doPoll(bool *moving) {
|
||||
}
|
||||
|
||||
if (timedOut) {
|
||||
setAxisParamChecked(this, motorMessageText,
|
||||
setAxisParamChecked(this, motorErrorMessage,
|
||||
"Timed out while waiting for a handshake");
|
||||
pTurboPmacA_->waitForHandshake = false;
|
||||
}
|
||||
@@ -459,7 +467,7 @@ asynStatus turboPmacAxis::doPoll(bool *moving) {
|
||||
pC_->getMsgPrintControl().getSuffix());
|
||||
}
|
||||
resetCountStatus = false;
|
||||
setAxisParamChecked(this, motorMessageText, "Emergency stop");
|
||||
setAxisParamChecked(this, motorErrorMessage, "Emergency stop");
|
||||
break;
|
||||
case -3:
|
||||
// Disabled
|
||||
@@ -552,7 +560,7 @@ asynStatus turboPmacAxis::doPoll(bool *moving) {
|
||||
userMessage, sizeof(userMessage),
|
||||
"Reached unknown state P%2.2d00 = %d. Please call the support.",
|
||||
axisNo_, error);
|
||||
setAxisParamChecked(this, motorMessageText, userMessage);
|
||||
setAxisParamChecked(this, motorErrorMessage, userMessage);
|
||||
}
|
||||
|
||||
if (resetCountStatus) {
|
||||
@@ -582,8 +590,10 @@ asynStatus turboPmacAxis::doPoll(bool *moving) {
|
||||
getAxisParamChecked(this, limFromHardware, &limFromHardware);
|
||||
|
||||
if (limFromHardware != 0) {
|
||||
setAxisParamChecked(this, motorHighLimitFromDriver, highLimit);
|
||||
setAxisParamChecked(this, motorLowLimitFromDriver, lowLimit);
|
||||
status = setLimits(highLimit, lowLimit);
|
||||
if (status != asynSuccess) {
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
status = setMotorPosition(currentPosition);
|
||||
@@ -614,7 +624,7 @@ asynStatus turboPmacAxis::handleError(int error, char *userMessage,
|
||||
pC_->portName, axisNo_, __PRETTY_FUNCTION__, __LINE__,
|
||||
pC_->getMsgPrintControl().getSuffix());
|
||||
}
|
||||
setAxisParamChecked(this, motorMessageText,
|
||||
setAxisParamChecked(this, motorErrorMessage,
|
||||
"Target position would exceed software limits");
|
||||
break;
|
||||
case 5:
|
||||
@@ -630,7 +640,7 @@ asynStatus turboPmacAxis::handleError(int error, char *userMessage,
|
||||
pC_->portName, axisNo_, __PRETTY_FUNCTION__, __LINE__,
|
||||
pC_->getMsgPrintControl().getSuffix());
|
||||
}
|
||||
setAxisParamChecked(this, motorMessageText,
|
||||
setAxisParamChecked(this, motorErrorMessage,
|
||||
"Axis received move command while it is still "
|
||||
"moving. Please call the support.");
|
||||
break;
|
||||
@@ -651,7 +661,7 @@ asynStatus turboPmacAxis::handleError(int error, char *userMessage,
|
||||
"(P%2.2d01 = "
|
||||
"%d). Please call the support.",
|
||||
axisNo_, error);
|
||||
setAxisParamChecked(this, motorMessageText, userMessage);
|
||||
setAxisParamChecked(this, motorErrorMessage, userMessage);
|
||||
break;
|
||||
case 9:
|
||||
if (pC_->getMsgPrintControl().shouldBePrinted(
|
||||
@@ -670,7 +680,7 @@ asynStatus turboPmacAxis::handleError(int error, char *userMessage,
|
||||
"No feedback from auxiliary device before movement (P%2.2d01 = "
|
||||
"%d). Please call the support.",
|
||||
axisNo_, error);
|
||||
setAxisParamChecked(this, motorMessageText, userMessage);
|
||||
setAxisParamChecked(this, motorErrorMessage, userMessage);
|
||||
break;
|
||||
case 10:
|
||||
/*
|
||||
@@ -696,7 +706,7 @@ asynStatus turboPmacAxis::handleError(int error, char *userMessage,
|
||||
"the SPS for errors (if available). "
|
||||
"Otherwise please call the support.",
|
||||
axisNo_, error);
|
||||
setAxisParamChecked(this, motorMessageText, userMessage);
|
||||
setAxisParamChecked(this, motorErrorMessage, userMessage);
|
||||
break;
|
||||
case 11:
|
||||
// Following error
|
||||
@@ -716,7 +726,7 @@ asynStatus turboPmacAxis::handleError(int error, char *userMessage,
|
||||
"Check if movement range is blocked. "
|
||||
"Otherwise please call the support.",
|
||||
axisNo_, error);
|
||||
setAxisParamChecked(this, motorMessageText, userMessage);
|
||||
setAxisParamChecked(this, motorErrorMessage, userMessage);
|
||||
break;
|
||||
|
||||
case 12:
|
||||
@@ -734,7 +744,7 @@ asynStatus turboPmacAxis::handleError(int error, char *userMessage,
|
||||
"for errors (if available). Otherwise please call "
|
||||
"the support.",
|
||||
axisNo_, error);
|
||||
setAxisParamChecked(this, motorMessageText, userMessage);
|
||||
setAxisParamChecked(this, motorErrorMessage, userMessage);
|
||||
break;
|
||||
|
||||
case 13:
|
||||
@@ -753,7 +763,7 @@ asynStatus turboPmacAxis::handleError(int error, char *userMessage,
|
||||
"Driver hardware error (P%2.2d01 = 13). Please call the "
|
||||
"support.",
|
||||
axisNo_);
|
||||
setAxisParamChecked(this, motorMessageText, userMessage);
|
||||
setAxisParamChecked(this, motorErrorMessage, userMessage);
|
||||
break;
|
||||
case 14:
|
||||
// EPICS should already prevent this issue in the first place,
|
||||
@@ -771,7 +781,7 @@ asynStatus turboPmacAxis::handleError(int error, char *userMessage,
|
||||
"Move command exceeds hardware limits (P%2.2d01 = %d). Please "
|
||||
"call the support.",
|
||||
axisNo_, error);
|
||||
setAxisParamChecked(this, motorMessageText, userMessage);
|
||||
setAxisParamChecked(this, motorErrorMessage, userMessage);
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -785,7 +795,7 @@ asynStatus turboPmacAxis::handleError(int error, char *userMessage,
|
||||
pC_->portName, axisNo_, __PRETTY_FUNCTION__, __LINE__, axisNo_,
|
||||
error, pC_->getMsgPrintControl().getSuffix());
|
||||
}
|
||||
setAxisParamChecked(this, motorMessageText, userMessage);
|
||||
setAxisParamChecked(this, motorErrorMessage, userMessage);
|
||||
break;
|
||||
}
|
||||
return status;
|
||||
@@ -1102,7 +1112,7 @@ asynStatus turboPmacAxis::rereadEncoder() {
|
||||
"disabled before rereading the encoder.\n",
|
||||
pC_->portName, axisNo_, __PRETTY_FUNCTION__, __LINE__);
|
||||
setAxisParamChecked(
|
||||
this, motorMessageText,
|
||||
this, motorErrorMessage,
|
||||
"Axis must be disabled before rereading the encoder.");
|
||||
return asynError;
|
||||
} else {
|
||||
@@ -1165,7 +1175,7 @@ asynStatus turboPmacAxis::enable(bool on) {
|
||||
pC_->portName, axisNo_, __PRETTY_FUNCTION__, __LINE__,
|
||||
axStatus);
|
||||
|
||||
setAxisParamChecked(this, motorMessageText,
|
||||
setAxisParamChecked(this, motorErrorMessage,
|
||||
"Axis cannot be disabled while it is moving.");
|
||||
pTurboPmacA_->enableDisable = false;
|
||||
return asynError;
|
||||
@@ -1250,7 +1260,7 @@ asynStatus turboPmacAxis::enable(bool on) {
|
||||
// Output message to user
|
||||
snprintf(command, sizeof(command), "Failed to %s within %d seconds",
|
||||
on ? "enable" : "disable", timeout_enable_disable);
|
||||
setAxisParamChecked(this, motorMessageText, command);
|
||||
setAxisParamChecked(this, motorErrorMessage, command);
|
||||
|
||||
// Enabling / disabling procedure failed
|
||||
pTurboPmacA_->enableDisable = false;
|
||||
|
||||
@@ -445,7 +445,7 @@ asynStatus turboPmacController::writeRead(int axisNo, const char *command,
|
||||
getAxisParamChecked(axis, motorStatusProblem, &motorStatusProblem);
|
||||
|
||||
if (motorStatusProblem == 0) {
|
||||
setAxisParamChecked(axis, motorMessageText, drvMessageText);
|
||||
setAxisParamChecked(axis, motorErrorMessage, drvMessageText);
|
||||
setAxisParamChecked(axis, motorStatusProblem, true);
|
||||
setAxisParamChecked(axis, motorStatusCommsError, true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user