4. PLC编程基础(一):位逻辑指令
各位同学,咱们今天正式进入PLC编程的核心——位逻辑指令。说实话,这部分内容看起来简单,但它是整个梯形图的基石。我见过太多新手一上来就追求复杂功能,结果连个自锁电路都写不稳,现场一跑就出问题。
位逻辑指令,说白了就是处理开关量的指令。开关量只有两种状态:通或断,1或0,True或False。你想想看,工业现场那些按钮、传感器、继电器,最终反馈给PLC的都是这种信号。所以,把这几个指令吃透,你就掌握了PLC编程的六成功力。
4.1 常开触点和常闭触点
先说说触点。常开触点和常闭触点,这是梯形图里最基础的两个元件。常开触点,就是平时断开、按下才通的那个。常闭触点正好相反,平时通着,按一下就断开。
在梯形图里,常开触点用 --| |-- 表示,常闭触点用 --|/|-- 表示。这个符号很形象,斜杠就是断开的意思。
关键点:常开触点和常闭触点是读状态,不是写状态。它们读取的是对应存储位的值,然后决定是否让电流通过。
举个例子。你有一个启动按钮接到PLC的I0.0,一个急停按钮接到I0.1。启动按钮用常开,急停按钮用常闭。为什么急停要用常闭?
我解释一下:急停按钮如果用了常开,一旦线路断了或者按钮坏了,你按下去根本没反应,设备停不下来,这很危险。用常闭的话,线路断了或者按钮坏了,信号就断了,设备自动停止。这叫「故障安全」设计。我在一个包装线项目里就遇到过,客户原来用的常开急停,结果线被老鼠咬断了,急停失效,差点出事故。后来全部改成了常闭。
4.2 输出线圈
线圈,符号是 --( )--。它的作用很简单:如果线圈左边的条件满足(有电流流过),线圈就通电,对应的存储位就变成1;否则就是0。
但这里有个坑,我刚开始学的时候也犯过。线圈的输出状态只取决于它左边的逻辑条件,跟它自己在别处有没有被使用无关。说白了,线圈就是「写」操作,触点就是「读」操作。
我的习惯:在写梯形图时,同一个位不要用两个线圈去驱动。PLC扫描周期很短,后一个线圈会覆盖前一个,容易出逻辑混乱。如果确实需要多个条件控制同一个输出,用置位/复位指令,或者用中间变量过渡一下。
4.3 置位和复位
置位(SET)和复位(RST),这两个指令比线圈更「霸道」。线圈是随动逻辑——条件满足就通,条件不满足就断。但置位和复位不一样:置位一旦执行,输出就保持为1,哪怕条件消失了也不变;复位则相反,执行一次就变成0,也保持住。
符号上,置位是 --( S )--,复位是 --( R )--。有些PLC里也叫SET和RESET。
| 指令 | 符号 | 行为 | 典型用途 |
|---|---|---|---|
| 输出线圈 | --( )-- | 条件满足=1,不满足=0 | 指示灯、简单控制 |
| 置位 | --( S )-- | 条件满足时置1,保持 | 锁存信号、启动设备 |
| 复位 | --( R )-- | 条件满足时置0,保持 | 停止设备、清除报警 |
举个例子。一个电机启动后,我们希望它一直转,直到按下停止按钮。用线圈的话,你得做自锁电路。用置位复位就简单了:启动按钮置位电机,停止按钮复位电机。
// 梯形图示例(西门子S7-1200风格)
// 启动按钮 I0.0 置位 Q0.0
// 停止按钮 I0.1 复位 Q0.0
Network 1: 置位电机
I0.0 Q0.0
---| |-----------------( S )---
Network 2: 复位电机
I0.1 Q0.0
---| |-----------------( R )---
注意:置位和复位一定要成对使用。我曾经在一个项目里只用了置位忘了复位,结果设备启动后就再也停不下来了,只能断电重启。嗯,那场面挺尴尬的。所以写程序时养成好习惯:置位和复位写在一起,或者至少确保每个置位都有对应的复位条件。
4.4 上升沿和下降沿
上升沿和下降沿,这两个指令处理的是信号变化的瞬间。上升沿检测信号从0变到1的那一刹那,下降沿检测从1变到0的那一刹那。
符号上,上升沿是 --|P|-- 或 --( P )--,下降沿是 --|N|-- 或 --( N )--。不同PLC的符号略有差异,但原理一样。
为什么要用边沿?因为很多时候我们只需要信号变化的那一瞬间,而不是持续的信号。比如按一下按钮,计数器加1。如果用常开触点,你按着不放,计数器会一直加,直到你松手。用上升沿的话,只在你按下去的那一瞬间触发一次,完美解决。
我记得有个项目是做产品计数,传送带上的传感器检测到产品就计一个数。结果客户反映计数总是偏多。我去现场一看,传感器信号有抖动,一个产品过去产生了多个脉冲。后来在程序里加了上升沿检测,配合一个延时滤波,问题就解决了。
实用技巧:边沿指令会占用一个存储位来记录上一个周期的状态。所以同一个信号如果被多个边沿指令使用,每个边沿指令都会独立记录,互不影响。但要注意,边沿指令不能用在全局变量上,只能用在位变量上。
4.5 综合应用:起保停电路
说了这么多,咱们来写一个经典的起保停电路。这是工业现场最常用的电路之一,用来控制电机、泵、风机等设备的启动和停止。
// 起保停电路
// I0.0: 启动按钮(常开)
// I0.1: 停止按钮(常闭)
// Q0.0: 电机接触器
Network 1: 起保停逻辑
I0.0 I0.1 Q0.0
---| |-----------------|/|-----------------( )---
| |
| Q0.0 |
+---| |-------------+
这个电路怎么工作的?按下启动按钮(I0.0),Q0.0得电。同时Q0.0的常开触点闭合,形成自锁。这样即使松开启动按钮,电流也能通过自锁触点继续维持Q0.0。按下停止按钮(I0.1),常闭触点断开,电路断开,Q0.0失电。
你想想看,这个电路用到了常开触点、常闭触点、线圈,还有自锁的概念。如果换成置位复位,逻辑会更清晰,但起保停电路在有些场合还是更直观,尤其是维修电工习惯看这种图。
总结一下:位逻辑指令虽然基础,但组合起来能实现很复杂的控制逻辑。我的建议是,先把这几个指令的用法练熟,然后多写几个小项目练手。比如做个红绿灯控制、做个传送带启停、做个报警系统。等你把这些基础玩透了,后面学定时器、计数器、功能块就会轻松很多。
好了,这一节的内容就到这里。记住,编程不是背指令,而是理解逻辑。多动手,多调试,慢慢就有感觉了。
公众号:蓝海资料掘金营,微信deep3321