Removed lastSpeed caching
After discussion with Sven Schlienger, I now send the new speed unconditionally before each move command. This also means that the caching of the last speed is no longer needed.
This commit is contained in:
@@ -19,7 +19,6 @@ struct masterMacsAxisImpl {
|
|||||||
std::bitset<16> axisStatus;
|
std::bitset<16> axisStatus;
|
||||||
std::bitset<16> axisError;
|
std::bitset<16> axisError;
|
||||||
|
|
||||||
double lastSetSpeed;
|
|
||||||
bool waitForHandshake;
|
bool waitForHandshake;
|
||||||
time_t timeAtHandshake;
|
time_t timeAtHandshake;
|
||||||
bool needInit = true;
|
bool needInit = true;
|
||||||
@@ -122,7 +121,6 @@ masterMacsAxis::masterMacsAxis(masterMacsController *pC, int axisNo)
|
|||||||
pMasterMacsA_ = std::make_unique<masterMacsAxisImpl>((masterMacsAxisImpl){
|
pMasterMacsA_ = std::make_unique<masterMacsAxisImpl>((masterMacsAxisImpl){
|
||||||
.axisStatus = std::bitset<16>(0),
|
.axisStatus = std::bitset<16>(0),
|
||||||
.axisError = std::bitset<16>(0),
|
.axisError = std::bitset<16>(0),
|
||||||
.lastSetSpeed = 0.0,
|
|
||||||
.waitForHandshake = false,
|
.waitForHandshake = false,
|
||||||
.timeAtHandshake = 0,
|
.timeAtHandshake = 0,
|
||||||
.targetReachedUninitialized = true,
|
.targetReachedUninitialized = true,
|
||||||
@@ -262,11 +260,6 @@ asynStatus masterMacsAxis::init() {
|
|||||||
__PRETTY_FUNCTION__, __LINE__);
|
__PRETTY_FUNCTION__, __LINE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cache the motor speed. If this value differs from the one in the motor
|
|
||||||
// record at the start of a movement, the motor record value is sent to
|
|
||||||
// MasterMACS.
|
|
||||||
pMasterMacsA_->lastSetSpeed = motorVelocity;
|
|
||||||
|
|
||||||
// Store the motor position in the parameter library
|
// Store the motor position in the parameter library
|
||||||
pl_status = setMotorPosition(motorPosition);
|
pl_status = setMotorPosition(motorPosition);
|
||||||
if (pl_status != asynSuccess) {
|
if (pl_status != asynSuccess) {
|
||||||
@@ -741,9 +734,7 @@ asynStatus masterMacsAxis::doMove(double position, int relative,
|
|||||||
|
|
||||||
// Set the new motor speed, if the user is allowed to do so and if the
|
// Set the new motor speed, if the user is allowed to do so and if the
|
||||||
// motor speed changed since the last move command.
|
// motor speed changed since the last move command.
|
||||||
if (motorCanSetSpeed != 0 && pMasterMacsA_->lastSetSpeed != motorVelocity) {
|
if (motorCanSetSpeed != 0) {
|
||||||
|
|
||||||
pMasterMacsA_->lastSetSpeed = motorVelocity;
|
|
||||||
|
|
||||||
snprintf(value, sizeof(value), "%lf", motorVelocity);
|
snprintf(value, sizeof(value), "%lf", motorVelocity);
|
||||||
status = pC_->write(axisNo_, 05, value);
|
status = pC_->write(axisNo_, 05, value);
|
||||||
|
|||||||
Reference in New Issue
Block a user