honor timeouts during calibration
parent
8988e8472f
commit
fa23a199d3
|
@ -221,6 +221,7 @@ Value |Description
|
|||
1 |Emergency stop
|
||||
2 |Timeout
|
||||
3 |Stall detected
|
||||
4 |Calibration error
|
||||
14 |Invalid command
|
||||
15 |No config
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#ifndef CONFIG_H_
|
||||
#define CONFIG_H_
|
||||
|
||||
const char SOFTWARE_VERSION[] = "6.5.5\0";
|
||||
const char SOFTWARE_VERSION[] = "6.5.6\0";
|
||||
|
||||
const int LOGGING = 0;
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ enum ErrorListEnum
|
|||
ERR_EMERGENCY_STOP = 1,
|
||||
ERR_TIMEOUT = 2,
|
||||
ERR_STALL_DETECTED = 3,
|
||||
ERR_CALIBRATION_ERROR = 4,
|
||||
|
||||
ERR_INVALID_COMMAND = 14,
|
||||
ERR_PARAMS_NOT_OK = 15,
|
||||
|
|
|
@ -928,7 +928,7 @@ int Movement::calibrateAxis(int axis)
|
|||
loadMotorSettings();
|
||||
loadEncoderSettings();
|
||||
|
||||
//unsigned long timeStart = millis();
|
||||
unsigned long timeStart = millis();
|
||||
|
||||
bool movementDone = false;
|
||||
|
||||
|
@ -1004,7 +1004,7 @@ int Movement::calibrateAxis(int axis)
|
|||
break;
|
||||
default:
|
||||
Serial.print("R99 Calibration error: invalid axis selected\r\n");
|
||||
error = 1;
|
||||
error = ERR_CALIBRATION_ERROR;
|
||||
CurrentState::getInstance()->setLastError(error);
|
||||
return error;
|
||||
}
|
||||
|
@ -1014,7 +1014,7 @@ int Movement::calibrateAxis(int axis)
|
|||
if (calibAxis->endStopMin() || calibAxis->endStopMax())
|
||||
{
|
||||
Serial.print("R99 Calibration error: end stop active before start\r\n");
|
||||
error = 1;
|
||||
error = ERR_CALIBRATION_ERROR;
|
||||
CurrentState::getInstance()->setLastError(error);
|
||||
return error;
|
||||
}
|
||||
|
@ -1059,6 +1059,41 @@ int Movement::calibrateAxis(int axis)
|
|||
|
||||
checkAxisVsEncoder(calibAxis, calibEncoder, &motorConsMissedSteps[axis], &motorLastPosition[axis], &motorConsEncoderLastPosition[axis], &motorConsEncoderUseForPos[axis], &motorConsMissedStepsDecay[axis], &motorConsEncoderEnabled[axis]);
|
||||
|
||||
// Check timeouts
|
||||
if (!movementDone && ((millis() >= timeStart && millis() - timeStart > timeOut[axis] * 1000) || (millis() < timeStart && millis() > timeOut[axis] * 1000)))
|
||||
{
|
||||
calibAxis->disableMotor();
|
||||
switch (axis)
|
||||
{
|
||||
case 0:
|
||||
Serial.print(COMM_REPORT_TIMEOUT_X);
|
||||
CurrentState::getInstance()->printQAndNewLine();
|
||||
Serial.print("R99 timeout X axis\r\n");
|
||||
error = ERR_TIMEOUT;
|
||||
CurrentState::getInstance()->setLastError(error);
|
||||
return error;
|
||||
case 1:
|
||||
Serial.print(COMM_REPORT_TIMEOUT_Y);
|
||||
CurrentState::getInstance()->printQAndNewLine();
|
||||
Serial.print("R99 timeout Y axis\r\n");
|
||||
error = ERR_TIMEOUT;
|
||||
CurrentState::getInstance()->setLastError(error);
|
||||
return error;
|
||||
case 2:
|
||||
Serial.print(COMM_REPORT_TIMEOUT_Z);
|
||||
CurrentState::getInstance()->printQAndNewLine();
|
||||
Serial.print("R99 timeout Z axis\r\n");
|
||||
error = ERR_TIMEOUT;
|
||||
CurrentState::getInstance()->setLastError(error);
|
||||
return error;
|
||||
default:
|
||||
Serial.print("R99 Calibration error: invalid axis selected\r\n");
|
||||
error = ERR_CALIBRATION_ERROR;
|
||||
CurrentState::getInstance()->setLastError(error);
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
// Check if there is an emergency stop command
|
||||
if (Serial.available() > 0)
|
||||
{
|
||||
|
@ -1070,7 +1105,7 @@ int Movement::calibrateAxis(int axis)
|
|||
CurrentState::getInstance()->setEmergencyStop();
|
||||
Serial.print(COMM_REPORT_EMERGENCY_STOP);
|
||||
CurrentState::getInstance()->printQAndNewLine();
|
||||
error = 1;
|
||||
error = ERR_EMERGENCY_STOP;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1175,6 +1210,8 @@ int Movement::calibrateAxis(int axis)
|
|||
Serial.print(" calibrating length");
|
||||
Serial.print("\r\n");
|
||||
|
||||
timeStart = millis();
|
||||
|
||||
stepsCount = 0;
|
||||
movementDone = false;
|
||||
*missedSteps = 0;
|
||||
|
@ -1201,6 +1238,41 @@ int Movement::calibrateAxis(int axis)
|
|||
|
||||
checkAxisVsEncoder(calibAxis, calibEncoder, &motorConsMissedSteps[axis], &motorLastPosition[axis], &motorConsEncoderLastPosition[axis], &motorConsEncoderUseForPos[axis], &motorConsMissedStepsDecay[axis], &motorConsEncoderEnabled[axis]);
|
||||
|
||||
// Check timeouts
|
||||
if (!movementDone && ((millis() >= timeStart && millis() - timeStart > timeOut[axis] * 1000) || (millis() < timeStart && millis() > timeOut[axis] * 1000)))
|
||||
{
|
||||
calibAxis->disableMotor();
|
||||
switch (axis)
|
||||
{
|
||||
case 0:
|
||||
Serial.print(COMM_REPORT_TIMEOUT_X);
|
||||
CurrentState::getInstance()->printQAndNewLine();
|
||||
Serial.print("R99 timeout X axis\r\n");
|
||||
error = ERR_TIMEOUT;
|
||||
CurrentState::getInstance()->setLastError(error);
|
||||
return error;
|
||||
case 1:
|
||||
Serial.print(COMM_REPORT_TIMEOUT_Y);
|
||||
CurrentState::getInstance()->printQAndNewLine();
|
||||
Serial.print("R99 timeout Y axis\r\n");
|
||||
error = ERR_TIMEOUT;
|
||||
CurrentState::getInstance()->setLastError(error);
|
||||
return error;
|
||||
case 2:
|
||||
Serial.print(COMM_REPORT_TIMEOUT_Z);
|
||||
CurrentState::getInstance()->printQAndNewLine();
|
||||
Serial.print("R99 timeout Z axis\r\n");
|
||||
error = ERR_TIMEOUT;
|
||||
CurrentState::getInstance()->setLastError(error);
|
||||
return error;
|
||||
default:
|
||||
Serial.print("R99 Calibration error: invalid axis selected\r\n");
|
||||
error = ERR_CALIBRATION_ERROR;
|
||||
CurrentState::getInstance()->setLastError(error);
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
// Check if there is an emergency stop command
|
||||
if (Serial.available() > 0)
|
||||
{
|
||||
|
@ -1212,7 +1284,7 @@ int Movement::calibrateAxis(int axis)
|
|||
CurrentState::getInstance()->setEmergencyStop();
|
||||
Serial.print(COMM_REPORT_EMERGENCY_STOP);
|
||||
CurrentState::getInstance()->printQAndNewLine();
|
||||
error = 1;
|
||||
error = ERR_EMERGENCY_STOP;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue