From 4819d1bdbff1f20f3f7a7e97a130bbbda09fcef7 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 9 Aug 2024 18:45:59 +0800 Subject: [PATCH] update --- app_protocols/transmit_disfection_protocol | 2 +- usrc/app/dmapp.cpp | 187 +++++++++++++++++++++ usrc/app/dmapp.hpp | 158 ++++------------- usrc/base/protocol_processer_mgr.hpp | 5 +- usrc/board/draw_bar_dm_board.hpp.xx | 62 ------- usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx | 42 ----- usrc/board/large_space_dm_power_ctrl_board.hpp.xx | 50 ------ usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx | 43 ----- usrc/board/pipe_dm_power_ctrl_board.hpp.xx | 37 ---- .../baseboard/large_space_dm_power_ctrl_board.cpp | 4 + .../large_space_dm_liquid_ctrl_board_pp.hpp.xx | 59 ------- .../large_space_dm_power_ctrl_board_pp.hpp.xx | 50 ------ .../pipe_dm_liquid_ctrl_board_pp.hpp.xx | 64 ------- .../pipe_dm_power_ctrl_board_pp.hpp.xx | 50 ------ 14 files changed, 229 insertions(+), 584 deletions(-) create mode 100644 usrc/app/dmapp.cpp delete mode 100644 usrc/board/draw_bar_dm_board.hpp.xx delete mode 100644 usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx delete mode 100644 usrc/board/large_space_dm_power_ctrl_board.hpp.xx delete mode 100644 usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx delete mode 100644 usrc/board/pipe_dm_power_ctrl_board.hpp.xx delete mode 100644 usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx delete mode 100644 usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx delete mode 100644 usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx delete mode 100644 usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx diff --git a/app_protocols/transmit_disfection_protocol b/app_protocols/transmit_disfection_protocol index 9b15ef0..72a9aad 160000 --- a/app_protocols/transmit_disfection_protocol +++ b/app_protocols/transmit_disfection_protocol @@ -1 +1 @@ -Subproject commit 9b15ef0cb011476bff3659117a9e7907155a9f1b +Subproject commit 72a9aadd6793193e8b1c475d4774ad0fc4d05590 diff --git a/usrc/app/dmapp.cpp b/usrc/app/dmapp.cpp new file mode 100644 index 0000000..99184e1 --- /dev/null +++ b/usrc/app/dmapp.cpp @@ -0,0 +1,187 @@ +#include "dmapp.hpp" + +/** + * @brief + * + * + * 小空间和大空间硬件一样 + * + * 管道式-液路控制板 + * 相比于大空间消毒机,不同的点: + * 1.增加比例阀控制 + * 2.空压机通道控制 + * 管道式-功率板 + * 相比于大空间消毒机,不同的点: + * 1. 风机改成鼓风机(可控风速) + * + * 拉杆箱- + * + */ + +using namespace iflytop; +using namespace transmit_disfection_protocol; +#define TAG "LargeSpaceDmPowerCtrlBoard" + +DisinfectionApp* DisinfectionApp::ins() { + static DisinfectionApp instance; + return &instance; +} + +const char* DisinfectionApp::getName() { return "DisinfectionApp"; } + +void DisinfectionApp::initialize() { + int btid = PublicBoard::ins()->getBoardTypeId(); + // + + if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { + LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); + heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8); + bindHeaterCtrler(); + } + + if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { + LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); + blowerCtrler.initialize(PC5, &hadc1, ADC_CHANNEL_1); + bindBlowerCtrler(); + } else if (isBoardType(kPipeDMPowerCtrlBoard)) { + LargeSpaceDmPowerCtrlBoardHal::HUART2_INIT(9600, UART_STOPBITS_1); + blowerCtrler.initializeAsHighPowerUartBlower(&huart2); + bindBlowerCtrler(); + } + + if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { + LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); + airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); + bindAirComCtrler(); + } + + if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { + LargeSpaceDmPowerCtrlBoardHal::HUART3_INIT(19200, UART_STOPBITS_2); + LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); + h2o2Sensor.initialize(&huart3, &hadc1, ADC_CHANNEL_10); + bindH2o2Sensor(); + } + + if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { + evaporationBinWS.initAsInput(PC7, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); + deviceBottomWS.initAsInput(PC8, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); + bindDeviceBottomWS(); + bindEvaporationBinWS(); + } + + if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { + // TMC电机初始化 + LargeSpaceDMLiquidCtrlBoardHal::HSPI1_INIT(); + tmcPowerGroup.initialize(PB2, {&hspi1, PC4 /*cs*/, PB13 /*en*/}, {&hspi1, PA4 /*cs*/, PB12 /*en*/}); + bindTmcPowerGroup(); + } + + if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { + // 三色指示灯初始化 + wlDriver.initialize(PD8, PD7, PD9, PD10); + bindWlDriver(); + } + + if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { + // 压力传感器初始化 + osDelay(1500); // 等待传感器上电 + LargeSpaceDMLiquidCtrlBoardHal::HUART3_INIT(9600, UART_STOPBITS_1); + psBus.initialize(&huart3); + bindPsBus(); + } + // 比例阀初始化 + if (isBoardType(kPipeDMLiquidCtrlBoard)) { + LargeSpaceDMLiquidCtrlBoardHal::HUART2_INIT(9600); + proportionalValveCtrl.initialize(&huart2); + bindProportionalValveCtrl(); + } + + // 气密性测试通道 + if (isBoardType(kPipeDMLiquidCtrlBoard)) { + static ZGPIO airTightnessTestChGpio; + static ZGPIO eValve; + airTightnessTestChGpio.initAsOutput(PD15, kxs_gpio_nopull, true, false); + eValve.initAsOutput(PD14, kxs_gpio_nopull, false, true); + + REG_LAMADA_FN(kfn_air_tightness_test_close_ch, [&](ProcessContext* cxt) { + airTightnessTestChGpio.write(1); // 内管路,气密性测试 + eValve.write(0); // 电磁阀闭合 + zcanbus_send_ack(cxt->packet, NULL, 0); + }); + REG_LAMADA_FN(kfn_air_tightness_test_recover_ch, [&](ProcessContext* cxt) { + airTightnessTestChGpio.write(0); // 连接空气 + eValve.write(1); // 电磁阀打开 + zcanbus_send_ack(cxt->packet, NULL, 0); + }); + } +} + +/*********************************************************************************************************************** + * PROTOCOL_BIND * + ***********************************************************************************************************************/ +void DisinfectionApp::bindHeaterCtrler() { + BIND_FN(HeaterController, &heaterCtrler, fn_heater_ctrl); + BIND_FN(HeaterController, &heaterCtrler, fn_heater_ctrl_safe_valve); + BIND_FN(HeaterController, &heaterCtrler, fn_heater_read_electric_current); + BIND_FN(HeaterController, &heaterCtrler, fn_heater_read_temperature_data); +} + +void DisinfectionApp::bindBlowerCtrler() { + BIND_FN(BlowerController, &blowerCtrler, fn_blower_ctrl); + BIND_FN(BlowerController, &blowerCtrler, fn_blower_ctrl_safe_valve); + BIND_FN(BlowerController, &blowerCtrler, fn_blower_read_electric_current); +} + +void DisinfectionApp::bindAirComCtrler() { + BIND_FN(AirCompressorController, &airComCtrler, fn_air_compressor_ctrl); + BIND_FN(AirCompressorController, &airComCtrler, fn_air_compressor_ctrl_safe_valve); + BIND_FN(AirCompressorController, &airComCtrler, fn_air_compressor_read_electric_current); +} + +void DisinfectionApp::bindH2o2Sensor() { + BIND_FN(H2O2SensorDriver, &h2o2Sensor, fn_h2o2_sensor_read_calibration_date); + BIND_FN(H2O2SensorDriver, &h2o2Sensor, fn_h2o2_sensor_read_sub_ic_errorcode); + BIND_FN(H2O2SensorDriver, &h2o2Sensor, fn_h2o2_sensor_read_sub_ic_reg); +} +void DisinfectionApp::bindWlDriver() { BIND_FN(WarningLightDriver, wlDriver, fn_triple_warning_light_ctl); } + +void DisinfectionApp::bindTmcPowerGroup() { + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_rotate); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_stop); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_ihold_irun_idelay); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_acc); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_ramp); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_tzw); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_subic_reg); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_get_subic_reg); + BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_ping); +} + +void DisinfectionApp::bindPsBus() { + BIND_FN(PXXPSBus, psBus, fn_psbus_read_data); + BIND_FN(PXXPSBus, psBus, fn_psbus_scan); +} + +void DisinfectionApp::bindEvaporationBinWS() { + ProtocolProcesserMgr::ins()->regCmdProcesser( // + CmdProcesser(kfn_evaporation_tank_water_sensor_read_state, // + [this](ProcessContext* cxt) { + int32_t val = evaporationBinWS.read(); + zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); + })); +} + +void DisinfectionApp::bindDeviceBottomWS() { + ProtocolProcesserMgr::ins()->regCmdProcesser( // + CmdProcesser(kfn_device_bottom_water_sensor_read_state, // + [this](ProcessContext* cxt) { + int32_t val = deviceBottomWS.read(); + zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); + })); +} + +void DisinfectionApp::bindProportionalValveCtrl() { + BIND_FN(ProportionalValveCtrl, &proportionalValveCtrl, fn_proportional_set_valve); + BIND_FN(ProportionalValveCtrl, &proportionalValveCtrl, fn_proportional_read_pos); + BIND_FN(ProportionalValveCtrl, &proportionalValveCtrl, fn_proportional_is_busy); +} diff --git a/usrc/app/dmapp.hpp b/usrc/app/dmapp.hpp index 1c4b1f6..bc39894 100644 --- a/usrc/app/dmapp.hpp +++ b/usrc/app/dmapp.hpp @@ -4,13 +4,25 @@ /** * @brief - * 大空间消毒机-功率控制板 + * + * + * 小空间和大空间硬件一样 + * + * 管道式-液路控制板 + * 相比于大空间消毒机,不同的点: + * 1.增加比例阀控制 + * 2.空压机通道控制 + * 管道式-功率板 + * 相比于大空间消毒机,不同的点: + * 1. 风机改成鼓风机(可控风速) + * + * 拉杆箱- + * */ namespace iflytop { using namespace transmit_disfection_protocol; -#define TAG "LargeSpaceDmPowerCtrlBoard" class DisinfectionApp { public: HeaterController heaterCtrler; @@ -18,133 +30,31 @@ class DisinfectionApp { AirCompressorController airComCtrler; H2O2SensorDriver h2o2Sensor; - ZGPIO evaporationBinWS; // 蒸发仓水浸 - ZGPIO deviceBottomWS; // 设备底部水浸 - WarningLightDriver wlDriver; // 报警灯 - TmcMotorGroup tmcPowerGroup; // TMC电机 - PXXPSBus psBus; // PXX压力传感器总线 + ZGPIO evaporationBinWS; // 蒸发仓水浸 + ZGPIO deviceBottomWS; // 设备底部水浸 + WarningLightDriver wlDriver; // 报警灯 + TmcMotorGroup tmcPowerGroup; // TMC电机 + PXXPSBus psBus; // PXX压力传感器总线 + ProportionalValveCtrl proportionalValveCtrl; // 比例阀控制 public: - static DisinfectionApp* ins() { - static DisinfectionApp instance; - return &instance; - } + static DisinfectionApp* ins(); - virtual const char* getName() { return "DisinfectionApp"; } + virtual const char* getName(); - void initialize() { - initializeDevice(); - regProtocol(); - } + void initialize(); - void initializeDevice() { - int btid = PublicBoard::ins()->getBoardTypeId(); - // - if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { - heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8); - } - - if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { - blowerCtrler.initialize(PC5, &hadc1, ADC_CHANNEL_1); - } - - if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { - airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); - } - - if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) { - h2o2Sensor.initialize(&huart3, &hadc1, ADC_CHANNEL_10); - } - - if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { - evaporationBinWS.initAsInput(PC7, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); - deviceBottomWS.initAsInput(PC8, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); - } - - if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { - // TMC电机初始化 - LargeSpaceDMLiquidCtrlBoardHal::HSPI1_INIT(); - tmcPowerGroup.initialize(PB2, {&hspi1, PC4 /*cs*/, PB13 /*en*/}, {&hspi1, PA4 /*cs*/, PB12 /*en*/}); - } - - if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { - // 三色指示灯初始化 - wlDriver.initialize(PD8, PD7, PD9, PD10); - } - - if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) { - // 压力传感器初始化 - osDelay(1500); // 等待传感器上电 - LargeSpaceDMLiquidCtrlBoardHal::HUART3_INIT(9600, UART_STOPBITS_1); - psBus.initialize(&huart3); - } - } - - void regProtocol() { - if (heaterCtrler.isInitialized()) { - BIND_FN(HeaterController, &heaterCtrler, fn_heater_ctrl); - BIND_FN(HeaterController, &heaterCtrler, fn_heater_ctrl_safe_valve); - BIND_FN(HeaterController, &heaterCtrler, fn_heater_read_electric_current); - BIND_FN(HeaterController, &heaterCtrler, fn_heater_read_temperature_data); - } - - if (blowerCtrler.isInitialized()) { - BIND_FN(BlowerController, &blowerCtrler, fn_blower_ctrl); - BIND_FN(BlowerController, &blowerCtrler, fn_blower_ctrl_safe_valve); - BIND_FN(BlowerController, &blowerCtrler, fn_blower_read_electric_current); - } - - if (airComCtrler.isInitialized()) { - BIND_FN(AirCompressorController, &airComCtrler, fn_air_compressor_ctrl); - BIND_FN(AirCompressorController, &airComCtrler, fn_air_compressor_ctrl_safe_valve); - BIND_FN(AirCompressorController, &airComCtrler, fn_air_compressor_read_electric_current); - } - - if (h2o2Sensor.isInitialized()) { - BIND_FN(H2O2SensorDriver, &h2o2Sensor, fn_h2o2_sensor_read_calibration_date); - BIND_FN(H2O2SensorDriver, &h2o2Sensor, fn_h2o2_sensor_read_sub_ic_errorcode); - BIND_FN(H2O2SensorDriver, &h2o2Sensor, fn_h2o2_sensor_read_sub_ic_reg); - } - if (wlDriver.isInitialized()) { - BIND_FN(WarningLightDriver, wlDriver, fn_triple_warning_light_ctl); - } - - if (tmcPowerGroup.isInitialized()) { - BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_rotate); - BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_stop); - BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_ihold_irun_idelay); - BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_acc); - BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_ramp); - BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_tzw); - BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_set_subic_reg); - BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_get_subic_reg); - BIND_FN(TmcMotorGroup, tmcPowerGroup, fn_pump_ping); - } - - if (psBus.isInitialized()) { - BIND_FN(PXXPSBus, psBus, fn_psbus_read_data); - BIND_FN(PXXPSBus, psBus, fn_psbus_scan); - } - - if (evaporationBinWS.isInited()) { - ProtocolProcesserMgr::ins()->regCmdProcesser( // - CmdProcesser(kfn_evaporation_tank_water_sensor_read_state, // - [this](ProcessContext* cxt) { - int32_t val = evaporationBinWS.read(); - zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); - })); - } - - if (deviceBottomWS.isInited()) { - ProtocolProcesserMgr::ins()->regCmdProcesser( // - CmdProcesser(kfn_device_bottom_water_sensor_read_state, // - [this](ProcessContext* cxt) { - int32_t val = deviceBottomWS.read(); - zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); - })); - } - } + private: + void bindHeaterCtrler(); + void bindBlowerCtrler(); + void bindAirComCtrler(); + void bindH2o2Sensor(); + void bindWlDriver(); + void bindTmcPowerGroup(); + void bindPsBus(); + void bindEvaporationBinWS(); + void bindDeviceBottomWS(); + void bindProportionalValveCtrl(); }; -#undef TAG } // namespace iflytop \ No newline at end of file diff --git a/usrc/base/protocol_processer_mgr.hpp b/usrc/base/protocol_processer_mgr.hpp index 8faf495..e59d4d1 100644 --- a/usrc/base/protocol_processer_mgr.hpp +++ b/usrc/base/protocol_processer_mgr.hpp @@ -1,8 +1,9 @@ #pragma once #include "protocol_processer_utils.hpp" -#define REG_FN(fn) ProtocolProcesserMgr::ins()->regCmdProcesser(CmdProcesser(k##fn, bind(&ThisClass::fn, this, placeholders::_1))) -#define BIND_FN(ClassName, obj, fn) ProtocolProcesserMgr::ins()->regCmdProcesser(CmdProcesser(k##fn, bind(&ClassName::fn, obj, placeholders::_1))); +#define REG_FN(fn) ProtocolProcesserMgr::ins()->regCmdProcesser(CmdProcesser(k##fn, bind(&ThisClass::fn, this, placeholders::_1))) +#define REG_LAMADA_FN(kfn, lamadafn) ProtocolProcesserMgr::ins()->regCmdProcesser(CmdProcesser(kfn, lamadafn)) +#define BIND_FN(ClassName, obj, fn) ProtocolProcesserMgr::ins()->regCmdProcesser(CmdProcesser(k##fn, bind(&ClassName::fn, obj, placeholders::_1))); namespace iflytop { using namespace std; diff --git a/usrc/board/draw_bar_dm_board.hpp.xx b/usrc/board/draw_bar_dm_board.hpp.xx deleted file mode 100644 index 2c3a9b6..0000000 --- a/usrc/board/draw_bar_dm_board.hpp.xx +++ /dev/null @@ -1,62 +0,0 @@ -#pragma once -#include "board_base/board_base.hpp" - -/** - * @brief - * 手持拉杆箱-功率控制板 - * 1.鼓风机改成PWM驱动 - * 2.去掉空压机,空压机 - * - * 两块板写在一起 - * - * - * - */ - -namespace iflytop { -using namespace transmit_disfection_protocol; - -#define TAG "DrawBarDMBoard" -class DrawBarDMBoard { - public: - HeaterController heaterCtrler; - BlowerController blowerCtrler; - AirCompressorController airComCtrler; - H2O2SensorDriver h2o2Sensor; - ZGPIO evaporationBinWS; // 蒸发仓水浸 - ZGPIO deviceBottomWS; // 设备底部水浸 - WarningLightDriver wlDriver; // 报警灯 - TmcMotorGroup tmcPowerGroup; // TMC电机 - PXXPSBus psBus; // PXX压力传感器总线 - - public: - static DrawBarDMBoard* ins() { - static DrawBarDMBoard instance; - return &instance; - } - void initialize() { - LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); - LargeSpaceDmPowerCtrlBoardHal::HUART3_INIT(19200, UART_STOPBITS_2); - - heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8); - blowerCtrler.initialize(PC5, &hadc1, ADC_CHANNEL_1); - airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); - h2o2Sensor.initialize(&huart3, &hadc1, ADC_CHANNEL_10); - - AppPeriodTaskMgr::ins()->regTask("AirComAdc", DrawBarDMBoard::onTimeCb, this, 1000); - } - static void onTimeCb(void* handler) { ((DrawBarDMBoard*)handler)->onTimeCb(); } - void onTimeCb() { - heaterCtrler.periodTask(); - blowerCtrler.periodTask(); - airComCtrler.periodTask(); - - ZLOGI(TAG, "b:%d(%d), a:%d(%d), h:%d(%d) ht:%d(%d)", // - blowerCtrler.blower_read_electric_current(), blowerCtrler.blower_read_iadc(), // - airComCtrler.air_compressor_read_electric_current(), airComCtrler.air_compressor_read_iadc(), // - heaterCtrler.heater_read_electric_current(), heaterCtrler.heater_read_iadc(), // - heaterCtrler.heater_read_temperature_data(), heaterCtrler.heater_read_tadc()); - } -}; -#undef TAG -} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx b/usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx deleted file mode 100644 index c960dc2..0000000 --- a/usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once -#include "board_base/board_base.hpp" -/** - * @brief - * 大空间消毒机-电流控制板 - */ -namespace iflytop { -class LargeSpaceDmLiquidCtrlBoard { - public: - ZGPIO evaporationBinWS; // 蒸发仓水浸 - ZGPIO deviceBottomWS; // 设备底部水浸 - WarningLightDriver wlDriver; // 报警灯 - TmcMotorGroup tmcPowerGroup; // TMC电机 - PXXPSBus psBus; // PXX压力传感器总线 - - public: - static LargeSpaceDmLiquidCtrlBoard* ins() { - static LargeSpaceDmLiquidCtrlBoard instance; - return &instance; - } - void initialize() { - // 水浸初始化 - evaporationBinWS.initAsInput(PC7, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); - deviceBottomWS.initAsInput(PC8, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); - // TMC电机初始化 - LargeSpaceDMLiquidCtrlBoardHal::HSPI1_INIT(); - tmcPowerGroup.initialize(PB2, {&hspi1, PC4 /*cs*/, PB13 /*en*/}, {&hspi1, PA4 /*cs*/, PB12 /*en*/}); - // 三色指示灯初始化 - wlDriver.initialize(PD8, PD7, PD9, PD10); - // 压力传感器初始化 - osDelay(1500); // 等待传感器上电 - LargeSpaceDMLiquidCtrlBoardHal::HUART3_INIT(9600, UART_STOPBITS_1); - psBus.initialize(&huart3); - } - - static void onTimeCb(void* handler) { - LargeSpaceDmLiquidCtrlBoard* p = (LargeSpaceDmLiquidCtrlBoard*)handler; - p->onTimeCb(); - } - void onTimeCb() {} -}; -} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/large_space_dm_power_ctrl_board.hpp.xx b/usrc/board/large_space_dm_power_ctrl_board.hpp.xx deleted file mode 100644 index 71d688d..0000000 --- a/usrc/board/large_space_dm_power_ctrl_board.hpp.xx +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once -#include "board_base/board_base.hpp" - -/** - * @brief - * 大空间消毒机-功率控制板 - */ - -namespace iflytop { -using namespace transmit_disfection_protocol; - -#define TAG "LargeSpaceDmPowerCtrlBoard" -class LargeSpaceDmPowerCtrlBoard { - public: - HeaterController heaterCtrler; - BlowerController blowerCtrler; - AirCompressorController airComCtrler; - H2O2SensorDriver h2o2Sensor; - - public: - static LargeSpaceDmPowerCtrlBoard* ins() { - static LargeSpaceDmPowerCtrlBoard instance; - return &instance; - } - void initialize() { - LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); - LargeSpaceDmPowerCtrlBoardHal::HUART3_INIT(19200, UART_STOPBITS_2); - - heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8); - blowerCtrler.initialize(PC5, &hadc1, ADC_CHANNEL_1); - airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); - h2o2Sensor.initialize(&huart3, &hadc1, ADC_CHANNEL_10); - - AppPeriodTaskMgr::ins()->regTask("AirComAdc", LargeSpaceDmLiquidCtrlBoard::onTimeCb, this, 1000); - } - static void onTimeCb(void* handler) { ((LargeSpaceDmLiquidCtrlBoard*)handler)->onTimeCb(); } - void onTimeCb() { - heaterCtrler.periodTask(); - blowerCtrler.periodTask(); - airComCtrler.periodTask(); - - ZLOGI(TAG, "b:%d(%d), a:%d(%d), h:%d(%d) ht:%d(%d)", // - blowerCtrler.blower_read_electric_current(), blowerCtrler.blower_read_iadc(), // - airComCtrler.air_compressor_read_electric_current(), airComCtrler.air_compressor_read_iadc(), // - heaterCtrler.heater_read_electric_current(), heaterCtrler.heater_read_iadc(), // - heaterCtrler.heater_read_temperature_data(), heaterCtrler.heater_read_tadc()); - } -}; -#undef TAG -} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx b/usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx deleted file mode 100644 index 905bc06..0000000 --- a/usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once -#include "board_base/board_base.hpp" -/** - * @brief - * 管道式-液路控制板 - * - * 相比于大空间消毒机,不同的点: - * 1.增加比例阀控制 - */ -namespace iflytop { -class PipeDMLiquidCtrlBoard { - public: - ZGPIO evaporationBinWS; // 蒸发仓水浸 - ZGPIO deviceBottomWS; // 设备底部水浸 - WarningLightDriver wlDriver; // 报警灯 - TmcMotorGroup tmcPowerGroup; // TMC电机 - PXXPSBus psBus; // PXX压力传感器总线 - ProportionalValveCtrl proportionalValveCtrl; - - public: - static PipeDMLiquidCtrlBoard* ins() { - static PipeDMLiquidCtrlBoard instance; - return &instance; - } - void initialize() { - // 水浸初始化 - evaporationBinWS.initAsInput(PC7, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); - deviceBottomWS.initAsInput(PC8, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); - // TMC电机初始化 - LargeSpaceDMLiquidCtrlBoardHal::HSPI1_INIT(); - tmcPowerGroup.initialize(PB2, {&hspi1, PC4 /*cs*/, PB13 /*en*/}, {&hspi1, PA4 /*cs*/, PB12 /*en*/}); - // 三色指示灯初始化 - wlDriver.initialize(PD8, PD7, PD9, PD10); - // 压力传感器初始化 - osDelay(1500); // 等待传感器上电 - LargeSpaceDMLiquidCtrlBoardHal::HUART3_INIT(9600, UART_STOPBITS_1); - psBus.initialize(&huart3); - // - LargeSpaceDMLiquidCtrlBoardHal::HUART2_INIT(9600); - proportionalValveCtrl.initialize(&huart2); - } -}; -} // namespace iflytop \ No newline at end of file diff --git a/usrc/board/pipe_dm_power_ctrl_board.hpp.xx b/usrc/board/pipe_dm_power_ctrl_board.hpp.xx deleted file mode 100644 index 4fe9c0f..0000000 --- a/usrc/board/pipe_dm_power_ctrl_board.hpp.xx +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once -#include "board_base/board_base.hpp" -/** - * @brief - * 管道式-功率控制板 - * - * 相比于大空间消毒机,不同的点: - * 1. 风机改成鼓风机(可控风速) - * - */ -namespace iflytop { -using namespace transmit_disfection_protocol; - -class PipeDMPowerCtrlBoard { - public: - HeaterController heaterCtrler; - BlowerController blowerCtrler; - AirCompressorController airComCtrler; - H2O2SensorDriver h2o2Sensor; - - public: - static PipeDMPowerCtrlBoard* ins() { - static PipeDMPowerCtrlBoard instance; - return &instance; - } - void initialize() { - LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT(); - LargeSpaceDmPowerCtrlBoardHal::HUART2_INIT(9600, UART_STOPBITS_1); - LargeSpaceDmPowerCtrlBoardHal::HUART3_INIT(19200, UART_STOPBITS_2); - - heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8); - blowerCtrler.initializeAsHighPowerUartBlower(&huart2); - airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0); - h2o2Sensor.initialize(&huart3, &hadc1, ADC_CHANNEL_10); - } -}; -} // namespace iflytop \ No newline at end of file diff --git a/usrc/board_base/baseboard/large_space_dm_power_ctrl_board.cpp b/usrc/board_base/baseboard/large_space_dm_power_ctrl_board.cpp index d618620..c7cc83f 100644 --- a/usrc/board_base/baseboard/large_space_dm_power_ctrl_board.cpp +++ b/usrc/board_base/baseboard/large_space_dm_power_ctrl_board.cpp @@ -5,6 +5,10 @@ using namespace iflytop; void LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT() { + static bool inited = false; + if (inited) return; + inited = true; + __HAL_RCC_ADC1_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); diff --git a/usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx b/usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx deleted file mode 100644 index de1ca22..0000000 --- a/usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx +++ /dev/null @@ -1,59 +0,0 @@ -#pragma once -#include "board/large_space_dm_liquid_ctrl_board.hpp" -namespace iflytop { - -using namespace std; -using namespace zscanprotocol; -using namespace transmit_disfection_protocol; - -// ------------------------------------------------------ -#define TAG "LiquidCtrl" -#define ThisClass LargeSpaceDmLiquidCtrlBoardPP -#define DEVICE LargeSpaceDmLiquidCtrlBoard::ins() - -// ------------------------------------------------------ - -class LargeSpaceDmLiquidCtrlBoardPP : public IProtocolProcesser { - public: - static LargeSpaceDmLiquidCtrlBoardPP* ins() { - static LargeSpaceDmLiquidCtrlBoardPP ins; - return &ins; - } - virtual const char* getName() override { return "LiquidCtrlBoardCmdProcesser"; }; - - virtual void initialize() override { - REG_FN(fn_evaporation_tank_water_sensor_read_state); - REG_FN(fn_device_bottom_water_sensor_read_state); - // - BIND_FN(WarningLightDriver, &DEVICE->wlDriver, fn_triple_warning_light_ctl); - - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_rotate); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_stop); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_ihold_irun_idelay); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_acc); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_ramp); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_tzw); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_subic_reg); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_get_subic_reg); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_ping); - - BIND_FN(PXXPSBus, &DEVICE->psBus, fn_psbus_read_data); - BIND_FN(PXXPSBus, &DEVICE->psBus, fn_psbus_scan); - } - - private: - void fn_evaporation_tank_water_sensor_read_state(ProcessContext* cxt) { - int32_t val = DEVICE->evaporationBinWS.read(); - zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); - } - void fn_device_bottom_water_sensor_read_state(ProcessContext* cxt) { - int32_t val = DEVICE->deviceBottomWS.read(); - zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); - } -}; - -#undef ThisClass -#undef DEVICE -#undef TAG - -} // namespace iflytop diff --git a/usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx b/usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx deleted file mode 100644 index 3af3044..0000000 --- a/usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once -// -#include "board/large_space_dm_power_ctrl_board.hpp" - -namespace iflytop { -using namespace std; -using namespace zscanprotocol; -using namespace transmit_disfection_protocol; - -// /----------------------------- -#define TAG "LargeSpaceDmPowerCtrlBoardPP" -#define ThisClass LargeSpaceDmPowerCtrlBoardPP -#define DEVICE LargeSpaceDmPowerCtrlBoard::ins() -// /----------------------------- - -class LargeSpaceDmPowerCtrlBoardPP : public IProtocolProcesser { - public: - static LargeSpaceDmPowerCtrlBoardPP* ins() { - static LargeSpaceDmPowerCtrlBoardPP ins; - return &ins; - } - - virtual void initialize() override { - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_ctrl); - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_ctrl_safe_valve); - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_read_electric_current); - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_read_temperature_data); - - BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_ctrl); - BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_ctrl_safe_valve); - BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_read_electric_current); - - BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_ctrl); - BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_ctrl_safe_valve); - BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_read_electric_current); - - BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_calibration_date); - BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_sub_ic_errorcode); - BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_sub_ic_reg); - } - virtual const char* getName() override { return "LargeSpaceDmPowerCtrlBoardPP"; }; - - private: -}; - -#undef ThisClass -#undef DEVICE -#undef TAG - -} // namespace iflytop diff --git a/usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx b/usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx deleted file mode 100644 index a54f75d..0000000 --- a/usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx +++ /dev/null @@ -1,64 +0,0 @@ -#pragma once -#include "board/pipe_dm_liquid_ctrl_board.hpp" -namespace iflytop { - -using namespace std; -using namespace zscanprotocol; -using namespace transmit_disfection_protocol; - -// ------------------------------------------------------ -#define TAG "LiquidCtrl" -#define ThisClass PipeDMLiquidCtrlBoardPP -#define DEVICE PipeDMLiquidCtrlBoard::ins() - -// ------------------------------------------------------ - -class PipeDMLiquidCtrlBoardPP : public IProtocolProcesser { - public: - static PipeDMLiquidCtrlBoardPP* ins() { - static PipeDMLiquidCtrlBoardPP ins; - return &ins; - } - virtual const char* getName() override { return "LiquidCtrlBoardCmdProcesser"; }; - - virtual void initialize() override { - REG_FN(fn_evaporation_tank_water_sensor_read_state); - REG_FN(fn_device_bottom_water_sensor_read_state); - // - BIND_FN(WarningLightDriver, &DEVICE->wlDriver, fn_triple_warning_light_ctl); - - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_rotate); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_stop); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_ihold_irun_idelay); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_acc); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_ramp); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_tzw); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_set_subic_reg); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_get_subic_reg); - BIND_FN(TmcMotorGroup, &DEVICE->tmcPowerGroup, fn_pump_ping); - - BIND_FN(PXXPSBus, &DEVICE->psBus, fn_psbus_read_data); - BIND_FN(PXXPSBus, &DEVICE->psBus, fn_psbus_scan); - - // kfnProportionalValveCtrl - BIND_FN(ProportionalValveCtrl, &DEVICE->proportionalValveCtrl, fn_proportional_set_valve); - BIND_FN(ProportionalValveCtrl, &DEVICE->proportionalValveCtrl, fn_proportional_read_pos); - BIND_FN(ProportionalValveCtrl, &DEVICE->proportionalValveCtrl, fn_proportional_is_busy); - } - - private: - void fn_evaporation_tank_water_sensor_read_state(ProcessContext* cxt) { - int32_t val = DEVICE->evaporationBinWS.read(); - zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); - } - void fn_device_bottom_water_sensor_read_state(ProcessContext* cxt) { - int32_t val = DEVICE->deviceBottomWS.read(); - zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); - } -}; - -#undef ThisClass -#undef DEVICE -#undef TAG - -} // namespace iflytop diff --git a/usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx b/usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx deleted file mode 100644 index dd53ca9..0000000 --- a/usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx +++ /dev/null @@ -1,50 +0,0 @@ -#pragma once -// -#include "board/pipe_dm_power_ctrl_board.hpp" - -namespace iflytop { -using namespace std; -using namespace zscanprotocol; -using namespace transmit_disfection_protocol; - -// /----------------------------- -#define TAG "PipeDMPowerCtrlBoardPP" -#define ThisClass PipeDMPowerCtrlBoardPP -#define DEVICE PipeDMPowerCtrlBoard::ins() -// /----------------------------- - -class PipeDMPowerCtrlBoardPP : public IProtocolProcesser { - public: - static PipeDMPowerCtrlBoardPP* ins() { - static PipeDMPowerCtrlBoardPP ins; - return &ins; - } - - virtual void initialize() override { - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_ctrl); - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_ctrl_safe_valve); - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_read_electric_current); - BIND_FN(HeaterController, &DEVICE->heaterCtrler, fn_heater_read_temperature_data); - - BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_ctrl); - BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_ctrl_safe_valve); - BIND_FN(BlowerController, &DEVICE->blowerCtrler, fn_blower_read_electric_current); - - BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_ctrl); - BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_ctrl_safe_valve); - BIND_FN(AirCompressorController, &DEVICE->airComCtrler, fn_air_compressor_read_electric_current); - - BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_calibration_date); - BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_sub_ic_errorcode); - BIND_FN(H2O2SensorDriver, &DEVICE->h2o2Sensor, fn_h2o2_sensor_read_sub_ic_reg); - } - virtual const char* getName() override { return "PipeDMPowerCtrlBoardPP"; }; - - private: -}; - -#undef ThisClass -#undef DEVICE -#undef TAG - -} // namespace iflytop