14 changed files with 229 additions and 584 deletions
-
2app_protocols/transmit_disfection_protocol
-
187usrc/app/dmapp.cpp
-
158usrc/app/dmapp.hpp
-
5usrc/base/protocol_processer_mgr.hpp
-
62usrc/board/draw_bar_dm_board.hpp.xx
-
42usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx
-
50usrc/board/large_space_dm_power_ctrl_board.hpp.xx
-
43usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx
-
37usrc/board/pipe_dm_power_ctrl_board.hpp.xx
-
4usrc/board_base/baseboard/large_space_dm_power_ctrl_board.cpp
-
59usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx
-
50usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx
-
64usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx
-
50usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx
@ -1 +1 @@ |
|||||
Subproject commit 9b15ef0cb011476bff3659117a9e7907155a9f1b |
|
||||
|
Subproject commit 72a9aadd6793193e8b1c475d4774ad0fc4d05590 |
@ -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); |
||||
|
} |
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
@ -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 |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue