|
@ -2,7 +2,7 @@ |
|
|
|
|
|
|
|
|
#include "transmit_disfection_protocol/transmit_disfection_protocol.hpp"
|
|
|
#include "transmit_disfection_protocol/transmit_disfection_protocol.hpp"
|
|
|
using namespace iflytop; |
|
|
using namespace iflytop; |
|
|
using namespace zscanprotocol; |
|
|
|
|
|
|
|
|
using namespace transmit_disfection_protocol; |
|
|
|
|
|
|
|
|
#define WORK_STATE_REG 0x0000
|
|
|
#define WORK_STATE_REG 0x0000
|
|
|
#define CTRL_STATE_REG 0x0001
|
|
|
#define CTRL_STATE_REG 0x0001
|
|
@ -10,7 +10,7 @@ using namespace zscanprotocol; |
|
|
#define OVERTIME 100
|
|
|
#define OVERTIME 100
|
|
|
#define TAG "PreportionalValveCtrl"
|
|
|
#define TAG "PreportionalValveCtrl"
|
|
|
|
|
|
|
|
|
void PreportionalValveCtrl::initialize(UART_HandleTypeDef* huart) {//
|
|
|
|
|
|
|
|
|
void PreportionalValveCtrl::initialize(UART_HandleTypeDef* huart) { //
|
|
|
m_modbusBlockHost.initialize(huart); |
|
|
m_modbusBlockHost.initialize(huart); |
|
|
m_modbusBlockHost.enableDump(false); |
|
|
m_modbusBlockHost.enableDump(false); |
|
|
} |
|
|
} |
|
@ -18,21 +18,21 @@ void PreportionalValveCtrl::initialize(UART_HandleTypeDef* huart) {// |
|
|
int32_t PreportionalValveCtrl::writeReg06(uint8_t slaveAddr, uint16_t regAddr, uint16_t regVal) { |
|
|
int32_t PreportionalValveCtrl::writeReg06(uint8_t slaveAddr, uint16_t regAddr, uint16_t regVal) { |
|
|
int32_t err = m_modbusBlockHost.writeReg06(slaveAddr, regAddr, regVal, OVERTIME); |
|
|
int32_t err = m_modbusBlockHost.writeReg06(slaveAddr, regAddr, regVal, OVERTIME); |
|
|
if (err == 0) return 0; |
|
|
if (err == 0) return 0; |
|
|
return err::kerr_subdevice_overtime; |
|
|
|
|
|
|
|
|
return kerr_subdevice_overtime; |
|
|
} |
|
|
} |
|
|
int32_t PreportionalValveCtrl::readReg03(uint8_t slaveAddr, uint16_t regAddr, uint16_t* regVal) { |
|
|
int32_t PreportionalValveCtrl::readReg03(uint8_t slaveAddr, uint16_t regAddr, uint16_t* regVal) { |
|
|
int32_t err = m_modbusBlockHost.readReg03(slaveAddr, regAddr, regVal, OVERTIME); |
|
|
int32_t err = m_modbusBlockHost.readReg03(slaveAddr, regAddr, regVal, OVERTIME); |
|
|
if (err == 0) return 0; |
|
|
if (err == 0) return 0; |
|
|
return err::kerr_subdevice_overtime; |
|
|
|
|
|
|
|
|
return kerr_subdevice_overtime; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
int32_t PreportionalValveCtrl::setValvePos(int32_t valueid, int32_t pos) { //
|
|
|
int32_t PreportionalValveCtrl::setValvePos(int32_t valueid, int32_t pos) { //
|
|
|
int32_t ret = 0; |
|
|
int32_t ret = 0; |
|
|
if (valueid > 255 || valueid < 1) { |
|
|
if (valueid > 255 || valueid < 1) { |
|
|
return err::kerr_invalid_param; |
|
|
|
|
|
|
|
|
return kerr_invalid_param; |
|
|
} |
|
|
} |
|
|
ret = writeReg06(valueid, CTRL_STATE_REG, pos); |
|
|
ret = writeReg06(valueid, CTRL_STATE_REG, pos); |
|
|
if (!ret) return err::kerr_subdevice_overtime; |
|
|
|
|
|
|
|
|
if (!ret) return kerr_subdevice_overtime; |
|
|
|
|
|
|
|
|
m_last_set_valve_ticket = HAL_GetTick(); |
|
|
m_last_set_valve_ticket = HAL_GetTick(); |
|
|
m_targetpos[valueid] = pos; |
|
|
m_targetpos[valueid] = pos; |
|
@ -42,12 +42,12 @@ int32_t PreportionalValveCtrl::setValvePos(int32_t valueid, int32_t pos) { // |
|
|
int32_t PreportionalValveCtrl::getValvePos(int32_t valueid, int32_t* pos) { |
|
|
int32_t PreportionalValveCtrl::getValvePos(int32_t valueid, int32_t* pos) { |
|
|
int32_t ret = 0; |
|
|
int32_t ret = 0; |
|
|
if (valueid > 255 || valueid < 1) { |
|
|
if (valueid > 255 || valueid < 1) { |
|
|
return err::kerr_invalid_param; |
|
|
|
|
|
|
|
|
return kerr_invalid_param; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
uint16_t pos16 = 0; |
|
|
uint16_t pos16 = 0; |
|
|
ret = readReg03(valueid, POS_STATE_REG, &pos16); |
|
|
ret = readReg03(valueid, POS_STATE_REG, &pos16); |
|
|
if (!ret) return err::kerr_subdevice_overtime; |
|
|
|
|
|
|
|
|
if (!ret) return kerr_subdevice_overtime; |
|
|
|
|
|
|
|
|
*pos = pos16; |
|
|
*pos = pos16; |
|
|
return 0; |
|
|
return 0; |
|
@ -55,12 +55,12 @@ int32_t PreportionalValveCtrl::getValvePos(int32_t valueid, int32_t* pos) { |
|
|
int32_t PreportionalValveCtrl::getValveOrderPos(int32_t valueid, int32_t* pos) { |
|
|
int32_t PreportionalValveCtrl::getValveOrderPos(int32_t valueid, int32_t* pos) { |
|
|
int32_t ret = 0; |
|
|
int32_t ret = 0; |
|
|
if (valueid > 255 || valueid < 1) { |
|
|
if (valueid > 255 || valueid < 1) { |
|
|
return err::kerr_invalid_param; |
|
|
|
|
|
|
|
|
return kerr_invalid_param; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
uint16_t pos16 = 0; |
|
|
uint16_t pos16 = 0; |
|
|
ret = readReg03(valueid, CTRL_STATE_REG, &pos16); |
|
|
ret = readReg03(valueid, CTRL_STATE_REG, &pos16); |
|
|
if (!ret) return err::kerr_subdevice_overtime; |
|
|
|
|
|
|
|
|
if (!ret) return kerr_subdevice_overtime; |
|
|
|
|
|
|
|
|
*pos = pos16; |
|
|
*pos = pos16; |
|
|
return 0; |
|
|
return 0; |
|
@ -93,12 +93,12 @@ int32_t PreportionalValveCtrl::isBusy(int32_t valueid, int32_t* busy) { |
|
|
int32_t PreportionalValveCtrl::getValveWorkState(int32_t valueid, int32_t* state) { |
|
|
int32_t PreportionalValveCtrl::getValveWorkState(int32_t valueid, int32_t* state) { |
|
|
int32_t ret = 0; |
|
|
int32_t ret = 0; |
|
|
if (valueid > 255 || valueid < 1) { |
|
|
if (valueid > 255 || valueid < 1) { |
|
|
return err::kerr_invalid_param; |
|
|
|
|
|
|
|
|
return kerr_invalid_param; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
uint16_t state16 = 0; |
|
|
uint16_t state16 = 0; |
|
|
ret = readReg03(valueid, WORK_STATE_REG, &state16); |
|
|
ret = readReg03(valueid, WORK_STATE_REG, &state16); |
|
|
if (!ret) return err::kerr_subdevice_overtime; |
|
|
|
|
|
|
|
|
if (!ret) return kerr_subdevice_overtime; |
|
|
*state = state16; |
|
|
*state = state16; |
|
|
return 0; |
|
|
return 0; |
|
|
} |
|
|
} |