扬杰二厂业务逻辑规格书.md 12 KB

扬杰二厂泵站 — 业务逻辑规格书

版本: v2.0 日期: 2026-09-08 依据: 现场 PLC 点位确认表 状态: 已确认,待实施


一、项目定位

项 值
工艺场景 扬杰二厂 集水池排污泵站(1 个集水池 + 3 台排污泵)
PLC 西门子 S7-200 Smart
上位机角色 中控室监控 — 只监不控(自动逻辑由 PLC 执行)
控制模式 屏控(现场触摸屏)↔ 中控(远程上位机)
前端模板 PumpStation

核心原则

自动控制由现场 PLC 完成,上位机不自动启停泵。

上位机仅在 中控 + 手动 模式下允许远程手动启停泵。


二、控制模式与安全联锁

2.1 两级模式切换

远程操作泵启停需要满足 两级条件,缺一不可:

第一步: 切换到「中控模式」
  ModeSelectAddress = 0 → 中控(上位机可操作)
  ModeSelectAddress = 1 → 屏控(现场控制,上位机只监视)
       │
       ▼
第二步: 切换到「手动模式」
  AutoStateAddress = 0 → 手动(允许远程启停)
  AutoStateAddress = 1 → 自动(PLC 自动逻辑运行中,远程不可干预)
       │
       ▼
   ✅ 可以操作泵启停

2.2 联锁判定表

ModeSelect (中控/屏控) AutoState (自动/手动) 上位机可启停泵? 说明
屏控 (1) 自动 (1) ❌ 现场自动运行,上位机纯监视
屏控 (1) 手动 (0) ❌ 现场手动操作,上位机纯监视
中控 (0) 自动 (1) ❌ 上位机监控,PLC 自动逻辑执行
中控 (0) 手动 (0) ✅ 唯一允许远程启停的状态

2.3 上位机启停泵前置检查流程

操作员点击 启动/停止 按钮
   │
   ▼
① 权限检查: AuthService.HasPermission ≥ Operator
   │
   ▼
② 项目配置检查: profile.Control.AllowManualControl == true
   │
   ▼
③ 模式联锁检查:
   ├─ 读 ModeSelectAddress → 必须 = 0 (中控)
   │   └─ 否则: 提示 "当前为屏控模式,无法远程操作"
   └─ 读 AutoStateAddress → 必须 = 0 (手动)
       └─ 否则: 提示 "当前为自动模式,请切换到手动"
   │
   ▼
④ 执行点动写入:
   启动 → WriteBool(StartAddress, true) → 200ms → WriteBool(StartAddress, false)
   停止 → WriteBool(StopAddress, true)  → 200ms → WriteBool(StopAddress, false)
   │
   ▼
⑤ 审计日志 + 下一轮询验证运行状态

三、PLC 点位表(已确认)

3.1 基本监控 — 模拟量读取

# 名称 地址 数据类型 方向 JSON 字段
1 1#泵电流 VD50 REAL 读 pumps[0].currentAddress
2 2#泵电流 VD54 REAL 读 pumps[1].currentAddress
3 3#泵电流 VD58 REAL 读 pumps[2].currentAddress
4 即时压力 VD6600 REAL 读 gauges[0].valueAddress
5 即时流量 VD6604 REAL 读 gauges[1].valueAddress
6 总流量 VD7000 REAL 读 sensors[0].address
7 即时液位 VD62 REAL 读 tanks[0].levelAddress

3.2 基本监控 — 数字量读取

# 名称 地址 数据类型 方向 JSON 字段
1 1#泵运行状态 Q0.1 开关量 读 pumps[0].runAddress
2 2#泵运行状态 Q0.2 开关量 读 pumps[1].runAddress
3 3#泵运行状态 Q0.3 开关量 读 pumps[2].runAddress

3.3 故障监控 — 数字量读取

# 名称 地址 数据类型 方向 JSON 字段
1 低液位报警 M19.5 开关量 读 digitalInputs (新增)
2 高压报警 M30.1 开关量 读 digitalInputs (新增)
3 泵1过流报警 M17.1 开关量 读 pumps[0].faultAddress
4 泵2过流报警 M17.2 开关量 读 pumps[1].faultAddress
5 泵3过流报警 M17.3 开关量 读 pumps[2].faultAddress
6 变频器1报警 M3.1 开关量 读 digitalInputs
7 变频器2报警 M6.1 开关量 读 digitalInputs
8 变频器3报警 M9.1 开关量 读 digitalInputs
9 复位按钮 M30.0 开关量 脉冲写 digitalOutputs

3.4 参数设置 — 模拟量读写

# 名称 地址 数据类型 方向 JSON 字段
1 启动1台泵液位 VD500 REAL 读写 tanks[0].startPump1LevelAddress
2 启动2台泵液位 VD504 REAL 读写 tanks[0].startPump2LevelAddress
3 启动3台泵液位 VD508 REAL 读写 tanks[0].startPump3LevelAddress
4 停止液位 VD528 REAL 读写 tanks[0].stopLevelAddress
5 保护液位 VD962 REAL 读写 tanks[0].protectionLevelAddress
6 高压设置 VD6704 REAL 读写 gauges[0].highSetAddress
7 低压设置 VD6700 REAL 读写 gauges[0].lowSetAddress

3.5 泵控制 — 模式与操作

功能 1#泵 2#泵 3#泵 JSON 字段
中控/屏控选择 (读) M1.0 M4.0 M7.0 modeSelectAddress
手自动状态 (读) M2.6 M5.6 M8.6 autoStateAddress
手动启动 (脉冲写) M1.3 M4.3 M7.3 startAddress
手动停止 (脉冲写) M1.4 M4.4 M7.4 stopAddress
切手动命令 (脉冲写) M2.1 M5.3 M8.3 manualCommandAddress
切自动命令 (脉冲写) M2.2 M5.4 M8.4 autoCommandAddress

3.6 日台时(运行时间统计)

功能 1#泵 2#泵 3#泵 数据类型 JSON 字段
台时-小时 (读) VD950 VD954 VD958 DINT dailyHoursAddress / dailyHoursDataType
台时-分钟 (读) VD10 VD18 VD28 DINT dailyMinutesAddress / dailyMinutesDataType
台时清零 (脉冲写) M19.4 M19.4 M19.4 - dailyResetAddress

四、上位机功能清单

4.1 实时监控(只读)

功能 数据来源 刷新频率
集水池液位 + 趋势曲线 VD62 1s
3 台泵运行状态 (运行/停止/故障) Q0.1-3 + M17.1-3 1s
3 台泵电流 + 负荷比 VD50/54/58 1s
即时压力 + 刻度 VD6600 1s
即时流量 VD6604 1s
总流量 VD7000 1s
中控/屏控模式显示 M1.0/M4.0/M7.0 1s
手自动状态显示 M2.6/M5.6/M8.6 1s
日台时 (时+分) VD950+VD10 等 1s
故障报警 (低液位/高压/过流/变频器) M19.5/M30.1/M17.x/M3.1/M6.1/M9.1 1s

4.2 手动控制(需 中控+手动 模式)

操作 前置条件 PLC 写入
远程启动泵 ModeSelect=0 AND AutoState=0 点动 StartAddress (200ms)
远程停止泵 ModeSelect=0 AND AutoState=0 点动 StopAddress (200ms)
日台时清零 无 点动 DailyResetAddress (200ms)

4.3 参数同步(写入 PLC)

操作 PLC 写入地址
设置启泵液位阈值 VD500 / VD504 / VD508
设置停泵液位 VD528
设置保护液位 VD962
设置压力高限 VD6704
设置压力低限 VD6700
一键全量同步 以上所有

4.4 报警管理

操作 行为
报警确认 标记 IsConfirmed + 记录操作人
报警复位(单条) 清除活跃状态 + 点动 M30.0
报警复位(全部) 清除所有活跃状态 + 点动 M30.0
报警通知 级别 ≥ 3 的报警触发桌面通知

4.5 中控/远程 (Hub 命令)

命令 行为
query_mode 查询当前控制模式
sync_params 远程触发参数全量同步
reset_alarm 远程复位指定报警
reset_all_alarms 远程复位所有报警
start_pump / stop_pump 远程启停泵(需 AllowManualControl)

五、项目配置(ControlConfig)

{
  "control": {
    "enableAutoControl": false,
    "controlModeDescription": "PLC自动(上位机仅监控)",
    "allowManualControl": true,
    "allowParameterSync": true
  }
}
字段 含义 本项目值
enableAutoControl 上位机是否执行自动启停逻辑 false — PLC 自行处理
controlModeDescription UI 显示用的模式描述 "PLC自动(上位机仅监控)"
allowManualControl 是否允许远程手动启停泵 true — 需联锁检查
allowParameterSync 是否允许写参数到 PLC true

六、数据采集流程

PlcPollingService 定时轮询 (默认 1s)
   │
   ├─ 读模拟量: VD62(液位) / VD6600(压力) / VD6604(流量)
   │            VD50/54/58(泵电流) / VD7000(总流量)
   │            VD950+VD10 / VD954+VD18 / VD958+VD28(日台时)
   │
   ├─ 读数字量: Q0.1-3(泵运行) / M17.1-3(泵过流)
   │            M3.1/M6.1/M9.1(变频器故障)
   │            M19.5(低液位报警) / M30.1(高压报警)
   │            M1.0/M4.0/M7.0(中控/屏控) / M2.6/M5.6/M8.6(手自动)
   │
   ├─ 读控制参数: VD500/504/508/528/962(液位阈值)
   │              VD6700/6704(压力阈值)
   │
   └─ 发布 DataUpdated 事件
        ├─ AlarmService         → 报警检测 + 报警显示
        ├─ ProjectViewModel     → UI 刷新 (模式显示、泵状态、液位趋势)
        ├─ DataLoggingService   → 历史数据入库
        └─ (AutoControlService  → 不激活,因 enableAutoControl=false)

注意: AutoControlService 在 enableAutoControl=false 时不会订阅 DataUpdated,不向 PLC 写入任何启停命令。


七、报警逻辑

7.1 报警源

报警类型 触发条件 来源 级别
低液位报警 M19.5 = 1 PLC 数字量 警告(2)
高压报警 M30.1 = 1 PLC 数字量 严重(3)
泵1过流 M17.1 = 1 PLC 数字量 严重(3)
泵2过流 M17.2 = 1 PLC 数字量 严重(3)
泵3过流 M17.3 = 1 PLC 数字量 严重(3)
变频器1故障 M3.1 = 1 PLC 数字量 严重(3)
变频器2故障 M6.1 = 1 PLC 数字量 严重(3)
变频器3故障 M9.1 = 1 PLC 数字量 严重(3)
压力超高限 压力 > VD6704 上位机计算 警告(2)
压力超低限 压力 < VD6700 上位机计算 警告(2)
PLC 断连 通信超时 上位机检测 紧急(4)

7.2 报警处理

报警触发 → 记录到 alarm_records 表 → UI 弹出 → 桌面通知
   │
   ├─ 确认: 操作员点击确认 → 标记 IsConfirmed
   └─ 复位: 操作员点击复位 → 清除活跃状态 + 点动 M30.0 → PLC 侧复位报警输出

7.3 报警特性

特性 值
延迟触发 3 秒(防止瞬间波动误报)
死区防抖 ±2(防止在阈值边界反复触发)
升级机制 未确认 10 分钟自动升到级别 4
异步入库 Channel 有界队列 (200),不阻塞轮询

八、与旧版差异(v1 → v2 变更摘要)

# 变更项 v1 (旧) v2 (新)
1 上位机角色 自动启停泵 (AutoControlService) 仅监控,PLC 处理自动逻辑
2 故障地址 I0.1/I0.2/I0.3 (I区物理输入) M17.1/M17.2/M17.3 (泵过流) + M3.1/M6.1/M9.1 (变频器)
3 低液位报警 无 M19.5 (新增)
4 高压报警 无 M30.1 (新增)
5 总流量 VD884 (日流量) VD7000 (总流量)
6 操作联锁 无 中控+手动 双重检查
7 参数同步 无 可写 7 个阈值到 PLC
8 报警复位 仅确认 确认 + 复位 (软件清除 + M30.0 脉冲)
9 模式显示 无聚合 中控/屏控/混合 模式徽章
10 按项目配置 无 ControlConfig 按项目决定是否自动控制