PLC 程序从梯形图往结构化文本迁移,是很多工厂在做的技术债清理。这件事看着只是换个写法,实际踩坑的地方不少。
检查点一:扫描顺序依赖
梯形图是自上而下、从左到右顺序执行的,很多人写程序时有意无意依赖了这个顺序——上一行的输出作为下一行的输入条件。结构化文本是语句顺序执行,看起来一样,但一旦有人把它重构成函数或用了条件分支,「上一行先算完」这个隐含假设就破了。迁移时要把所有跨梯级的中间变量找出来,显式化。
检查点二:双线圈与重复赋值
梯形图里同一个线圈出现在多个梯级是常见写法(虽然不规范),实际行为是最后一个生效。转成 ST 之后,多处赋值同一变量在语法上合法,但可读性极差,而且后续维护者会误判。这类要合并成一个明确的条件表达式。
检查点三:边沿检测
梯形图里的上升沿/下降沿指令依赖内部状态位。ST 里没有等价的原生语法,必须用变量保存上一次的值手写。这里最容易出的 bug 是初始化:首次扫描时「上一次的值」是 0 还是未知,直接影响第一个沿会不会被误判。
检查点四:定时器与计数器的语义
不同品牌、不同系列的定时器,时间基准和复位行为有差异。迁移时不能只改语法,要确认新写法的时间单位、是否保持、复位条件是否一致。计数器同理,尤其是「到达设定值后是否继续计数」这个行为。
检查点五:数据类型与隐式转换
梯形图里整数与浮点的混用往往靠隐式转换蒙混过关,ST 对类型更严格。迁移时把所有参与运算的变量类型列出来,特别是模拟量(通常是整型原始值)与工程量(浮点)之间的换算,别让截断误差悄悄出现。
检查点六:注释与命名
这是最不值钱也最值钱的一项。梯形图时代靠图形表达逻辑,注释可以很随便;ST 是文本,可读性完全依赖命名与注释。迁移是唯一一次「所有人都记得这段逻辑在干什么」的机会,这时候不写清楚,两年后没人敢动。
方法论
不要整段整段地翻。按功能块拆,一块一块迁,每迁完一块用仿真或空跑验证,再做下一块。整段翻译的结果通常是一个谁也不敢改的黑盒。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。