2025-04-16 09:58:09 +08:00
|
|
|
|
#ifndef __IRRIGATION_H
|
|
|
|
|
#define __IRRIGATION_H
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
|
|
|
#include "main.h"
|
|
|
|
|
|
|
|
|
|
#include "stdint.h"
|
|
|
|
|
#include "stdio.h"
|
|
|
|
|
#include "tim.h" // 添加定时器头文件
|
|
|
|
|
#include "Save_Time.h"
|
|
|
|
|
#include "EEPROM.h"
|
2025-05-20 09:41:22 +08:00
|
|
|
|
#include "Inf_4G.h"
|
2025-04-16 09:58:09 +08:00
|
|
|
|
/* 类型定义 -----------------------------------------------------------------*/
|
|
|
|
|
// 工作模式枚举
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 系统状态枚举
|
|
|
|
|
typedef enum {
|
|
|
|
|
SYS_STATE_STOP = 0, // 系统停止
|
|
|
|
|
SYS_STATE_RUNNING // 系统运行
|
|
|
|
|
} SystemState;
|
|
|
|
|
|
|
|
|
|
// 风机状态枚举
|
|
|
|
|
typedef enum {
|
|
|
|
|
FAN_1 = 0, // 风机1
|
|
|
|
|
FAN_2 // 风机2
|
|
|
|
|
} FanState;
|
|
|
|
|
|
|
|
|
|
/* 外部变量声明 -------------------------------------------------------------*/
|
|
|
|
|
// 直排模式时间参数
|
|
|
|
|
extern uint32_t DIRECT_HIGH_PUMP_ON_TIME; // 高水位水泵开启时间
|
|
|
|
|
extern uint32_t DIRECT_HIGH_PUMP_OFF_TIME; // 高水位水泵关闭时间
|
|
|
|
|
extern uint32_t DIRECT_HIGH_FAN_ON_TIME; // 高水位风机开启时间
|
|
|
|
|
extern uint32_t DIRECT_HIGH_FAN_OFF_TIME; // 高水位风机关闭时间
|
|
|
|
|
extern uint32_t DIRECT_LOW_FAN_ON_TIME; // 低水位风机开启时间
|
|
|
|
|
extern uint32_t DIRECT_LOW_FAN_OFF_TIME; // 低水位风机关闭时间
|
|
|
|
|
extern uint32_t DIRECT_FIRST_LOW_FAN_ON; // 首次低水位风机开启时间
|
|
|
|
|
extern uint32_t DIRECT_FIRST_LOW_FAN_OFF; // 首次低水位风机关闭时间
|
|
|
|
|
|
|
|
|
|
// 冲厕模式时间参数
|
|
|
|
|
extern uint32_t FLUSH_HIGH_PUMP_ON_TIME; // 1分钟
|
|
|
|
|
extern uint32_t FLUSH_HIGH_PUMP_OFF_TIME; // 150分钟
|
|
|
|
|
extern uint32_t FLUSH_HIGH_FAN_ON_TIME; // 40分钟
|
|
|
|
|
extern uint32_t FLUSH_HIGH_FAN_OFF_TIME; // 2分钟
|
|
|
|
|
extern uint32_t FLUSH_LOW_FAN_ON_TIME; // 5分钟
|
|
|
|
|
extern uint32_t FLUSH_LOW_FAN_OFF_TIME; // 25分钟
|
|
|
|
|
extern uint32_t FLUSH_FIRST_LOW_FAN_ON; // 40分钟
|
|
|
|
|
extern uint32_t FLUSH_FIRST_LOW_FAN_OFF; // 2分钟
|
|
|
|
|
|
|
|
|
|
//灌溉模式时间参数
|
|
|
|
|
extern uint32_t HIGH_LEVEL_PUMP_ON_TIME; // 1分钟
|
|
|
|
|
extern uint32_t HIGH_LEVEL_PUMP_OFF_TIME; // 120分钟
|
|
|
|
|
extern uint32_t HIGH_LEVEL_FAN_ON_TIME; // 20分钟
|
|
|
|
|
extern uint32_t HIGH_LEVEL_FAN_OFF_TIME; // 5分钟
|
|
|
|
|
extern uint32_t FIRST_LOW_FAN_ON_TIME; // 10分钟
|
|
|
|
|
extern uint32_t FIRST_LOW_FAN_OFF_TIME; // 10分钟
|
|
|
|
|
extern uint32_t LOW_LEVEL_FAN_ON_TIME; // 5分钟
|
|
|
|
|
extern uint32_t LOW_LEVEL_FAN_OFF_TIME; // 40分钟
|
|
|
|
|
extern uint32_t debug_pump_state; // 用于调试的状态变量
|
|
|
|
|
// 特殊模式时间参数
|
|
|
|
|
// 特殊模式变量
|
|
|
|
|
extern uint32_t SPECIAL_INITIAL_STOP_TIME; // 24小时 = 1440分钟 前5分钟
|
|
|
|
|
extern uint32_t SPECIAL_FIRST_PHASE_TIME; // 48小时 = 2880分钟 后六分钟
|
|
|
|
|
extern uint32_t SPECIAL_PUMP_RUN_TIME; // 前1分钟运行
|
|
|
|
|
extern uint32_t SPECIAL_FIRST_STOP_TIME; // 前359分钟停止
|
|
|
|
|
extern uint32_t SPECIAL_SECOND_PHASE_TIME; // 48小时 = 2880分钟
|
|
|
|
|
extern uint32_t SPECIAL_SECOND_STOP_TIME; // 239分钟停止
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 计时器变量
|
|
|
|
|
extern uint32_t pump_timer; // 水泵计时器
|
|
|
|
|
extern uint32_t fan_timer; // 风机计时器
|
|
|
|
|
extern uint32_t first_low_timer; // 首次低液位计时器
|
|
|
|
|
|
|
|
|
|
// 参数修改标志
|
|
|
|
|
extern uint8_t parameters_changed;
|
|
|
|
|
|
|
|
|
|
// 强制控制标志
|
|
|
|
|
extern uint8_t force_pump_off; // 强制关闭水泵
|
|
|
|
|
extern uint8_t force_fan_off; // 强制关闭风机
|
|
|
|
|
extern uint8_t is_first_low;
|
|
|
|
|
|
|
|
|
|
extern volatile uint8_t time_just_modified;
|
|
|
|
|
|
|
|
|
|
//模式参数
|
|
|
|
|
// 当前工作模式
|
|
|
|
|
typedef enum {
|
|
|
|
|
MODE_NONE = 0, // 无模式/未初始化
|
|
|
|
|
MODE_FLUSH = 1, // 直排模式
|
|
|
|
|
MODE_IRRIGATION = 2, // 灌溉模式
|
|
|
|
|
MODE_DIRECT = 3, // 冲厕模式
|
|
|
|
|
MODE_SPECIAL = 4 // 特殊模式/培菌模式
|
|
|
|
|
} WorkMode;
|
|
|
|
|
extern WorkMode current_mode; // 当前工作模式
|
|
|
|
|
//特殊阶段时间参数
|
|
|
|
|
|
|
|
|
|
extern uint32_t special_phase_timer ; // 阶段计时器
|
|
|
|
|
extern uint32_t special_cycle_timer; // 循环计时器
|
|
|
|
|
/* 函数声明 ----------------------------------------------------------------*/
|
|
|
|
|
// 设备控制函数(这些函数需要在其他地方实现)
|
|
|
|
|
void Control_WaterPump(uint8_t state);
|
|
|
|
|
void Control_Fan1(uint8_t state);
|
|
|
|
|
void Control_Fan2(uint8_t state);
|
|
|
|
|
|
|
|
|
|
uint8_t Read_FloatBall(void);
|
|
|
|
|
|
|
|
|
|
// 应用层函数
|
|
|
|
|
void Device_Init(void); // 设备初始化
|
|
|
|
|
uint8_t Read_FloatBall_Stable(void); // 读取浮球状态(带防抖)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Direct_Mode_Control(void); // 直排模式控制
|
|
|
|
|
void Irrigation_Mode_Control(void); // 灌溉模式控制
|
|
|
|
|
void Flush_Mode_Control(void); // 冲洗模式控制
|
|
|
|
|
void Special_Mode_Control(void); // 特殊模式控制
|
|
|
|
|
|
|
|
|
|
//特殊模式
|
|
|
|
|
typedef enum {
|
|
|
|
|
SPECIAL_INITIAL_STOP = 0, // 初始阶段:24小时停止
|
|
|
|
|
SPECIAL_FIRST_PHASE = 1, // 第一阶段:48小时,6小时循环
|
|
|
|
|
SPECIAL_SECOND_PHASE = 2, // 第二阶段:48小时,4小时循环
|
|
|
|
|
SPECIAL_TO_DIRECT = 3 // 特殊模式结束,切换到直排模式
|
|
|
|
|
} SpecialPhase_t;
|
|
|
|
|
extern SpecialPhase_t special_phase;
|
|
|
|
|
void Switch_To_Special_Mode(void); // 切换到特殊模式
|
|
|
|
|
|
|
|
|
|
void Switch_Mode(WorkMode new_mode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Restart_Current_Mode(void);
|
|
|
|
|
|
|
|
|
|
extern volatile uint8_t timer_pause; // 计时器暂停标志
|
|
|
|
|
#endif /* __APP_WORK_H */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|