第三课:PLC核心编程语言——梯形图、功能块图、结构化文本入门
好,咱们直接进入正题。PLC 编程,说白了就是让机器听懂你的话。但机器听不懂人话,它只认逻辑。所以我们需要一种“中间语言”。
IEC 61131-3 标准定义了五种编程语言。但说实话,真正天天用的,就三种:梯形图(LD)、功能块图(FBD)、结构化文本(ST)。
我个人习惯是:简单逻辑用梯形图,复杂控制用功能块图,数学运算和数据处理用结构化文本。今天我就带你把这三样东西摸透。
一、梯形图(LD)—— 电工的“电路图”
梯形图,长得就像继电器电路。左边一根竖线是火线,右边一根竖线是零线。中间那些触点、线圈,就是你的逻辑。
为什么它最流行?因为电工师傅一看就懂。我在项目现场遇到过好几次,电工拿着图纸跟我对信号,我说“这是常开触点”,他立马就明白了。
基本元素:
- 常开触点(-||-):信号为 1 时闭合,电流通过。
- 常闭触点(-|/|-):信号为 0 时闭合,电流通过。
- 线圈(-( )-):电流流到线圈,输出置 1。
- 输出(-( )-):控制电机、阀门等。
核心规则: 梯形图是从左到右、从上到下扫描的。不是同时动作!
举个例子,一个简单的“启动-保持-停止”电路:
| 启动按钮 停止按钮 接触器线圈 |
|----||--------|/|--------( )----|
| | | |
| | 接触器自保触点 | |
| |----||-------------| |
嗯,这里要注意:启动按钮按一下,线圈得电。同时自保触点闭合,把启动按钮旁路掉。这样即使松开启动按钮,线圈依然保持。停止按钮一按,常闭断开,线圈失电。
避坑指南: 我曾经在调试一条包装线时,发现电机启动后无法自保。查了半天,原来是自保触点写成了常闭。你想想看,常闭触点一开始就通着,线圈一得电它反而断开了,这不就自锁了吗?所以,自保触点一定要用常开。
二、功能块图(FBD)—— 画“逻辑框图”
功能块图,说白了就是把你的控制逻辑画成一个个“盒子”。每个盒子代表一个功能,比如“与门”、“或门”、“定时器”、“计数器”。
我建议你把它想象成搭积木。输入信号从左边进盒子,经过处理,从右边输出。盒子之间用线连起来,就形成了完整的控制逻辑。
常用功能块:
| 功能块 | 符号 | 说明 |
|---|---|---|
| 与门 | & | 所有输入为 1,输出才为 1 |
| 或门 | >=1 | 任一输入为 1,输出为 1 |
| 非门 | 1 | 输入取反 |
| RS触发器 | SR | 置位/复位,有记忆功能 |
| TON定时器 | TON | 延时接通 |
举个例子,一个“延时启动”功能:
| 启动信号 | TON | 输出 |
|----||------|IN Q|----( )----|
| |PT ET| |
| | #5s | |
启动信号一给,定时器开始计时。5 秒后,Q 输出为 1,输出线圈得电。这就是延时启动。
个人经验: 我在做一条自动化产线时,需要判断“两个传感器同时检测到工件”才启动机械手。用梯形图写要好几行,用功能块图,一个“与门”就搞定了。你想想看,是不是很直观?
小技巧: 功能块图特别适合做“状态机”。把每个状态画成一个功能块,状态切换用连线表示,逻辑清晰,调试方便。
三、结构化文本(ST)—— 像写 C 语言一样写 PLC
结构化文本,说白了就是高级语言。它用 IF、CASE、FOR 这些语句,处理复杂逻辑和数学运算。
为什么需要它?因为梯形图和功能块图处理不了“PID 运算”、“数组排序”、“字符串处理”这些事。这时候,ST 就派上用场了。
基本语法:
- 赋值:
变量名 := 表达式; - IF 语句:
IF 条件 THEN ... ELSE ... END_IF; - CASE 语句:
CASE 变量 OF ... ELSE ... END_CASE; - FOR 循环:
FOR i:=1 TO 10 DO ... END_FOR;
举个例子,一个简单的“温度控制”逻辑:
IF 温度 > 100 THEN
加热器 := FALSE; // 停止加热
报警灯 := TRUE; // 报警
ELSIF 温度 < 80 THEN
加热器 := TRUE; // 开始加热
报警灯 := FALSE;
ELSE
加热器 := 加热器; // 保持原状态
报警灯 := FALSE;
END_IF;
这段代码的意思是:温度超过 100 度,停止加热并报警;低于 80 度,开始加热;在 80-100 之间,保持现状。
避坑指南: 我曾经在写一个 PID 程序时,忘记给变量赋初值。结果一运行,输出直接飞了。后来我养成了习惯:所有变量在程序开头都赋一个初始值。比如 温度 := 0.0;,这样就不会出问题。
警告: ST 语言虽然强大,但不要滥用。简单的启停逻辑,用梯形图更直观。复杂的数学运算,用 ST 更高效。选对工具,事半功倍。
四、三种语言怎么选?
我个人的经验是:
- 梯形图: 适合开关量控制、简单逻辑、现场调试。电工师傅看得懂,维护方便。
- 功能块图: 适合流程控制、状态机、模拟量处理。逻辑清晰,容易复用。
- 结构化文本: 适合复杂算法、数据处理、通信协议。效率高,功能强。
你想想看,一个项目里,这三种语言可以混用。比如主程序用梯形图,调用一个功能块图写的“状态机”,再调用一个 ST 写的“PID 运算”。这就是 IEC 61131-3 标准的魅力。
好了,这一课就到这里。下一课,我会带你实际动手,用这三种语言写一个“电机正反转控制”程序。到时候你就知道,它们到底怎么配合了。