7 Commits
1.5.0 ... 1.5.1

Author SHA1 Message Date
f1c41d3081 Perform poll even if init fails
Some checks failed
Test And Build / Lint (push) Failing after 5s
Test And Build / Build (push) Successful in 8s
2025-09-17 13:12:21 +02:00
d78586a815 Updated sinqMotor to 1.5.6
Some checks failed
Test And Build / Lint (push) Failing after 4s
Test And Build / Build (push) Successful in 7s
2025-09-17 12:38:30 +02:00
ebcf99ac56 Updated sinqMotor to 1.5.5 2025-09-17 12:34:47 +02:00
de32298609 Updated sinqMotor to 1.5.4 2025-09-17 12:19:00 +02:00
8f457889c0 Updated sinqMotor to 1.5.3 2025-09-17 11:28:53 +02:00
6f63e521c1 Updated sinqMotor to 1.5.2 2025-09-17 11:25:40 +02:00
670f01fbe3 Updated sinqMotor to 1.5.1 to get a better error message in case of speed problems 2025-09-17 10:54:56 +02:00
6 changed files with 58 additions and 31 deletions

View File

@@ -29,8 +29,8 @@ TEMPLATES += db/masterMacs.db
DBDS += sinqMotor/src/sinqMotor.dbd DBDS += sinqMotor/src/sinqMotor.dbd
DBDS += src/masterMacs.dbd DBDS += src/masterMacs.dbd
USR_CFLAGS += -Wall -Wextra -Weffc++ -Wunused-result -Wextra -Werror USR_CFLAGS += -Wall -Wextra -Wunused-result -Wextra -Werror
# These flags define the expected firmware version. See README.md, section # These flags define the expected firmware version. See README.md, section
# "Firmware version checking" for details. # "Firmware version checking" for details.
USR_CXXFLAGS += -DFIRMWARE_MAJOR_VERSION=2 -DFIRMWARE_MINOR_VERSION=2 USR_CXXFLAGS += -DFIRMWARE_MAJOR_VERSION=2 -DFIRMWARE_MINOR_VERSION=2 -Wall -Wextra -Weffc++ -Wunused-result -Wextra

View File

@@ -85,7 +85,14 @@ void appendErrorMessage(char *fullMessage, size_t capacityFullMessage,
} }
masterMacsAxis::masterMacsAxis(masterMacsController *pC, int axisNo) masterMacsAxis::masterMacsAxis(masterMacsController *pC, int axisNo)
: sinqAxis(pC, axisNo), pC_(pC) { : sinqAxis(pC, axisNo), pC_(pC),
pMasterMacsA_(std::make_unique<masterMacsAxisImpl>((masterMacsAxisImpl){
.axisStatus = std::bitset<16>(0),
.axisError = std::bitset<16>(0),
.waitForHandshake = false,
.timeAtHandshake = 0,
.targetReachedUninitialized = true,
})) {
asynStatus status = asynSuccess; asynStatus status = asynSuccess;
@@ -118,14 +125,6 @@ masterMacsAxis::masterMacsAxis(masterMacsController *pC, int axisNo)
// Collect all axes into this list which will be used in the hook function // Collect all axes into this list which will be used in the hook function
axes.push_back(this); axes.push_back(this);
pMasterMacsA_ = std::make_unique<masterMacsAxisImpl>((masterMacsAxisImpl){
.axisStatus = std::bitset<16>(0),
.axisError = std::bitset<16>(0),
.waitForHandshake = false,
.timeAtHandshake = 0,
.targetReachedUninitialized = true,
});
// masterMacs motors can always be disabled // masterMacs motors can always be disabled
status = pC_->setIntegerParam(axisNo_, pC_->motorCanDisable(), 1); status = pC_->setIntegerParam(axisNo_, pC_->motorCanDisable(), 1);
if (status != asynSuccess) { if (status != asynSuccess) {
@@ -330,10 +329,8 @@ asynStatus masterMacsAxis::doPoll(bool *moving) {
// Does the axis need to be intialized? // Does the axis need to be intialized?
if (needInit()) { if (needInit()) {
rw_status = init(); // Perform the rest of the poll, but remember if sth. failed in the init.
if (rw_status != asynSuccess) { poll_status = init();
return rw_status;
}
} }
// Are we currently waiting for a handshake? // Are we currently waiting for a handshake?
@@ -688,6 +685,11 @@ asynStatus masterMacsAxis::doMove(double position, int relative,
double minVelocity, double maxVelocity, double minVelocity, double maxVelocity,
double acceleration) { double acceleration) {
// Suppress unused variable warning
(void)minVelocity;
(void)maxVelocity;
(void)acceleration;
// Status of read-write-operations of ASCII commands to the controller // Status of read-write-operations of ASCII commands to the controller
asynStatus status = asynSuccess; asynStatus status = asynSuccess;
@@ -790,6 +792,9 @@ asynStatus masterMacsAxis::doMove(double position, int relative,
asynStatus masterMacsAxis::stop(double acceleration) { asynStatus masterMacsAxis::stop(double acceleration) {
// Suppress unused variable warning
(void)acceleration;
asynStatus status = pC_->write(axisNo_, 00, "8"); asynStatus status = pC_->write(axisNo_, 00, "8");
if (status != asynSuccess) { if (status != asynSuccess) {
setAxisParamChecked(this, motorStatusProblem, true); setAxisParamChecked(this, motorStatusProblem, true);
@@ -845,13 +850,19 @@ asynStatus masterMacsAxis::nodeReset() {
/* /*
Home the axis. On absolute encoder systems, this is a no-op Home the axis. On absolute encoder systems, this is a no-op
*/ */
asynStatus masterMacsAxis::doHome(double min_velocity, double max_velocity, asynStatus masterMacsAxis::doHome(double minVelocity, double maxVelocity,
double acceleration, int forwards) { double acceleration, int forwards) {
char response[pC_->MAXBUF_] = {0}; char response[pC_->MAXBUF_] = {0};
// ========================================================================= // =========================================================================
// Suppress unused variable warning
(void)minVelocity;
(void)maxVelocity;
(void)acceleration;
(void)forwards;
getAxisParamChecked(this, encoderType, &response); getAxisParamChecked(this, encoderType, &response);
// Only send the home command if the axis has an incremental encoder // Only send the home command if the axis has an incremental encoder
@@ -1246,8 +1257,9 @@ static const iocshArg CreateAxisArg0 = {"Controller name (e.g. mmacs1)",
static const iocshArg CreateAxisArg1 = {"Axis number", iocshArgInt}; static const iocshArg CreateAxisArg1 = {"Axis number", iocshArgInt};
static const iocshArg *const CreateAxisArgs[] = {&CreateAxisArg0, static const iocshArg *const CreateAxisArgs[] = {&CreateAxisArg0,
&CreateAxisArg1}; &CreateAxisArg1};
static const iocshFuncDef configMasterMacsCreateAxis = {"masterMacsAxis", 2, static const iocshFuncDef configMasterMacsCreateAxis = {
CreateAxisArgs}; "masterMacsAxis", 2, CreateAxisArgs,
"Create a new instance of a MasterMACS axis."};
static void configMasterMacsCreateAxisCallFunc(const iocshArgBuf *args) { static void configMasterMacsCreateAxisCallFunc(const iocshArgBuf *args) {
masterMacsCreateAxis(args[0].sval, args[1].ival); masterMacsCreateAxis(args[0].sval, args[1].ival);
} }

View File

@@ -16,6 +16,13 @@ class HIDDEN masterMacsAxis : public sinqAxis {
*/ */
masterMacsAxis(masterMacsController *pController, int axisNo); masterMacsAxis(masterMacsController *pController, int axisNo);
/**
* @brief Delete the copy and copy assignment constructors, because this
* class should not be copied (it is tied to hardware!)
*/
masterMacsAxis(const masterMacsAxis &) = delete;
masterMacsAxis &operator=(const masterMacsAxis &) = delete;
/** /**
* @brief Destroy the masterMacsAxis * @brief Destroy the masterMacsAxis
* *
@@ -50,13 +57,13 @@ class HIDDEN masterMacsAxis : public sinqAxis {
* *
* @param position * @param position
* @param relative * @param relative
* @param min_velocity * @param minVelocity
* @param max_velocity * @param maxVelocity
* @param acceleration * @param acceleration
* @return asynStatus * @return asynStatus
*/ */
asynStatus doMove(double position, int relative, double min_velocity, asynStatus doMove(double position, int relative, double minVelocity,
double max_velocity, double acceleration); double maxVelocity, double acceleration);
/** /**
* @brief Implementation of the `stop` function from asynMotorAxis * @brief Implementation of the `stop` function from asynMotorAxis

View File

@@ -81,7 +81,12 @@ masterMacsController::masterMacsController(const char *portName,
: sinqController(portName, ipPortConfigName, numAxes, movingPollPeriod, : sinqController(portName, ipPortConfigName, numAxes, movingPollPeriod,
idlePollPeriod, idlePollPeriod,
// No additional parameter library entries // No additional parameter library entries
0) 0),
pMasterMacsC_(
std::make_unique<masterMacsControllerImpl>((masterMacsControllerImpl){
.comTimeout = comTimeout,
.nodeReset = 0, // Overwritten later
}))
{ {
@@ -89,11 +94,6 @@ masterMacsController::masterMacsController(const char *portName,
asynStatus status = asynSuccess; asynStatus status = asynSuccess;
char response[MAXBUF_] = {0}; char response[MAXBUF_] = {0};
pMasterMacsC_ =
std::make_unique<masterMacsControllerImpl>((masterMacsControllerImpl){
.comTimeout = comTimeout,
});
// ========================================================================= // =========================================================================
// Create additional parameter library entries // Create additional parameter library entries
@@ -231,7 +231,7 @@ asynStatus masterMacsController::writeInt32(asynUser *pasynUser,
} }
asynStatus masterMacsController::read(int axisNo, int tcpCmd, char *response, asynStatus masterMacsController::read(int axisNo, int tcpCmd, char *response,
double comTimeout) { double /*comTimeout*/) {
return writeRead(axisNo, tcpCmd, NULL, response); return writeRead(axisNo, tcpCmd, NULL, response);
} }
@@ -639,7 +639,8 @@ static const iocshArg *const CreateControllerArgs[] = {
&CreateControllerArg0, &CreateControllerArg1, &CreateControllerArg2, &CreateControllerArg0, &CreateControllerArg1, &CreateControllerArg2,
&CreateControllerArg3, &CreateControllerArg4, &CreateControllerArg5}; &CreateControllerArg3, &CreateControllerArg4, &CreateControllerArg5};
static const iocshFuncDef configMasterMacsCreateController = { static const iocshFuncDef configMasterMacsCreateController = {
"masterMacsController", 6, CreateControllerArgs}; "masterMacsController", 6, CreateControllerArgs,
"Create a new instance of a MasterMACS controller."};
static void configMasterMacsCreateControllerCallFunc(const iocshArgBuf *args) { static void configMasterMacsCreateControllerCallFunc(const iocshArgBuf *args) {
masterMacsCreateController(args[0].sval, args[1].sval, args[2].ival, masterMacsCreateController(args[0].sval, args[1].sval, args[2].ival,
args[3].dval, args[4].dval, args[5].dval); args[3].dval, args[4].dval, args[5].dval);

View File

@@ -38,6 +38,13 @@ class HIDDEN masterMacsController : public sinqController {
int numAxes, double movingPollPeriod, int numAxes, double movingPollPeriod,
double idlePollPeriod, double comTimeout); double idlePollPeriod, double comTimeout);
/**
* @brief Delete the copy and copy assignment constructors, because this
* class should not be copied (it is tied to hardware!)
*/
masterMacsController(const masterMacsController &) = delete;
masterMacsController &operator=(const masterMacsController &) = delete;
/** /**
* @brief Overloaded version of the sinqController version * @brief Overloaded version of the sinqController version
* *