4. 旧程序逆向解读与功能规格提取
旧设备控制迁移项目里,最容易被低估的工作不是写新程序,而是把老程序“读懂”。很多旧机台的梯形图经过多年修改,注释缺失、符号混乱、同一输出被多处驱动,甚至电气原理图与程序逻辑已经不一致。如果直接照着梯形图逐行翻译到 Sysmac Studio,往往会把历史遗留的错误一起搬过去。因此,逆向解读的目标不是复制旧代码,而是还原出设备动作流程、互锁逻辑和工艺参数,最终形成一份可评审、可追溯的功能规格说明书。
一、先建立“证据链”,再动手读图
逆向解读不能只盯梯形图。可靠的做法是把四类资料放在一起交叉验证:梯形图(或指令表)、程序注释、电气原理图、以及现场操作与工艺记录。它们各自提供不同维度的信息:梯形图给出逻辑关系,注释给出设计意图,电气原理图给出真实接线与执行元件,现场记录给出实际动作顺序。当四者出现矛盾时,以电气原理图和现场实测动作为准,程序逻辑作为待确认项。
建议先做一次资料清点,形成“证据链清单”:
- 程序文件:梯形图/指令表、I/O 分配表、符号表、注释版本;
- 电气资料:主回路图、控制回路图、端子接线图、元件清单;
- 工艺资料:动作时序说明、参数设定表、报警清单、操作手册;
- 现场信息:实际 I/O 点检记录、关键动作实测时序、操作员口述经验。
清点完成后,先不要急着逐行读逻辑,而是先建立I/O 映射表。把每个物理点(如 X0、Y0、M 内部继电器)与电气原理图上的元件(如 SB1 启动按钮、KM1 接触器线圈)对应起来。这一步是后续所有解读的基础,映射错了,后面全错。
二、从“输出”反推“输入”,还原动作流程
旧程序逆向解读最有效的方法是从输出反推。先找出所有实际执行元件(接触器、电磁阀、变频器、伺服使能等),再沿着梯形图往回追,看每个输出在什么条件下被置位、什么条件下被复位。这样得到的不是零散的网络,而是一条条完整的动作链。
以一台旧包装机的封口动作为例。假设输出 Y10 驱动封口气缸电磁阀,梯形图中 Y10 的驱动条件为:X5(封口到位传感器)为 ON、M20(自动运行标志)为 ON、T5(封口延时)未完成、且 X12(安全门)为 ON。继续追 M20 的来源,发现它由 X0(启动按钮)置位、由 X1(停止按钮)或 X11(急停)复位。这样就能还原出:启动后进入自动运行,安全门关闭且封口到位时,封口气缸动作,延时 T5 到达后复位。
把每个输出都这样追一遍,就能得到一张动作流程关系图。下面这张图展示了一个典型的“输入条件—内部标志—输出执行—互锁约束”的逆向还原结构,可作为整理旧程序时的参考框架:
三、互锁逻辑的提取要区分“硬互锁”与“软互锁”
旧设备的安全性和可靠性,很大程度取决于互锁逻辑。逆向解读时要把互锁分成两类:硬互锁由电气回路直接实现,如安全门开关串在接触器线圈回路中、急停按钮直接切断主回路;软互锁由 PLC 程序实现,如安全门信号进入 PLC 后参与逻辑判断。两者必须分别记录,并在功能规格说明书中明确标注哪些是安全相关、哪些是工艺相关。
特别要注意旧程序中常见的“隐性互锁”:某个输出看似独立,实际上被另一个输出的常闭触点串联限制。例如 Y11 输送电机启动的前提是 Y10 封口气缸已复位,这种顺序互锁在梯形图中往往只表现为一个常闭触点,容易被忽略。解读时要把所有串联的常闭条件都列出来,并注明其物理含义。
四、工艺参数的提取与确认
工艺参数是迁移后设备能否保持原有产品质量的关键。旧程序中的参数可能以三种形式存在:定时器/计数器的设定值(如 T5 设定 2.5s)、数据寄存器中的数值(如 D100 存放加热温度 180)、以及通过触摸屏或拨码开关输入的变量。逆向解读时要把每个参数的地址、当前值、单位、允许范围、关联动作都记录下来。
需要特别提醒的是:旧程序中很多参数是“经验值”,可能已经偏离原始设计。例如某台设备的封口延时从最初的 1.8s 被现场调整到 2.5s,原因是更换了封口材料。这类信息必须通过操作员访谈或历史记录确认,不能只抄程序里的当前值。在功能规格说明书中,应把参数分为“设计值”和“现场实际值”两栏,并注明差异原因。
五、形成功能规格说明书的实用结构
逆向解读的最终交付物是功能规格说明书。它不是对旧程序的逐行翻译,而是对设备功能的重新描述。一份可用的规格说明书至少应包含以下内容:
| 章节 | 内容要点 | 来源与确认方式 |
|---|---|---|
| I/O 清单 | 物理点、符号名、电气元件、信号类型、常开/常闭 | 电气原理图 + 现场点检 |
| 动作流程 | 每个执行元件的置位/复位条件、顺序、时序 | 梯形图反推 + 现场实测 |
| 互锁逻辑 | 硬互锁回路、软互锁条件、优先级、复位方式 | 电气图 + 程序 + 安全评估 |
| 工艺参数 | 参数地址、设计值、现场值、单位、范围、关联动作 | 程序 + 操作记录 + 访谈 |
| 报警与异常 | 报警代码、触发条件、处理方式、复位方法 | 程序 + 报警清单 + 现场验证 |
在填写这份说明书时,建议对每一条信息标注置信度:已通过现场验证的标“确认”,仅从程序推断的标“待验证”,存在矛盾的标“冲突”。这样在后续迁移开发时,团队能清楚知道哪些逻辑可以直接移植,哪些必须先做实验确认。
完成逆向解读后,你会得到一份独立于旧程序的功能规格说明书。它描述的是“设备应该怎么动作”,而不是“旧程序怎么写”。这份说明书将成为后续 Sysmac Studio 编程、测试用例设计和验收的依据。下一阶段的工作,就是基于这份规格,重新设计符合 NJ/NX 系列编程规范的程序结构。