Can set and read enable, something broken with movements and status
This commit is contained in:

committed by
brambilla_m

parent
403eecafae
commit
92364a1de8
@ -927,8 +927,10 @@ asynStatus pmacV3Axis::getAxisStatus(bool *moving) {
|
||||
updateMsgTxtFromDriver("Cannot read Axis position and status");
|
||||
}
|
||||
|
||||
// printf("axStat: %d\n", axStat);
|
||||
setIntegerParam(p3C_->axisState_, axStat);
|
||||
|
||||
int st = setIntegerParam(p3C_->axisEnabled_, axStat >= 0);
|
||||
// st = callParamCallbacks();
|
||||
// printf("axStat: callParamCallbacks -> ok: %d\n", st == asynSuccess);
|
||||
|
||||
setDoubleParam(pC_->motorPosition_, position * MULT);
|
||||
setDoubleParam(pC_->motorEncoderPosition_, position * MULT);
|
||||
@ -969,6 +971,7 @@ asynStatus pmacV3Axis::getAxisStatus(bool *moving) {
|
||||
errlogPrintf("Axis %d did not start within 10 seconds!! BROKEN\n", axisNo_);
|
||||
updateMsgTxtFromDriver("Axis did not start within 10 seconds");
|
||||
starting = 0;
|
||||
callParamCallbacks();
|
||||
return asynSuccess;
|
||||
}
|
||||
|
||||
@ -994,6 +997,7 @@ asynStatus pmacV3Axis::getAxisStatus(bool *moving) {
|
||||
updateMsgTxtFromDriver(
|
||||
"Axis stayed in 5,6 for more then 60 seconds: BROKEN");
|
||||
status6Time = 0;
|
||||
callParamCallbacks();
|
||||
return asynSuccess;
|
||||
} else {
|
||||
status6Time = time(NULL);
|
||||
|
@ -32,7 +32,7 @@
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
|
||||
#include <epicsTime.h>
|
||||
#include "epicsTime.h"
|
||||
#include <epicsThread.h>
|
||||
#include <epicsExport.h>
|
||||
#include <epicsString.h>
|
||||
@ -148,8 +148,6 @@ pmacController::pmacController(const char *portName, const char *lowLevelPortNam
|
||||
{
|
||||
static const char *functionName = "pmacController::pmacController";
|
||||
|
||||
printf(" Constructor: %s\n", functionName);
|
||||
|
||||
//Initialize non static data members
|
||||
lowLevelPortUser_ = NULL;
|
||||
debugFlag_ = 0;
|
||||
@ -366,8 +364,11 @@ asynStatus pmacController::writeFloat64(asynUser *pasynUser, epicsFloat64 value)
|
||||
|
||||
/* Set the parameter and readback in the parameter library. */
|
||||
status = pAxis->setDoubleParam(function, value);
|
||||
printf("%s: pAxis->setDoubleParam(%d, %lf)\n", functionName, function, value);
|
||||
|
||||
// if (function == motorPosition_) {
|
||||
if (function == motorPosition_) {
|
||||
printf("%s: pAxis->setDoubleParam(%d, %lf)\n", functionName, function, value);
|
||||
}
|
||||
// /*Set position on motor axis.*/
|
||||
// epicsInt32 position = (epicsInt32) floor(value*32/pAxis->scale_ + 0.5);
|
||||
|
||||
@ -580,7 +581,7 @@ SeleneController::SeleneController(const char *portName, const char *lowLevelPor
|
||||
pmacController(portName, lowLevelPortName, lowLevelPortAddress, numAxes, movingPollPeriod, idlePollPeriod, extraParams) {
|
||||
static const char *functionName = "pmacV3Controller::pmacV3Controller";
|
||||
createParam(EnableAxisString, asynParamInt32, &enableAxis_);
|
||||
createParam(AxisStateString, asynParamInt32, &axisState_);
|
||||
createParam(AxisEnabledString, asynParamInt32, &axisEnabled_);
|
||||
callParamCallbacks();
|
||||
}
|
||||
|
||||
@ -815,6 +816,7 @@ asynStatus SeleneController::writeFloat64(asynUser *pasynUser, epicsFloat64 valu
|
||||
|
||||
}
|
||||
|
||||
|
||||
asynStatus pmacV3Controller::writeInt32(asynUser *pasynUser, epicsInt32 value) {
|
||||
int function = pasynUser->reason;
|
||||
asynStatus status = asynError;
|
||||
@ -845,13 +847,14 @@ asynStatus pmacV3Controller::writeInt32(asynUser *pasynUser, epicsInt32 value) {
|
||||
// Execute the command.
|
||||
if (command[0] != 0 && status == asynSuccess) {
|
||||
status = lowLevelWriteRead(pAxis->axisNo_, command, response);
|
||||
printf("%s: lowLevelWriteRead: success=%d\n (function == enableAxis_? %d)\n",functionName, status==asynSuccess, function == enableAxis_);
|
||||
}
|
||||
|
||||
// Call base class method
|
||||
// This will handle callCallbacks even if the function was handled here.
|
||||
status = asynMotorController::writeInt32(pasynUser, value);
|
||||
// status = asynMotorController::writeInt32(pasynUser, value);
|
||||
|
||||
return status;
|
||||
return pmacController::writeInt32(pasynUser, value);
|
||||
}
|
||||
|
||||
asynStatus pmacV3Controller::readInt32(asynUser *pasynUser, epicsInt32 *value) {
|
||||
@ -869,14 +872,14 @@ asynStatus pmacV3Controller::readInt32(asynUser *pasynUser, epicsInt32 *value) {
|
||||
if (!pAxis) {
|
||||
return asynError;
|
||||
}
|
||||
if (function == axisState_) {
|
||||
if (function == axisEnabled_) {
|
||||
snprintf(command, sizeof(command), "P%2.2d00", pAxis->axisNo_);
|
||||
status = this->lowLevelWriteRead(pAxis->axisNo_, command, response);
|
||||
*value = strtol(response, NULL, 10);
|
||||
|
||||
setIntegerParam(axisState_, *value);
|
||||
int st = setIntegerParam(axisEnabled_, *value);
|
||||
// printf("%s: setIntegerParam(%d, %d) -> success=%d\n", functionName,axisEnabled_, *value, st==asynSuccess);
|
||||
callParamCallbacks();
|
||||
return status;
|
||||
}
|
||||
return pmacController::readInt32(pasynUser, value);
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ class SeleneController : public pmacController {
|
||||
};
|
||||
|
||||
#define EnableAxisString "ENABLE_AXIS"
|
||||
#define AxisStateString "AXIS_STATE"
|
||||
#define AxisEnabledString "AXIS_ENABLED"
|
||||
|
||||
class pmacV3Controller : public pmacController {
|
||||
public:
|
||||
@ -186,7 +186,7 @@ protected:
|
||||
pmacV3Axis **pAxes_; /**< Array of pointers to axis objects */
|
||||
|
||||
int enableAxis_;
|
||||
int axisState_;
|
||||
int axisEnabled_;
|
||||
};
|
||||
|
||||
#endif /* pmacController_H */
|
||||
|
Reference in New Issue
Block a user