|
|
@@ -1,115 +0,0 @@
|
|
|
-# 超滤系统 DQN 智能决策模块
|
|
|
-
|
|
|
-## 系统简介
|
|
|
-
|
|
|
-基于 DQN 强化学习模型,自动优化超滤膜的过滤时长和物理清洗时长,提升产水量、延长膜使用寿命。
|
|
|
-
|
|
|
-**核心流程**:
|
|
|
-1. 监控 TMP(跨膜压差)达到阈值(95%)
|
|
|
-2. 采集多次数据计算平均 TMP0
|
|
|
-3. DQN 模型决策最优 L_s(过滤时长)和 t_bw_s(物洗时长)
|
|
|
-4. 生成 PLC 指令并下发执行
|
|
|
-5. 发送决策结果到回调接口
|
|
|
-
|
|
|
-## 快速开始
|
|
|
-
|
|
|
-### 运行服务
|
|
|
-```bash
|
|
|
-python loop_main.py
|
|
|
-```
|
|
|
-
|
|
|
-程序会自动:
|
|
|
-- 加载 `config.json` 配置
|
|
|
-- 连接数据库和 API
|
|
|
-- 持续监控并在 TMP 达到阈值时触发决策
|
|
|
-
|
|
|
-### 配置文件 (config.json)
|
|
|
-
|
|
|
-```json
|
|
|
-{
|
|
|
- "system": {
|
|
|
- "use_model": 1, # 1=启用模型决策,0=仅记录数据
|
|
|
- "trigger_value": 95, # TMP触发值(%)
|
|
|
- "num_values_to_collect": 10, # 采集次数
|
|
|
- "poll_interval": 2 # 轮询间隔(秒)
|
|
|
- },
|
|
|
- "api": {
|
|
|
- "base_url": "http://example.com",
|
|
|
- "jwt_token": "your_token"
|
|
|
- },
|
|
|
- "database": {
|
|
|
- "host": "localhost",
|
|
|
- "user": "root",
|
|
|
- "password": "password",
|
|
|
- "database": "scada_db"
|
|
|
- },
|
|
|
- "scada": {
|
|
|
- "secret": "your_secret_key",
|
|
|
- "project_id": 92
|
|
|
- }
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-**动态开关**:修改 `use_model` 后无需重启,下次循环自动生效
|
|
|
-
|
|
|
-## 核心模块
|
|
|
-
|
|
|
-### 1. DQN_decide.py
|
|
|
-- `run_uf_DQN_decide(uf_params, TMP0)`:DQN 模型决策
|
|
|
-- `generate_plc_instructions(...)`:生成 PLC 指令
|
|
|
-- `calc_uf_cycle_metrics(...)`:计算周期指标
|
|
|
-
|
|
|
-### 2. DQN_env.py
|
|
|
-- `UFSuperCycleEnv`:强化学习环境
|
|
|
-- `UFParams`:超滤参数配置
|
|
|
-- 模拟超级周期运行
|
|
|
-
|
|
|
-### 3. loop_main.py
|
|
|
-- 主监控循环
|
|
|
-- 数据采集和决策触发
|
|
|
-- PLC 更新和回调推送
|
|
|
-
|
|
|
-## 工作流程
|
|
|
-
|
|
|
-```
|
|
|
-监控 TMP → 达到阈值 → 采集数据 → 计算平均值 → DQN决策
|
|
|
- ↓
|
|
|
-生成指令 → 更新PLC → 回调推送 → 保存历史 → 继续监控
|
|
|
-```
|
|
|
-
|
|
|
-## PLC 数据更新
|
|
|
-
|
|
|
-系统自动通过 API 更新 PLC 参数:
|
|
|
-
|
|
|
-**接口**: `/api/v1/plc/set-var-values`
|
|
|
-
|
|
|
-**签名**: `MD5(record + secret + timestamp).toUpperCase()`
|
|
|
-
|
|
|
-**数据格式**:
|
|
|
-```json
|
|
|
-[{
|
|
|
- "project_id": 92,
|
|
|
- "item": "设备名称",
|
|
|
- "old_value": "旧值",
|
|
|
- "new_value": "新值",
|
|
|
- "command_type": 1
|
|
|
-}]
|
|
|
-```
|
|
|
-
|
|
|
-## 日志记录
|
|
|
-
|
|
|
-日志保存在 `monitor_service.log`,自动轮转(单文件5MB,保留3个备份)。
|
|
|
-
|
|
|
-记录内容:
|
|
|
-- 配置加载和变更
|
|
|
-- 数据采集过程
|
|
|
-- 模型决策结果
|
|
|
-- PLC 更新状态
|
|
|
-- API 回调响应
|
|
|
-
|
|
|
-## 注意事项
|
|
|
-
|
|
|
-1. **模型文件**: 确保 `dqn_model.zip` 存在
|
|
|
-2. **数据库连接**: 检查数据库配置和网络连通性
|
|
|
-3. **API 认证**: 确认 JWT Token 和密钥正确
|
|
|
-4. **TMP 阈值**: 根据实际工况调整 `trigger_value`
|