|
@ -41,7 +41,8 @@ class BlowerController { |
|
|
bindFn(); |
|
|
bindFn(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void initializeAsHighPowerUartBlower(UART_HandleTypeDef* huart, ADC_HandleTypeDef* iadc, uint32_t ich) { |
|
|
|
|
|
|
|
|
void initializeAsHighPowerUartBlower(Pin_t ctrlGpio, UART_HandleTypeDef* huart, ADC_HandleTypeDef* iadc, uint32_t ich) { |
|
|
|
|
|
m_ctrlGpio.initAsOutput(ctrlGpio, kxs_gpio_nopull, true, false); |
|
|
m_modbusblock.initialize(huart); |
|
|
m_modbusblock.initialize(huart); |
|
|
m_iadc.initialize("Blower-iadc", iadc, ich); |
|
|
m_iadc.initialize("Blower-iadc", iadc, ich); |
|
|
AppPeriodTaskMgr::ins()->regTask("AC-ADC", [this]() { periodTask(); }, 1000); |
|
|
AppPeriodTaskMgr::ins()->regTask("AC-ADC", [this]() { periodTask(); }, 1000); |
|
@ -69,24 +70,12 @@ class BlowerController { |
|
|
BIND_FN(BlowerController, this, fn_blower_is_error); |
|
|
BIND_FN(BlowerController, this, fn_blower_is_error); |
|
|
BIND_FN(BlowerController, this, fn_blower_read_ei_adc_raw); |
|
|
BIND_FN(BlowerController, this, fn_blower_read_ei_adc_raw); |
|
|
BIND_FN(BlowerController, this, fn_blower_is_open); |
|
|
BIND_FN(BlowerController, this, fn_blower_is_open); |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/***********************************************************************************************************************
|
|
|
/***********************************************************************************************************************
|
|
|
* FN * |
|
|
* FN * |
|
|
***********************************************************************************************************************/ |
|
|
***********************************************************************************************************************/ |
|
|
void blower_ctrl(int32_t val) { |
|
|
|
|
|
if (m_blowerType == kIOBlower) { |
|
|
|
|
|
m_ctrlGpio.write(val); |
|
|
|
|
|
} else if (m_blowerType == kHighPowerUartBlower) { |
|
|
|
|
|
if (val > 0) { |
|
|
|
|
|
m_modbusblock.writeReg06(1, 0x2000, 1, 100); |
|
|
|
|
|
} else { |
|
|
|
|
|
m_modbusblock.writeReg06(1, 0x2000, 6, 100); |
|
|
|
|
|
} |
|
|
|
|
|
} else if (m_blowerType == kMiniPwmBlower) { |
|
|
|
|
|
mini_pwm_blower_ctrl(val); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void blower_ctrl(int32_t val) {} |
|
|
void blower_ctrl_safe_valve(int32_t val) {} |
|
|
void blower_ctrl_safe_valve(int32_t val) {} |
|
|
int32_t blower_read_ei() { |
|
|
int32_t blower_read_ei() { |
|
|
if (m_blowerType == kIOBlower || m_blowerType == kHighPowerUartBlower) { |
|
|
if (m_blowerType == kIOBlower || m_blowerType == kHighPowerUartBlower) { |
|
@ -114,9 +103,25 @@ class BlowerController { |
|
|
* PP * |
|
|
* PP * |
|
|
***********************************************************************************************************************/ |
|
|
***********************************************************************************************************************/ |
|
|
void fn_blower_ctrl(ProcessContext* cxt) { //
|
|
|
void fn_blower_ctrl(ProcessContext* cxt) { //
|
|
|
blower_ctrl(GET_PARAM(0)); |
|
|
|
|
|
zcanbus_send_ack(cxt->packet, NULL, 0); |
|
|
|
|
|
isopen = GET_PARAM(0) > 0 ? true : false; |
|
|
|
|
|
|
|
|
int32_t val = GET_PARAM(0); |
|
|
|
|
|
if (m_blowerType == kIOBlower) { |
|
|
|
|
|
m_ctrlGpio.write(val); |
|
|
|
|
|
zcanbus_send_ack(cxt->packet, NULL, 0); |
|
|
|
|
|
isopen = GET_PARAM(0) > 0 ? true : false; |
|
|
|
|
|
} else if (m_blowerType == kHighPowerUartBlower) { |
|
|
|
|
|
m_ctrlGpio.write(val); |
|
|
|
|
|
bool suc = val > 0 ? m_modbusblock.writeReg06(1, 0x2000, 1, 50) : m_modbusblock.writeReg06(1, 0x2000, 6, 50); |
|
|
|
|
|
if (suc) { |
|
|
|
|
|
m_ctrlGpio.write(val); |
|
|
|
|
|
zcanbus_send_ack(cxt->packet, NULL, 0); |
|
|
|
|
|
isopen = GET_PARAM(0) > 0 ? true : false; |
|
|
|
|
|
} else { |
|
|
|
|
|
zcanbus_send_errorack(cxt->packet, err::kerr_overtime); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} else if (m_blowerType == kMiniPwmBlower) { |
|
|
|
|
|
mini_pwm_blower_ctrl(val); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
void fn_blower_ctrl_safe_valve(ProcessContext* cxt) { //
|
|
|
void fn_blower_ctrl_safe_valve(ProcessContext* cxt) { //
|
|
|
blower_ctrl_safe_valve(GET_PARAM(0)); |
|
|
blower_ctrl_safe_valve(GET_PARAM(0)); |
|
|