Removed lastSpeed caching
Some checks failed
Test And Build / Lint (push) Failing after 4s
Test And Build / Build (push) Successful in 7s

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:
2025-07-16 11:21:52 +02:00
parent 14a733fb67
commit c32708e49c

View File

@@ -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);