40 changed files with 782 additions and 534 deletions
-
2app_protocols/transmit_disfection_protocol
-
150usrc/app/dmapp.hpp
-
29usrc/app_main.cpp
-
2usrc/base/appdep.hpp
-
15usrc/base/protocol_processer_mgr.cpp
-
8usrc/base/protocol_processer_mgr.hpp
-
33usrc/base/protocol_processer_utils.hpp
-
62usrc/board/draw_bar_dm_board.hpp.xx
-
0usrc/board/large_space_dm_liquid_ctrl_board.hpp.xx
-
1usrc/board/large_space_dm_power_ctrl_board.hpp.xx
-
0usrc/board/pipe_dm_liquid_ctrl_board.hpp.xx
-
1usrc/board/pipe_dm_power_ctrl_board.hpp.xx
-
31usrc/board/public_board.cpp
-
6usrc/board/public_board.hpp
-
3usrc/board_base/app_share/air_compressor_controller.hpp
-
3usrc/board_base/app_share/blower_controller.hpp
-
2usrc/board_base/app_share/h2o2_sensor_driver.cpp
-
3usrc/board_base/app_share/h2o2_sensor_driver.hpp
-
4usrc/board_base/app_share/heater_controller.hpp
-
7usrc/board_base/app_share/proportional_valve_ctrl.hpp
-
7usrc/board_base/app_share/pxxpsbus.hpp
-
3usrc/board_base/app_share/tmc_motor_group.cpp
-
5usrc/board_base/app_share/tmc_motor_group.hpp
-
5usrc/board_base/app_share/warning_light_driver.hpp
-
29usrc/board_base/app_share/water_sensor_mgr.hpp
-
0usrc/protocol_processer_impl/large_space_dm_liquid_ctrl_board_pp.hpp.xx
-
0usrc/protocol_processer_impl/large_space_dm_power_ctrl_board_pp.hpp.xx
-
0usrc/protocol_processer_impl/pipe_dm_liquid_ctrl_board_pp.hpp.xx
-
0usrc/protocol_processer_impl/pipe_dm_power_ctrl_board_pp.hpp.xx
-
9usrc/protocol_processer_impl/public_cmd_processer.hpp
-
2zsdk
@ -1 +1 @@ |
|||
Subproject commit 8b73b00eacba449c5d71f7d9f0dab9abc54c6aaa |
|||
Subproject commit 9b15ef0cb011476bff3659117a9e7907155a9f1b |
@ -0,0 +1,150 @@ |
|||
#pragma once
|
|||
#include "board/public_board.hpp"
|
|||
#include "board_base/board_base.hpp"
|
|||
|
|||
/**
|
|||
* @brief |
|||
* 大空间消毒机-功率控制板 |
|||
*/ |
|||
|
|||
namespace iflytop { |
|||
using namespace transmit_disfection_protocol; |
|||
|
|||
#define TAG "LargeSpaceDmPowerCtrlBoard"
|
|||
class DisinfectionApp { |
|||
public: |
|||
HeaterController heaterCtrler; |
|||
BlowerController blowerCtrler; |
|||
AirCompressorController airComCtrler; |
|||
H2O2SensorDriver h2o2Sensor; |
|||
|
|||
ZGPIO evaporationBinWS; // 蒸发仓水浸
|
|||
ZGPIO deviceBottomWS; // 设备底部水浸
|
|||
WarningLightDriver wlDriver; // 报警灯
|
|||
TmcMotorGroup tmcPowerGroup; // TMC电机
|
|||
PXXPSBus psBus; // PXX压力传感器总线
|
|||
|
|||
public: |
|||
static DisinfectionApp* ins() { |
|||
static DisinfectionApp instance; |
|||
return &instance; |
|||
} |
|||
|
|||
virtual const char* getName() { return "DisinfectionApp"; } |
|||
|
|||
void initialize() { |
|||
initializeDevice(); |
|||
regProtocol(); |
|||
} |
|||
|
|||
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)); |
|||
})); |
|||
} |
|||
} |
|||
}; |
|||
#undef TAG
|
|||
} // namespace iflytop
|
@ -0,0 +1,62 @@ |
|||
#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 |
@ -0,0 +1,29 @@ |
|||
#pragma once
|
|||
#include "base/appdep.hpp"
|
|||
|
|||
namespace iflytop { |
|||
using namespace transmit_disfection_protocol; |
|||
|
|||
class WaterSensorMgr { |
|||
ZGPIO evaporationBinWS; // 蒸发仓水浸
|
|||
ZGPIO deviceBottomWS; // 设备底部水浸
|
|||
bool m_isInitialized = false; |
|||
|
|||
public: |
|||
void initialize(Pin_t evaporationBinWSPin, Pin_t deviceBottomWSPin) { |
|||
evaporationBinWS.initAsInput(evaporationBinWSPin, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); |
|||
deviceBottomWS.initAsInput(deviceBottomWSPin, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/); |
|||
m_isInitialized = true; |
|||
} |
|||
bool isInitialized() { return m_isInitialized; } |
|||
|
|||
void fn_evaporation_tank_water_sensor_read_state(ProcessContext* cxt) { |
|||
int32_t val = 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 = deviceBottomWS.read(); |
|||
zcanbus_send_ack(cxt->packet, (uint8_t*)&val, sizeof(val)); |
|||
} |
|||
}; |
|||
} // namespace iflytop
|
@ -1 +1 @@ |
|||
Subproject commit 45dd7621fe18ad66544d4b74c7cad454d6e3bb05 |
|||
Subproject commit 56b0595562d44d5ed960fcada360556ab816ce76 |
Write
Preview
Loading…
Cancel
Save
Reference in new issue