4. 现有系统逆向工程
在Modicon控制系统升级迁移项目中,逆向工程是决定迁移成败的第一道关口。旧系统往往运行了十年以上,原始设计文档缺失、程序经过多轮修改、图纸与现场实际不符,甚至HMI画面上的按钮标签与PLC内部变量早已脱节。如果直接按“新平台重写”的思路推进,很容易在联调阶段才发现某个联锁条件被遗漏、某个模拟量量程被误解,导致停机返工。因此,逆向工程的目标不是“把旧程序抄一遍”,而是建立一份可验证的现状基线:控制逻辑、I/O清单、通信关系三者必须相互印证,形成闭环。
一、逆向工程的四个信息源及其可信度
旧程序、电气图纸、HMI画面和现场设备是四个独立但互补的信息源。它们的可信度并不相同,需要交叉验证:
- 旧程序:反映PLC内部实际执行的逻辑,可信度最高,但可能包含废弃代码、临时旁路和未使用的变量。
- 电气图纸:反映设计意图和接线关系,但可能未反映现场改造,端子号、线号可能与实际不符。
- HMI画面:反映操作员视角的监控点、报警和操作权限,但变量地址可能经过中间寄存器映射,不能直接对应物理I/O。
- 现场设备:反映最终执行机构和传感器实际状态,是验证前两者的最终依据,但需要停电、挂牌、逐点核对,成本最高。
合理的策略是:以旧程序为逻辑主线,以电气图纸为物理接线参考,以HMI画面为操作语义补充,最后用现场设备逐点验证。四者不一致时,以现场实际接线和程序实际扫描结果为准,并记录差异原因。
二、从旧程序提取控制逻辑与I/O清单
以Modicon Quantum/Unity平台为例,旧程序通常以Concept、ProWORX或Unity Pro工程文件形式存在。提取时按以下顺序展开:
- 导出变量表与交叉引用:在Unity Pro中通过“工具→项目浏览器→变量与FB实例”导出所有变量,同时生成交叉引用报告,标记每个变量的读写位置。重点关注被多次写入的变量,这往往是联锁或模式切换的核心。
- 识别物理I/O映射:查找%I、%Q地址的直接引用,区分数字量、模拟量、专用模块。例如%I0.1.3表示机架0、槽1、通道3的数字量输入;%IW0.2.1表示模拟量输入字。将地址与模块型号、量程、信号类型对应记录。
- 提取逻辑段落:按功能块或梯形图网络分段,标注每段的触发条件、输出动作和互锁关系。对于复杂联锁,用状态表或因果表记录“条件→动作→复位条件”。
- 标记遗留与旁路:记录被强制、被旁路或注释掉的逻辑,这些往往是历史改造痕迹,迁移时需与工艺人员确认是否保留。
下面是一份从旧程序提取的I/O清单示例片段,字段包括地址、信号名、类型、量程/状态、关联设备、备注:
| 地址 | 信号名 | 类型 | 量程/状态 | 关联设备 | 备注 |
|---|---|---|---|---|---|
| %I0.1.0 | P101_RUN_FB | DI | 1=运行 | 泵P101 | 来自接触器辅助触点 |
| %I0.1.1 | P101_FAULT | DI | 1=故障 | 泵P101 | 热继电器常开 |
| %IW0.2.0 | PT101 | AI | 4-20mA / 0-1.6MPa | 压力变送器 | 量程需现场核对 |
| %Q0.3.0 | P101_START | DO | 1=启动 | 泵P101 | 脉冲输出,保持2s |
| %Q0.3.1 | V101_OPEN | DO | 1=开阀 | 阀V101 | 与开到位反馈联锁 |
三、从电气图纸提取物理接线与供电关系
电气图纸的核心价值在于确认“PLC端子到现场设备”的物理路径。重点提取:
- 电源分配:24VDC、220VAC、仪表电源的回路编号与断路器位置。
- 端子号与线号:每个I/O点的端子排编号、电缆编号、芯线颜色,用于现场核对。
- 中间继电器与隔离器:信号是否经过中间继电器、安全栅或隔离器,这会影响信号类型和负载能力。
- 接地与屏蔽:模拟量屏蔽层接地方式,迁移后需保持一致以避免干扰。
图纸与程序不一致时,常见原因包括:现场改造未更新图纸、备用点被临时启用、线号管脱落。此时应记录差异清单,安排现场核对。
四、从HMI画面提取操作语义与报警清单
HMI画面是操作员与系统交互的界面,提取时关注:
- 画面层级与导航关系:总貌、分组、详情、趋势、报警页。
- 操作按钮与权限:启动/停止、自动/手动、参数设定,记录对应的PLC变量和权限等级。
- 报警与事件:报警文本、触发条件、优先级、确认方式。报警文本往往包含工艺语义,是理解联锁目的的重要线索。
- 趋势与历史数据:记录趋势变量、采样周期、存储位置,迁移后需保证历史数据可追溯。
HMI变量常通过中间寄存器与PLC交换,例如画面按钮写%MW100,PLC程序再根据%MW100驱动%Q0.3.0。逆向时必须追踪这条映射链,不能只记录画面标签。
五、通信关系提取
旧系统通信关系包括:PLC与远程I/O的现场总线(如Modbus Plus、RIO)、PLC与HMI的以太网或串口、PLC与变频器/智能仪表的Modbus RTU、以及PLC与上位机的OPC或Modbus TCP。提取时记录:通信协议、物理接口、站号/IP、波特率、数据区映射、轮询周期、超时处理。对于Modbus RTU,需明确功能码、寄存器地址、数据类型(如32位浮点高低字顺序),这些细节在迁移时最容易出错。
六、现场核对与差异闭环
完成桌面提取后,必须进行现场核对。建议按“先电源、后信号、再通信”的顺序:先确认供电回路和断路器状态,再逐点核对数字量输入输出(用万用表或强制输出观察执行机构动作),最后核对模拟量量程和通信数据。现场核对时使用I/O清单作为检查表,每核对一点标记“一致/不一致/待确认”,不一致项记录实际状态和照片。
七、逆向工程成果的交付形式
逆向工程的最终交付物应至少包括:控制逻辑清单(含联锁因果表)、I/O清单(含端子与量程)、通信关系表、HMI报警与操作清单、差异记录表。这些成果直接作为新系统编程、画面组态和通信配置的输入。建议在迁移项目中使用统一编号规则,例如“旧地址—新地址—信号名—功能描述”,确保每个点可追溯。只有四源交叉验证完成、差异闭环关闭后,才进入新平台设计阶段,否则迁移风险将不可控。