14. PLC的编程语言(图形化语言)
概述:两类五种语言
- 图形化语言(直观,类似画图)
梯形图 (LD)- 最常用,适合逻辑控制
功能块图 (FBD)- 适合过程控制
顺序功能图 (SFC)- 适合顺序流程
- 文本化语言(类似写代码)
结构化文本 (ST)- 功能强大,适合复杂算法
指令表 (IL)- 类似汇编,现在较少使用
1. 梯形图 - Ladder Diagram (LD)
- 描述:源于继电器控制电路,由触点、线圈和功能块组成,通过“能流”的概念来实现逻辑。是最常用的PLC语言。
- 适用场景:开关量逻辑控制、电机启停、互锁电路。
- 举例:经典的“启保停”电路
- 控制要求:按下启动按钮(I0.0),电机(Q0.0)运行;按下停止按钮(I0.1),电机停止。电机运行后能自我保持(自锁)。
- 字符画示意图:
|---[ I0.0 ]---[ /I0.1 ]---( Q0.0 )---| | | | |---[ Q0.0 ]-------------------------|
- [ I0.0 ]:常开触点(启动按钮)
- [ /I0.1 ]:常闭触点(停止按钮,符号上的“/”表示常闭)
- ( Q0.0 ):输出线圈(电机)
- ---[ Q0.0 ]---:并联的自锁触点
- 程序解释:
- 当 I0.0被按下(导通),且 I0.1未被按下(常闭触点默认导通)时,“能流”能流过,使线圈 Q0.0得电。
- Q0.0得电后,其自身的常开触点 [ Q0.0 ]闭合,形成自锁。此时即使松开 I0.0,电路依然保持导通。
- 当按下停止按钮 I0.1,其常闭触点断开,切断“能流”,Q0.0失电,电机停止,自锁也被解除。
2. 功能块图 - Function Block Diagram (FBD)
- 描述:使用功能块(如逻辑门、定时器、计数器等)和它们之间的连接线来表示控制逻辑。信号从左向右流动。
- 适用场景:过程控制、模拟量处理。
- 举例:简单的报警电路
- 控制要求:当温度过高(I0.2)且压力过高(I0.3)时,触发一个报警指示灯(Q0.1),并且报警需要持续5秒后自动熄灭。
- 字符画示意图:
+---------+ +-----------------+ | I0.2 | | TP | +-------+ |---------|---->|IN Q ELapsed|--->| Q0.1 | | I0.3 | | |PT T#5s | +-------+ |---------|--|->| | +---------+ +-----------------+ AND 功能块 脉冲定时器功能块
- AND:与逻辑功能块,输入全为1,输出才为1。
- TP:脉冲定时器功能块,当IN端有上升沿时,Q端输出一个持续PT设定时长(5秒)的脉冲。
- 程序解释:
-
- I0.2(温度高)和 I0.3(压力高)作为输入接入一个 AND功能块。
-
- AND块的输出连接到 TP(脉冲定时器)的 IN端。定时器的 PT(预设时间)设为5秒(T#5S)。
- 当温度压力同时过高时,AND块输出为1,触发定时器,定时器的输出 Q会立即输出一个持续5秒的“1”信号。
- 这个5秒的脉冲信号驱动报警指示灯 Q0.1亮起,5秒后自动熄灭。
3. 顺序功能图 - Sequential Function Chart (SFC)
- 描述:用流程图的形式来描述程序的执行顺序,由“步”和“转移”组成。非常适合顺序控制。
- 适用场景:机械手、装配线等有明确顺序的工艺流程。
- 举例:气缸自动往复运动
- 控制要求:
-
- 步1:气缸前进(Q0.2=ON),直到前限位(I0.4)。
- 步2:延时2秒。
- 步3:气缸后退(Q0.3=ON),直到后限位(I0.5),然后循环。
- 字符画示意图:
[初始步 S0] (动作: 无) | |I0.6(启动)| V [步 S1]------->(动作: SET Q0.2 //前进) | |I0.4(前限位)| V [步 S2]------->(动作: TON (T#2S) //延时) | |T0.Q(定时到)| V [步 S3]------->(动作: SET Q0.3 //后退) | |I0.5(后限位)| V |<-----------(跳转回S1)
- [步]:表示一个稳定的工作状态。
- |条件|:转移条件,条件为真时,从当前步转移到下一步。
- (动作:...):在该步内执行的动作。
- 程序解释:
-
- 程序从 S0开始,当启动信号 I0.6有效时,转移到 S1。
- 在 S1步,置位 Q0.2(气缸前进)。直到前限位 I0.4被触发,转移到 S2。
- 在 S2步,启动一个2秒的定时器。定时时间到 T0.Q=1后,转移到 S3。
- 在 S3步,置位 Q0.3(气缸后退)。直到后限位 I0.5被触发,程序直接跳转回 S1,开始新一轮循环。
