92 lines
2.3 KiB
C
92 lines
2.3 KiB
C
#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;
|
||
}
|
||
}
|
||
|