双模超滤模型

wmy 854ce2e373 1:测试bug 逻辑,涉及到控制字 26 vor 4 Tagen
.idea 5b60780855 Initial commit with all files vor 1 Monat
__pycache__ 5b60780855 Initial commit with all files vor 1 Monat
dqn_model 5b60780855 Initial commit with all files vor 1 Monat
DQN_decide.py 02819fc7c0 1:修正CEB结束后的初始跨膜压差逻辑,改为 95变为 26后的 10分钟内的平均跨膜压差 vor 1 Monat
DQN_env.py 02819fc7c0 1:修正CEB结束后的初始跨膜压差逻辑,改为 95变为 26后的 10分钟内的平均跨膜压差 vor 1 Monat
Dockerfile 1cc904c8c1 更新 'Dockerfile' vor 3 Wochen
Jenkinsfile f511b0d18b 更新 'Jenkinsfile' vor 3 Wochen
README_UPDATES.md 5b60780855 Initial commit with all files vor 1 Monat
build.sh def2ff728c 添加 'build.sh' vor 3 Wochen
config.json ca8117105d 1:修正json文件 vor 2 Wochen
device_states.json 854ce2e373 1:测试bug 逻辑,涉及到控制字 26 vor 4 Tagen
docker-compose.yaml a0f4371918 更新 'docker-compose.yaml' vor 3 Wochen
dqn_model.zip 02819fc7c0 1:修正CEB结束后的初始跨膜压差逻辑,改为 95变为 26后的 10分钟内的平均跨膜压差 vor 1 Monat
loop_main.py 854ce2e373 1:测试bug 逻辑,涉及到控制字 26 vor 4 Tagen
monitor_service.log 5b60780855 Initial commit with all files vor 1 Monat
plc_test_dry_run.py 5b60780855 Initial commit with all files vor 1 Monat
requirements.txt 02819fc7c0 1:修正CEB结束后的初始跨膜压差逻辑,改为 95变为 26后的 10分钟内的平均跨膜压差 vor 1 Monat
save_uf_models.py 5b60780855 Initial commit with all files vor 1 Monat
test_plc_update.py 5b60780855 Initial commit with all files vor 1 Monat
uf_bw.pth 5b60780855 Initial commit with all files vor 1 Monat
uf_fp.pth 5b60780855 Initial commit with all files vor 1 Monat

README_UPDATES.md

超滤系统 DQN 智能决策模块

系统简介

基于 DQN 强化学习模型,自动优化超滤膜的过滤时长和物理清洗时长,提升产水量、延长膜使用寿命。

核心流程

  1. 监控 TMP(跨膜压差)达到阈值(95%)
  2. 采集多次数据计算平均 TMP0
  3. DQN 模型决策最优 L_s(过滤时长)和 t_bw_s(物洗时长)
  4. 生成 PLC 指令并下发执行
  5. 发送决策结果到回调接口

快速开始

运行服务

python loop_main.py

程序会自动:

  • 加载 config.json 配置
  • 连接数据库和 API
  • 持续监控并在 TMP 达到阈值时触发决策

配置文件 (config.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()

数据格式:

[{
  "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