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

92 lines
2.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
}
}