Add some error handling
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
record(ai,"$(P)CAN-Stat-ComErr"){
|
||||
field(DESC, "Communication error")
|
||||
field(PINI, "$(PINI=1)")
|
||||
field(VAL, "0")
|
||||
field(DTYP, "asynInt32")
|
||||
field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.can.com.error?")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
record(bi,"$(P)CAN-Stat-Connected"){
|
||||
field(DESC, "Connected")
|
||||
field(PINI, "$(PINI=1)")
|
||||
field(VAL, "0")
|
||||
field(DTYP, "asynInt32")
|
||||
field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.can.com.connected?")
|
||||
field(SCAN, "I/O Intr")
|
||||
field(ZNAM, "Not connected")
|
||||
field(ONAM, "Connected")
|
||||
field(ZSV, "MAJOR")
|
||||
field(OSV, "NO_ALARM")
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
record(ai,"$(P)CAN${CH_ID}-${suffix=}"){
|
||||
field(DESC, "SDO error code")
|
||||
field(PINI, "$(PINI=1)")
|
||||
field(VAL, "0")
|
||||
field(DTYP, "asynInt32")
|
||||
field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.can.dev${DEV_ID}.pdo.${source=value}.error?")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
file "ecmcPluginSocketCAN_SDO_input.template"
|
||||
{
|
||||
pattern {CH_ID, DEV_ID, NELM, suffix, source, DTYP, FTVL }
|
||||
{03, 3, 28, SDO01-Array, analogValues1, asynInt16ArrayIn, SHORT}
|
||||
{03, 3, 28, SDO02-Array, analogValues2, asynInt16ArrayIn, SHORT}
|
||||
{03, 3, 28, SDO03-Array, analogValues3, asynInt16ArrayIn, SHORT}
|
||||
{03, 3, 28, SDO04-Array, analogValues4, asynInt16ArrayIn, SHORT}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
record(ai,"$(P)CAN${CH_ID}-${suffix=}"){
|
||||
field(DESC, "SDO error code")
|
||||
field(PINI, "$(PINI=1)")
|
||||
field(VAL, "0")
|
||||
field(DTYP, "asynInt32")
|
||||
field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.can.dev${DEV_ID}.sdo.${source=value}.error?")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
@@ -232,7 +232,7 @@ void ecmcCANOpenPDO::initAsyn() {
|
||||
|
||||
// Add resultdata "plugin.can.dev%d.error"
|
||||
paramName = ECMC_PLUGIN_ASYN_PREFIX + std::string(".dev") +
|
||||
to_string(nodeId_) + ".sdo" /*+ to_string(objIndex_)*/ + std::string(".error");
|
||||
to_string(nodeId_) + ".pdo" + "." + std::string(name_) + std::string(".error");
|
||||
|
||||
errorParam_ = ecmcAsynPort->addNewAvailParam(
|
||||
paramName.c_str(), // name
|
||||
|
||||
@@ -251,7 +251,6 @@ void ecmcCANOpenSDO::execute() {
|
||||
if(dbgMode_) {
|
||||
printf("STATE = READ_REQ_TRANSFER %s\n",name_);
|
||||
}
|
||||
// IMPORTANT!! LOCKLOCK!!!! LOCK all slave trafic while 0x583 and 0x603 for any other trafic while processing
|
||||
//initiate
|
||||
recivedBytes_ = 0;
|
||||
readStates_ = READ_WAIT_FOR_CONF;
|
||||
@@ -287,7 +286,7 @@ void ecmcCANOpenSDO::newRxFrame(can_frame *frame) {
|
||||
else { // Write
|
||||
errorCode = writeDataStateMachine(frame);
|
||||
}
|
||||
if(errorCode && errorCode_ != errorCode) {
|
||||
if(errorCode && (errorCode_ != errorCode)) {
|
||||
errorCode_ = errorCode;
|
||||
refreshNeeded_ = 1;
|
||||
}
|
||||
@@ -615,7 +614,7 @@ void ecmcCANOpenSDO::initAsyn() {
|
||||
|
||||
// Add resultdata "plugin.can.dev%d.error"
|
||||
paramName = ECMC_PLUGIN_ASYN_PREFIX + std::string(".dev") +
|
||||
to_string(nodeId_) + ".sdo" /*+ to_string(objIndex_)*/ + std::string(".error");
|
||||
to_string(nodeId_) + ".sdo" + "." + std::string(name_) + std::string(".error");
|
||||
|
||||
errorParam_ = ecmcAsynPort->addNewAvailParam(
|
||||
paramName.c_str(), // name
|
||||
|
||||
@@ -445,7 +445,7 @@ void ecmcSocketCAN::initAsyn() {
|
||||
ecmcAsynPort->callParamCallbacks(ECMC_ASYN_DEFAULT_LIST, ECMC_ASYN_DEFAULT_ADDR);
|
||||
|
||||
// Add resultdata "plugin.can.read.connected"
|
||||
paramName = ECMC_PLUGIN_ASYN_PREFIX + std::string(".read.connected");
|
||||
paramName = ECMC_PLUGIN_ASYN_PREFIX + std::string(".com.connected");
|
||||
|
||||
connectedParam_ = ecmcAsynPort->addNewAvailParam(
|
||||
paramName.c_str(), // name
|
||||
|
||||
Reference in New Issue
Block a user