Browse Source

update

master
zhaohe 12 months ago
parent
commit
1bd70501d5
  1. 2
      app_protocols/transmit_disfection_protocol
  2. 80
      usrc/app/dmapp.cpp
  3. 1
      usrc/board_base/app_share/air_compressor_controller.hpp
  4. 76
      usrc/board_base/app_share/blower_controller.hpp
  5. 58
      usrc/board_base/baseboard/dbdm_power_ctrl_board.cpp
  6. 13
      usrc/board_base/baseboard/dbdm_power_ctrl_board.hpp
  7. 1
      usrc/board_base/board_base.hpp
  8. 2
      zsdk
  9. 1
      zstm32/halport/gins.c
  10. 1
      zstm32/halport/gins.h

2
app_protocols/transmit_disfection_protocol

@ -1 +1 @@
Subproject commit 72a9aadd6793193e8b1c475d4774ad0fc4d05590
Subproject commit 38ea8db7c4b148c6f21b03b1099a82258ed8cd3f

80
usrc/app/dmapp.cpp

@ -6,15 +6,20 @@
*
*
*
* -
* :
* 1.
* 2.
* -
* :
* 1. ()
*
* -
* -----
*
* :
* 1.
* 2.
*
* :
* 1. ()
*
* ------
*
*
*
*
*/
@ -33,28 +38,60 @@ void DisinfectionApp::initialize() {
int btid = PublicBoard::ins()->getBoardTypeId();
//
if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) {
// 加热片
if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard)) {
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT();
heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_8);
bindHeaterCtrler();
} else if (isBoardType(kDrawBarDMPowerCtrlBoard)) {
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT();
heaterCtrler.initialize(PC7, NULL, 0, &hadc1, ADC_CHANNEL_1);
bindHeaterCtrler();
}
if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) {
// 风机
if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard)) {
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT();
blowerCtrler.initialize(PC5, &hadc1, ADC_CHANNEL_1);
bindBlowerCtrler();
} else if (isBoardType(kPipeDMPowerCtrlBoard)) {
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT();
LargeSpaceDmPowerCtrlBoardHal::HUART2_INIT(9600, UART_STOPBITS_1);
blowerCtrler.initializeAsHighPowerUartBlower(&huart2);
blowerCtrler.initializeAsHighPowerUartBlower(&huart2, &hadc1, ADC_CHANNEL_1);
bindBlowerCtrler();
} else if (isBoardType(kDrawBarDMPowerCtrlBoard)) {
DBDMPowerCtrlBoard::HTIM3_INIT();
blowerCtrler.initializeAsMiniPwmBlower(&htim3, TIM_CHANNEL_3, PC6 /*en*/, PC9 /*fb*/);
bindBlowerCtrler();
}
if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) {
// 空压机
if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard)) {
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT();
airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0);
bindAirComCtrler();
} else if (isBoardType(kDrawBarDMLiquidCtrlBoard)) {
airComCtrler.initialize(PD14, NULL, 0);
}
// 气密性测试空压机
// kfn_air_tightness_test_ac_ctrl
if (isBoardType(kPipeDMPowerCtrlBoard)) {
REG_LAMADA_FN(kfn_air_tightness_test_ac_ctrl, [&](ProcessContext* cxt) {
airComCtrler.air_compressor_ctrl(GET_PARAM(0));
airComCtrler.air_compressor_ctrl_safe_valve(GET_PARAM(0));
zcanbus_send_ack(cxt->packet, NULL, 0);
});
} else if (isBoardType(kDrawBarDMLiquidCtrlBoard)) {
static ZGPIO airCompressorCtrlGpio;
airCompressorCtrlGpio.initAsOutput(PD15, kxs_gpio_nopull, true, false);
REG_LAMADA_FN(kfn_air_tightness_test_ac_ctrl, [&](ProcessContext* cxt) {
airCompressorCtrlGpio.write(GET_PARAM(0));
zcanbus_send_ack(cxt->packet, NULL, 0);
});
}
// H2O2传感器
if (isBoardType(kLargeSpaceDMPowerCtrlBoard, kSmallSpaceDMPowerCtrlBoard, kPipeDMPowerCtrlBoard, kDrawBarDMPowerCtrlBoard)) {
LargeSpaceDmPowerCtrlBoardHal::HUART3_INIT(19200, UART_STOPBITS_2);
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT();
@ -62,13 +99,24 @@ void DisinfectionApp::initialize() {
bindH2o2Sensor();
}
if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) {
// 水浸传感器
if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard)) {
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();
}
// TMC驱动
// kfn_pump_rotate = 100, // cmd: index rpm ack:none
// kfn_pump_stop = 101, // cmd: index rpm ack:none
// kfn_pump_set_ihold_irun_idelay = 102, // cmd: index irun,ihold,idelay ack:none
// kfn_pump_set_acc = 104, // cmd: index acc ack:none , delete
// kfn_pump_ping = 105, // cmd: index, ack:none
// kfn_pump_set_ramp = 106, // cmd: index,vs,a1,amx,v1 ack:none
// kfn_pump_set_tzw = 107, // cmd: index,timeZeroWait ack:none
// kfn_pump_set_subic_reg = 110, // cmd: index,val ack:none
// kfn_pump_get_subic_reg = 111, // cmd: index, ack:val
if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) {
// TMC电机初始化
LargeSpaceDMLiquidCtrlBoardHal::HSPI1_INIT();
@ -76,14 +124,15 @@ void DisinfectionApp::initialize() {
bindTmcPowerGroup();
}
if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard, kDrawBarDMLiquidCtrlBoard)) {
// 三色指示灯
if (isBoardType(kLargeSpaceDMLiquidCtrlBoard, kSmallSpaceDMLiquidCtrlBoard, kPipeDMLiquidCtrlBoard)) {
// 三色指示灯初始化
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);
@ -130,6 +179,7 @@ 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);
BIND_FN(BlowerController, &blowerCtrler, fn_blower_is_error);
}
void DisinfectionApp::bindAirComCtrler() {

1
usrc/board_base/app_share/air_compressor_controller.hpp

@ -17,6 +17,7 @@ class AirCompressorController {
}
void initialize(Pin_t ctrlGpio, ADC_HandleTypeDef* iadc, uint32_t ich) {
if (m_isInitialized) return;
m_AirCompressor_ctrlGpio.initAsOutput(ctrlGpio, kxs_gpio_nopull, true, false);
m_AirCompressor_iAdc.initialize("AirComAdc", iadc, ich);
m_isInitialized = true;

76
usrc/board_base/app_share/blower_controller.hpp

@ -15,25 +15,42 @@ class BlowerController {
// kIOBlower
ZGPIO m_ctrlGpio;
ZADC m_iadc;
// kHighPowerUartBlower
ModbusBlockHost m_modbusblock;
bool m_isInitialized = false;
// kMiniPwmBlower
static TIM_HandleTypeDef* m_miniPwmBlower_htim;
static uint32_t m_miniPwmBlower_channle;
static ZGPIO m_miniPwmBlower_enGpio;
static ZGPIO m_miniPwmBlower_fbGpio;
ZADC m_iadc;
bool m_iadcIsInit = fasle;
bool m_isInitialized = false;
public:
void initialize(Pin_t ctrlGpio, ADC_HandleTypeDef* iadc, uint32_t ich) {
m_ctrlGpio.initAsOutput(ctrlGpio, kxs_gpio_nopull, true, false);
m_iadc.initialize("Blower-iadc", iadc, ich);
m_blowerType = kIOBlower;
m_blowerType = kIOBlower;
m_isInitialized = true;
}
bool isInitialized() { return m_isInitialized; }
void initializeAsHighPowerUartBlower(UART_HandleTypeDef* huart) {
void initializeAsHighPowerUartBlower(UART_HandleTypeDef* huart, ADC_HandleTypeDef* iadc, uint32_t ich) {
m_modbusblock.initialize(huart);
m_iadc.initialize("Blower-iadc", iadc, ich);
m_blowerType = kHighPowerUartBlower;
}
void initializeAsMiniPwmBlower(TIM_HandleTypeDef* htim, uint32_t channel, Pin_t enGpio, Pin_t fbGpio) {
m_miniPwmBlower_htim = htim;
m_miniPwmBlower_channle = channel;
m_miniPwmBlower_enGpio.initAsOutput(enGpio, kxs_gpio_nopull, true, false);
m_miniPwmBlower_fbGpio.initAsInput(fbGpio, kxs_gpio_nopull, kxs_gpio_rising_irq, false);
m_blowerType = kMiniPwmBlower;
}
/***********************************************************************************************************************
* FN *
@ -47,11 +64,32 @@ class BlowerController {
} else {
m_modbusblock.writeReg06(1, 0x2000, 6, 100);
}
} else if (m_blowerType == kMiniPwmBlower) {
mini_pwm_blower_ctrl(val);
}
}
void blower_ctrl_safe_valve(int32_t val) {}
int32_t blower_read_electric_current() { return blowserAdcToCurrent(m_iadc.getCacheVal()); }
int32_t blower_read_iadc() { return m_iadc.getCacheVal(); }
int32_t blower_read_electric_current() {
if (m_blowerType == kIOBlower || m_blowerType == kHighPowerUartBlower) {
return blowserAdcToCurrent(m_iadc.getCacheVal());
}
return 0;
}
int32_t blower_read_iadc() {
if (m_blowerType == kIOBlower || m_blowerType == kHighPowerUartBlower) {
return m_iadc.getCacheVal();
}
return 0;
}
int32_t blower_is_error() {
// TODO: 栏杆箱消毒机添加故障检测
return 0;
}
void periodTask() {
if (m_iadc.isInited()) m_iadc.updateAdcValToCache();
}
/***********************************************************************************************************************
* PP *
@ -69,6 +107,30 @@ class BlowerController {
zcanbus_send_ack(cxt->packet, (uint8_t*)val, sizeof(val));
}
void periodTask() { m_iadc.updateAdcValToCache(); }
void fn_blower_is_error(ProcessContext* cxt) { //
auto val = blower_is_error();
zcanbus_send_ack(cxt->packet, (uint8_t*)val, sizeof(val));
}
private:
void mini_pwm_blower_ctrl(int32_t duty) {
duty = 100 - duty;
if (duty < 0) duty = 0;
if (duty > 100) duty = 100;
TIM_OC_InitTypeDef sConfigOC = {0};
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = duty / 100.0 * __HAL_TIM_GET_AUTORELOAD(m_miniPwmBlower_htim);
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
HAL_TIM_PWM_ConfigChannel(m_miniPwmBlower_htim, &sConfigOC, m_miniPwmBlower_channle);
HAL_TIM_PWM_Stop(m_miniPwmBlower_htim, m_miniPwmBlower_channle);
HAL_TIM_PWM_Start(m_miniPwmBlower_htim, m_miniPwmBlower_channle);
m_miniPwmBlower_enGpio.write(duty != 0);
}
};
} // namespace iflytop

58
usrc/board_base/baseboard/dbdm_power_ctrl_board.cpp

@ -0,0 +1,58 @@
#pragma once
#include "dbdm_power_ctrl_board.hpp"
using namespace iflytop;
void DBDMPowerCtrlBoard::HTIM3_INIT() {
/* USER CODE BEGIN TIM3_Init 0 */
/* USER CODE END TIM3_Init 0 */
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
/* USER CODE BEGIN TIM3_Init 1 */
/* USER CODE END TIM3_Init 1 */
htim3.Instance = TIM3;
htim3.Init.Prescaler = 143;
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 9999;
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim3) != HAL_OK) {
Error_Handler();
}
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK) {
Error_Handler();
}
if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) {
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) {
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 0;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_3) != HAL_OK) {
Error_Handler();
}
/* USER CODE BEGIN TIM3_Init 2 */
/* USER CODE END TIM3_Init 2 */
__HAL_RCC_GPIOC_CLK_ENABLE();
/**TIM3 GPIO Configuration
PC8 ------> TIM3_CH3
*/
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_8;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
}

13
usrc/board_base/baseboard/dbdm_power_ctrl_board.hpp

@ -0,0 +1,13 @@
#pragma once
#include <stddef.h>
#include <stdio.h>
#include "base/appdep.hpp"
namespace iflytop {
class DBDMPowerCtrlBoard {
public:
static void HTIM3_INIT();
private:
};
} // namespace iflytop

1
usrc/board_base/board_base.hpp

@ -11,3 +11,4 @@
//
#include "baseboard/large_space_dm_liquid_ctrl_board_hal.hpp"
#include "baseboard/large_space_dm_power_ctrl_board.hpp"
#include "baseboard/dbdm_power_ctrl_board.hpp"

2
zsdk

@ -1 +1 @@
Subproject commit 56b0595562d44d5ed960fcada360556ab816ce76
Subproject commit e3bb71df415b83ce7e8224dc6b55dc0880d8895a

1
zstm32/halport/gins.c

@ -6,6 +6,7 @@ DEFINE_GLOBAL(CAN_HandleTypeDef, hcan1);
DEFINE_GLOBAL(TIM_HandleTypeDef, htim1);
DEFINE_GLOBAL(TIM_HandleTypeDef, htim2);
DEFINE_GLOBAL(TIM_HandleTypeDef, htim3);
DEFINE_GLOBAL(TIM_HandleTypeDef, htim6);
DEFINE_GLOBAL(TIM_HandleTypeDef, htim7);
DEFINE_GLOBAL(TIM_HandleTypeDef, htim11);

1
zstm32/halport/gins.h

@ -24,6 +24,7 @@ EXTERN_GLOBAL(CAN_HandleTypeDef, hcan1);
EXTERN_GLOBAL(TIM_HandleTypeDef, htim1);
EXTERN_GLOBAL(TIM_HandleTypeDef, htim2);
EXTERN_GLOBAL(TIM_HandleTypeDef, htim3);
EXTERN_GLOBAL(TIM_HandleTypeDef, htim6);
EXTERN_GLOBAL(TIM_HandleTypeDef, htim7);
EXTERN_GLOBAL(TIM_HandleTypeDef, htim11);

Loading…
Cancel
Save