本节摘要:IEC 61131-3 是工业控制编程的国际标准,定义了五种语言:梯形图、功能块图、顺序功能图、指令表、结构化文本。本节逐一讲清每种语言的表达方式与适用场景,说明"语言选择"其实是"问题类型"的映射,并给出混合编程的实务建议。
没有标准的年代,每家厂商一套编程语言,工程师换品牌要重学,方案不可移植。一九九三年发布的 IEC 61131-3(后续修订为 IEC 61131-10 等)统一了语言集:不管哪家控制器,五种语言的表达逻辑一致,工程师的核心技能可迁移。DCS 侧最常用的是功能块图(连续控制)与顺序功能图(批次与联锁逻辑),梯形图在 PLC 混合项目中常见,结构化文本负责计算密集的逻辑,指令表已经边缘化(多数场合仅作为中间代码存在)。
梯形图长得像继电器控制电路图:左右两条母线,中间触点与线圈串联并联。它诞生于电气工程师的阅读习惯——常开触点、常闭触点、线圈、锁存,全是继电器盘时代的词汇。一个简单的启保停逻辑:按下启动按钮(常开触点闭合),线圈得电,其辅助常开触点并联在启动按钮两端实现自保持;按下停止按钮(常闭触点断开),回路断开。电气背景的工程师看梯形图如同看母语。DCS 里梯形图用于开关量联锁与设备启停逻辑;但在连续调节场景,梯形图的表达力远不如功能块图。
功能块图是数据流图:每个功能块有输入输出引脚,块与块用线连接,数据沿线流动。一个 PID 回路就是"模拟量输入块 → PID 块 → 模拟量输出块"的连线,串级就是两个 PID 块的级联。第四章讲的全部回路结构——前馈、比值、分程、三取二表决——在 FBD 里都是直观的块图,与教科书的方块图几乎一一对应。这是 DCS 控制组态的主力语言:连续控制的表达,没有比数据流图更自然的方式。
标准功能块库覆盖了绝大多数需求:PID 及其变体(带前馈、带外部复位)、选择器(高选低选三取二)、限幅与速率限制、计时器计数器、累积器、与或非逻辑。自定义功能块(把常用结构封装成一块)是复用的关键手段——比如把"双通道测量取均值加坏质量剔除"封装成一个高可靠性输入块,全厂复用。
批次过程(反应进料—升温—反应—降温—出料)本质是状态机,SFC 直接表达状态机:步(做什么)与转换(何时进入下一步)交替排列,支持并行分支与选择分支。每一步内嵌动作(调用某段 FBD 或 ST 逻辑),转换条件是布尔表达式(如"温度达到 80 摄氏度且保持五分钟")。SFC 的可读性对工艺人员极其友好——工艺流程图与 SFC 图几乎同构,评审联锁逻辑时工艺工程师能真正参与。制药、食品、精细化工的批次控制标准(ISA-88)就以 SFC 为表达骨架。
结构化文本是类 Pascal 的高级文本语言,有赋值、条件、循环、函数。它适合标准图形语言笨拙的场景:复杂计算(热焓换算、物料平衡)、数据结构遍历(批量处理一百个罐的状态)、字符串处理(报表逻辑)、自定义算法(特殊的滤波器)。代价是可读性依赖注释纪律——一段没人注释的 ST 代码,三年后连作者本人都要逆向工程。实务建议:ST 块保持短小(几十行内),入口出口接口清晰,函数级注释,并纳入重点审查(6.1 节说过,自定义代码是审查重点)。
| 语言 | 形态 | 最适合 | 典型场景 | 注意点 |
|---|---|---|---|---|
| 梯形图 LD | 继电器电路图 | 开关量逻辑 | 设备启停、互锁 | 逻辑复杂后难读 |
| 功能块图 FBD | 数据流图 | 连续控制 | 回路、串级、表决 | 图幅管理,分层封装 |
| 顺序功能图 SFC | 状态机 | 批次与顺控 | 反应批次、开停车 | 步内动作别塞太满 |
| 结构化文本 ST | 高级文本 | 复杂计算 | 换算、批量处理 | 注释纪律与审查 |
| 指令表 IL | 汇编式文本 | 演示与遗留 | 已边缘化 | 新项目不建议 |
以某反应釜的开停车为例看混合分工:SFC 管主干——"初始检查 → 氮气置换 → 进料 → 升温 → 反应保温 → 出料"六步,每步的进入条件一目了然;每步内部的动作分两类——连续调节交给 FBD(温度串级回路全程在线,接受 SFC 给出的各阶段设定值),联锁与设备联动的细碎逻辑用 LD 或 ST 补齐(比如"搅拌电机运行且温度高于 60 度时禁止打开人孔")。三种语言各占其位:SFC 管时间轴,FBD 管连续量,LD 管开关量。评审时工艺人员看 SFC 图就能确认顺序对不对,自控工程师下钻到 FBD 与 LD 核对细节——语言的分工就是评审的分工。
⚠️ 跨语言陷阱:不同语言访问同一个变量时要分清"读"与"写"的所有权。SFC 与 FBD 都去写同一个回路的给定值,实际行为取决于执行顺序,排查极难。纪律是:每个运行变量只有一个写者,跨语言只读共享、指令经显式接口传递。
方案写好了、逻辑跑起来了,操作员每天面对的那块屏幕怎么设计?下一节讲人机界面。
| 语言 | 形态 | 适用场景 | DCS 中的地位 |
|---|---|---|---|
| FBD 功能块图 | 方块连线 | 连续量回路、模拟量计算 | DCS 主力首选 |
| LD 梯形图 | 继电器触点 | 联锁逻辑、顺序步 | 逻辑量主力 |
| ST 结构化文本 | 类 Pascal | 复杂计算、数据处理 | 补充手段 |
| SFC 顺序功能图 | 步-转移图 | 批量过程顺序控制 | 批量必备 |
| IL 指令表 | 汇编风格 | 已逐步淘汰 | 少用 |
选用口诀:连续用 FBD、逻辑用 LD、批量用 SFC、复杂算用 ST。四种语言可在同一工程混用——按问题性质选语言而不是按个人习惯,这是组态规范化的第一步。
以间歇反应釜的加料-反应-排放顺序为例走一遍 SFC 思维。初始步:确认釜空、阀门全关、搅拌停。步 1 加料:开进料阀,转移条件为液位到设定值——转移动作是关阀并做加料量确认。步 2 升温:开蒸汽阀启动搅拌,转移条件为釜温到反应温度。步 3 反应保持:计时两小时(转移条件为时间),期间温度由 PID 回路维持。步 4 冷却:关蒸汽开冷却水,转移条件为温度降到出料温度。步 5 排放:开出料泵与阀,转移条件为釜空信号。每步的动作清单(该步激活时做什么)与转移条件(何时去下一步)写清楚,整个顺序就变成了可组态的图形——这就是 SFC 把工艺流程直接翻译成控制程序的魔力,也是批量控制(IEC 61512 配方模型)的底层语言。