常见的五种 PLC 编程语言/表示法

上图中5个选项对应 IEC 61131-3 里最常见的 PLC 编程语言/表示法。它们本质上是在用不同“语法外壳”表达同一件事:把输入信号按逻辑/时序/算术处理,驱动输出。在 OpenPLC / 许多 PLC IDE 里,可以按任务复杂度与团队习惯选用

1) LD(Ladder Diagram,梯形图)

思维模型:继电器/电气控制回路(“一条一条横档 rungs”)

  • 长什么样:左母线→右母线,中间是触点(常开/常闭)、线圈、定时器、计数器等;像电气原理图。
  • 适合场景
    • 离散量逻辑:启停、互锁、联锁、安全回路、故障复位
    • 现场维护人员快速排查:看“哪一档没成立”、哪个触点断了
  • 优点
    • 可读性强(对电气/自动化维护人员尤其友好)
    • 在线监视很直观:触点亮/灭、线圈得电与否
  • 缺点
    • 复杂算法/大量数学运算/数组循环写起来别扭
    • 逻辑规模很大时,图会“拉得很长”,结构管理要靠良好分块与注释

一句话:最像“硬接线继电器逻辑”的 PLC 表达方式,离散控制王者。

2) FBD(Functional Block Diagram,功能块图)

思维模型:信号流/数据流图(把功能当“积木块”,用连线传递信号)

  • 长什么样:各种功能块(AND/OR、比较器、加减乘除、滤波、PID、限幅、选择器、触发器等)用线连接,像搭电路/搭信号处理链。
  • 适合场景
    • 连续量/模拟量控制:调节阀、温度/压力/流量回路、PID、前馈/串级
    • 过程控制逻辑:信号整形、逻辑与模拟混合、模块化复用
  • 优点
    • 很适合表达控制回路结构(PID 周边、限幅、选择、切换、手自动)
    • 模块化强:把一个功能封成 FB(Function Block)到处复用
  • 缺点
    • 复杂时连线会很“乱”,需要良好布局/命名/层次化
    • 写状态机/复杂流程(特别是大量分支、循环)不如 ST 直观

一句话:更像“信号处理与控制回路搭建”,过程工业/调节回路特别常用。

3) ST(Structured Text,结构化文本)

思维模型:高级语言(类似 Pascal/C 的控制语言)

  • 长什么样IF/THEN/ELSECASEFOR/WHILE、函数调用、数组/结构体,文本形式。
  • 适合场景
    • 复杂算法:数学计算、滤波、模型/拟合、数据处理
    • 状态机:多工况切换、顺序逻辑(也可用 SFC,但你图里没列)
    • 需要版本管理/代码复审:git diff 更友好
  • 优点
    • 表达能力强:循环、函数封装、数据结构更自然
    • 大工程可维护性通常更好(配合良好模块化)
  • 缺点
    • 对习惯看图的现场人员不如 LD/FBD 直观
    • 在线监视需要 IDE 支持变量观察与跟踪,没“触点亮灯”那么一眼明白

一句话:最像“写程序”的 PLC 语言,适合复杂逻辑与工程化开发。

4) IL(Instruction List,指令表)

思维模型:类似汇编/栈式指令序列(一行一条指令)

  • 长什么样LD(装载)、ANDORST(存储)、JMP 等,紧凑但偏底层。
  • 适合场景
    • 早期/历史项目维护(很多老 PLC/老工程还在用)
    • 资源受限或厂商遗留生态(越来越少)
  • 优点
    • 代码短、执行路径清晰(对熟练者)
  • 缺点
    • 可读性差,工程协作不友好
    • 现代标准与厂商趋势里逐步弱化(很多平台推荐用 ST 代替)

一句话:PLC 的“老式汇编风格”,现在更多是兼容/维护价值。

5) SFC(Sequential Function Chart,顺序功能图)

思维模型: 流程/状态机图(把控制过程拆成“步骤 Step → 转换 Transition → 动作 Action”,按条件推进)

  • 长什么样:
    • Step(步骤):矩形/双边框框,表示当前处于哪个工艺阶段(待机、启动、运行、停机、故障等)
    • Transition(转换):横线+条件表达式,表示“满足什么条件才从当前步跳到下一步”
    • Action(动作):附着在 Step 上的动作列表(置位输出、调用功能块、执行一段 ST/LD/FBD 逻辑等)
    • 分支/并行:支持选择分支(OR 分支)与并行分支(AND 分支),适合多支路同步流程
  • 适合场景
    • 顺序控制/工艺流程:设备启动序列、阀门开闭顺序、产线节拍流程、清洗/吹扫/置换等批处理流程
    • 状态机控制:多工况切换(手/自、运行/待机/故障)、故障处理与复位路径
    • 需要可视化审查与调试的流程:现场一眼看出“卡在哪一步、下一步条件是什么”
  • 优点
    • 流程结构非常清晰:天然把“什么时候做什么”表达出来,便于工艺人员/维护人员理解
    • 在线监控友好:通常能直观看到当前激活的 Step、哪些 Transition 未满足、动作是否在执行
    • 易组织复杂流程:分支/并行/汇合能力强,适合把大流程拆成子流程(层级化/模块化)
  • 缺点
    • 不擅长连续控制与复杂算法本体:PID、滤波、数值计算通常仍交给 FBD/ST(SFC 更像“调度骨架”)
    • 转换条件写错风险大:容易出现“卡步”“乱跳”“抖动反复跳步”,需要超时、边沿触发、去抖与故障兜底步
    • 规模很大时图会膨胀:并行分支多、步骤多时,需要良好层级设计与命名规范

一句话: 更像“可视化的状态机/流程编排”,用来写顺控最顺手;具体动作细节常由 ST/FBD/LD 承担。

怎么选:给你一个实用的决策表

  • 现场维护/离散开关量/互锁:优先 LD
  • 控制回路/模拟量/模块化功能块拼接:优先 FBD
  • 复杂算法/状态机/大量数据处理/版本管理:优先 ST
  • 只在老项目里不得不用IL
  • 顺序控制/工艺流程/状态机(按步骤推进、带分支/并行):优先 SFC

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注