huyongji1.1-system/App/electrode/electrode.c

92 lines
2.3 KiB
C
Raw Normal View History

2025-04-16 09:58:09 +08:00
#include "electrode.h"
// 除磷控制相关变量
uint8_t phosphorus_running = 0; // 除磷运行状态
uint8_t polarity_state = 0; // 极性状态0-正常1-反转
uint32_t phosphorus_timer = 0; // 运行时间计数器(分钟)
uint32_t PHOSPHORUS_RUN_TIME = 20; // 默认运行时间20分钟
uint32_t PHOSPHORUS_STOP_TIME = 40; // 默认停止时间40分钟
// 除磷极性控制函数
void Control_Phosphorus_Polarity(void)
{
if(polarity_state)
{
// 反转极性
Control_Plate1(1); // 极板1为正极
Control_Plate2(0); // 极板2为负极
}
else
{
// 正常极性
Control_Plate1(0); // 极板1为负极
Control_Plate2(1); // 极板2为正极
}
}
// 除磷时间更新函数
void Phosphorus_Timer_Update(void)
{
uint8_t pump_status = Read_WaterPump_Status();
// 水泵启动时,启动除磷
if(pump_status && !phosphorus_running)
{
phosphorus_running = 1;
phosphorus_timer = 0;
// 切换极性并启动
polarity_state = !polarity_state;
Control_Phosphorus_Polarity();
}
// 除磷运行计时
if(phosphorus_running)
{
phosphorus_timer++;
// 判断是否达到运行时间
if(phosphorus_timer >= PHOSPHORUS_RUN_TIME)
{
Control_Phosphorus(0); // 停止除磷
phosphorus_running = 0;
phosphorus_timer = 0;
}
}
}
// 设置运行时间
void Set_Phosphorus_Runtime(uint32_t minutes)
{
PHOSPHORUS_RUN_TIME = minutes;
// printf("设置除磷运行时间:%d分钟\n", PHOSPHORUS_RUN_TIME);
}
// 设置停止时间
void Set_Phosphorus_StopTime(uint32_t minutes)
{
PHOSPHORUS_STOP_TIME = minutes;
// printf("设置除磷停止时间:%d分钟\n", PHOSPHORUS_STOP_TIME);
}
// 定义状态常量,使代码更易读
#define DEPHOSPHO_ENABLED 1
#define DEPHOSPHO_DISABLED 0
uint8_t Dephosphorization_state = DEPHOSPHO_DISABLED; // 初始化为禁用状态
uint8_t electrode_Init(uint8_t state)
{
if (state)
{
Phosphorus_Timer_Update();
Dephosphorization_state = DEPHOSPHO_ENABLED;
return DEPHOSPHO_ENABLED;
}
else
{
Control_Phosphorus(0);
Dephosphorization_state = DEPHOSPHO_DISABLED;
return DEPHOSPHO_DISABLED;
}
}