# Oxygen_Ctrl.py 函数文档
氧化测试仪器的核心控制模块,负责整个系统的运行控制、数据采集、温度控制和通信管理。
## 全局常量
- coeff_flow: 流量系数 (10)
- coeff_Flow_k: 触摸屏K值系数 (100)
- coeff_Flow_b: 触摸屏B值系数 (10)
- MEASURE_TEMP_COFF: 温度小数点系数 (1)
- CONFIG_TEMP_COFF: 配置温度小数点系数 (100)
## GPIO 定义
- LED_SLAVE: GPIO16,维电器指示灯
- LED_4G: GPIO38,4G状态指示灯
- LED_Wifi: GPIO39,WiFi状态指示灯
- LED_Heat: GPIO40,加热状态指示灯
- LED_RELAY: GPIO15,加热控制继电器
## Oxygen_Ctrl 类
### 初始化函数
python
def __init__(self, port=2, baudrate=9600)
- 功能: 初始化氧化测试仪器控制系统
- 参数:
- port: 串口号,默认2
- baudrate: 波特率,默认9600
- 初始化内容:
- EEPROM配置
- Modbus通信
- 触摸屏控制
- 温度流量数据缓存
- LED指示灯状态
- 系统状态机
- AI控制器
### 核心控制函数
#### Heat_ctrl(self, bHeat)
- 功能: 控制加热器开关
- 参数:
- bHeat: 布尔值,True开启加热,False关闭加热
#### set_p_out(self, pwm_width)
- 功能: 设置PWM输出控制加热
- 参数:
- pwm_width: PWM脉宽,控制加热功率
#### Ai_read(self)
- 功能: 读取温度和流量传感器数据
- 实现: 通过Modbus协议读取4路温度和12路流量数据
#### Ai_write(self)
- 功能: 写入12路流量控制值
- 实现: 通过Modbus协议写入流量控制数据
#### state_machine(self)
- 功能: 系统状态机
- 状态定义:
- 0-1: 等待氧化
- 2-3: 加热至目标温度
- 4: 系统就绪等待测试
- 5: 氧化测试运行中
### 数据处理函数
#### update_Anlog_in_value(self)
- 功能: 更新模拟量输入值的校准数据
- 处理内容:
- 温度校准换算
- 12路流量校准换算
#### update_flow_out_value(self)
- 功能: 更新流量输出值
- 实现: 根据配置参数计算12路流量输出值
### 通信接口函数
#### Ai_Dwin_show(self)
- 功能: 显示数据到DWIN触摸屏
- 显示内容:
- 12路流量数据
- 温度数据
#### updateMqtt_dwin(self, updatePeriod)
- 功能: 更新MQTT和触摸屏数据
- 参数:
- updatePeriod: 更新周期
- 上传数据:
- 12路流量值
- 温度值
- 系统状态
- 剩余时间
### 任务管理函数
#### add_task(self)
- 功能: 添加系统任务
- 任务列表:
- Modbus数据读取 (200ms周期)
- 触摸屏更新 (5ms周期)
- 状态机运行 (100ms周期)
- 模糊控制 (PWM周期)
## 全局函数
### ctrl_run()
- 功能: 系统主运行函数
- 执行流程:
1. 等待硬件初始化
2. 初始化任务系统
3. 连接4G网络
4. 初始化MQTT
5. 启动任务调度
### Connect4G_NTP()
- 功能: 连接4G网络并同步时间
- 实现:
- 同步网络时间
- 更新LED状态
- 更新显示信息
### Task_refresh_modbus_in()
- 功能: Modbus数据刷新任务
- 实现:
- 读取传感器数据
- 更新校准值
- 更新显示
### Task_refresh_dwin_input()
- 功能: 触摸屏输入刷新任务
- 实现: 运行触摸屏处理程序
### Task_state_machine()
- 功能: 状态机任务
- 实现: 运行系统状态机
## 使用示例
python
from Oxygen_Ctrl import ctrl_run
if __name__ == '__main__':
ctrl_run()
## 依赖模块
- modbus: Modbus通信协议
- eeprom: 配置存储
- config: 系统配置
- DwinTest: 触摸屏控制
- fuzzy: 模糊控制算法
- task: 任务调度
- IOT_4G: 4G通信
- mqtt: MQTT协议
## 注意事项
1. 系统启动前需要等待5秒让硬件稳定
2. 温度和流量数据有不同的单位换算系数
3. 状态机状态转换需要注意安全性
4. 加热控制需要注意过温保护
5. 网络通信需要考虑断线重连