diff --git a/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/Db/ecmcPluginSocketCAN_Com.template b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/Db/ecmcPluginSocketCAN_Com.template new file mode 100644 index 0000000..295a773 --- /dev/null +++ b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/Db/ecmcPluginSocketCAN_Com.template @@ -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") +} diff --git a/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/Db/ecmcPluginSocketCAN_PDO_error.template b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/Db/ecmcPluginSocketCAN_PDO_error.template new file mode 100644 index 0000000..3c34a14 --- /dev/null +++ b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/Db/ecmcPluginSocketCAN_PDO_error.template @@ -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") +} diff --git a/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/Db/ecmcPluginSocketCAN_SDO.substitutions b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/Db/ecmcPluginSocketCAN_SDO.substitutions deleted file mode 100644 index 0813531..0000000 --- a/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/Db/ecmcPluginSocketCAN_SDO.substitutions +++ /dev/null @@ -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} -} diff --git a/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/Db/ecmcPluginSocketCAN_SDO_error.template b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/Db/ecmcPluginSocketCAN_SDO_error.template new file mode 100644 index 0000000..0292400 --- /dev/null +++ b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/Db/ecmcPluginSocketCAN_SDO_error.template @@ -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") +} diff --git a/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/src/ecmcCANOpenPDO.cpp b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/src/ecmcCANOpenPDO.cpp index 3fe830f..4885f2a 100644 --- a/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/src/ecmcCANOpenPDO.cpp +++ b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/src/ecmcCANOpenPDO.cpp @@ -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 diff --git a/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/src/ecmcCANOpenSDO.cpp b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/src/ecmcCANOpenSDO.cpp index 10a1753..cbe024f 100644 --- a/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/src/ecmcCANOpenSDO.cpp +++ b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/src/ecmcCANOpenSDO.cpp @@ -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 diff --git a/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/src/ecmcSocketCAN.cpp b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/src/ecmcSocketCAN.cpp index 62ec87e..76cf121 100644 --- a/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/src/ecmcSocketCAN.cpp +++ b/ecmc_plugin_socketcan/ecmc_plugin_socketcanApp/src/ecmcSocketCAN.cpp @@ -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