# 超滤系统 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`