
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/ELSE、CASE、FOR/WHILE、函数调用、数组/结构体,文本形式。 - 适合场景
- 复杂算法:数学计算、滤波、模型/拟合、数据处理
- 状态机:多工况切换、顺序逻辑(也可用 SFC,但你图里没列)
- 需要版本管理/代码复审:git diff 更友好
- 优点
- 表达能力强:循环、函数封装、数据结构更自然
- 大工程可维护性通常更好(配合良好模块化)
- 缺点
- 对习惯看图的现场人员不如 LD/FBD 直观
- 在线监视需要 IDE 支持变量观察与跟踪,没“触点亮灯”那么一眼明白
一句话:最像“写程序”的 PLC 语言,适合复杂逻辑与工程化开发。
4) IL(Instruction List,指令表)
思维模型:类似汇编/栈式指令序列(一行一条指令)
- 长什么样:
LD(装载)、AND、OR、ST(存储)、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