4. PLC编程基础(一):位逻辑指令
各位同学,欢迎来到实战课程的第一节编程课。今天咱们聊点最基础、也最核心的东西——位逻辑指令。
说实话,我刚开始学PLC那会儿,觉得位逻辑太简单了,不就是开关嘛。后来在产线上栽过跟头才明白,越是基础的东西,越要扎扎实实搞透。你想想看,一个复杂的自动化系统,归根结底就是无数个「通」和「断」的组合。今天这堂课,咱们就把这些「砖块」一块一块码清楚。
4.1 常开触点、常闭触点与线圈
这三个家伙,是PLC编程的「字母表」。所有复杂的逻辑,都是它们拼出来的。
常开触点,说白了就是「平时断开,一按就通」。你按下启动按钮,信号来了,它就闭合了。在梯形图里,它长这样:--| |--。
常闭触点,正好反过来——「平时通着,一按就断」。急停按钮就是典型,平时一直通着电,你一拍下去,它断开,机器就停了。梯形图符号:--|/|--。
线圈,就是输出。逻辑条件满足了,线圈就得电,对应的物理输出点就亮了。符号:--( )--。
核心记忆法:
- 常开触点:
| |—— 像一扇关着的门,推一下就开 - 常闭触点:
|/|—— 像一扇开着的门,推一下就关 - 线圈:
( )—— 像个灯泡,条件满足就亮
举个例子。最简单的电机启动电路:
I0.0(启动按钮) Q0.0(电机)
——| |——————————————( )——
按下I0.0,Q0.0得电,电机转。松开,电机停。就这么简单。
但实际中谁会这么用?你想想看,手一松就停了,这哪行。所以咱们得加自锁。
我的经验: 我刚入行时,第一次调试一个传送带,就用了上面那个简单电路。结果客户一松手,传送带就停了,物料卡在半路上。后来被老师傅骂了一顿,才学会加自锁。自锁就是把自己的输出触点并联到启动触点上,这样一旦启动,即使松开按钮,电流也能从自己的触点流过,保持运行。
带自锁的启动电路:
I0.0(启动) I0.1(停止) Q0.0(电机)
——| |—————|/|—————( )——
| |
| Q0.0 |
+——| |———————+
看到没?Q0.0的常开触点并联在I0.0上。按下启动,Q0.0得电,自己的触点闭合,维持住回路。按下停止(I0.1常闭断开),回路断开,电机停。
4.2 置位指令(S)与复位指令(R)
刚才的自锁电路,说白了就是用线圈自己保持自己。但还有更优雅的方式——置位和复位。
置位指令(S):一旦条件满足,就把输出置为1,并且保持住。哪怕条件消失了,它还是1。
复位指令(R):一旦条件满足,就把输出清为0,同样保持。
梯形图里长这样:
I0.0(置位条件) Q0.0
——| |——————————————( S )
I0.1(复位条件) Q0.0
——| |——————————————( R )
用置位复位实现电机控制:
I0.0(启动) Q0.0
——| |——————————————( S )
I0.1(停止) Q0.0
——| |——————————————( R )
按下I0.0,Q0.0置位,电机转。按下I0.1,Q0.0复位,电机停。中间不需要自锁触点,干净利落。
注意! 置位和复位同时触发怎么办?不同品牌PLC处理方式不同。西门子S7-1200/1500中,如果S和R同时有效,复位优先。但有些老款PLC是置位优先。我建议你:永远不要依赖这种「同时触发」的情况,在程序里做好互锁。
我曾经在一个包装线上吃过这个亏。两个传感器同时触发,置位和复位打架,结果气缸卡在中间不动了。后来我加了一个互锁:
I0.0 I0.1 Q0.0
——| |——|/|——————( S )
I0.1 I0.0 Q0.0
——| |——|/|——————( R )
这样,置位时复位条件被切断,复位时置位条件被切断,永远不会同时触发。
4.3 边沿检测指令
好,接下来这个知识点,我觉得是初学者最容易懵的地方——边沿检测。
什么叫边沿?说白了就是「变化的那一瞬间」。
- 上升沿(P或R_TRIG):信号从0变1的那一瞬间,产生一个脉冲
- 下降沿(N或F_TRIG):信号从1变0的那一瞬间,产生一个脉冲
为什么要用边沿?你想想看,一个按钮按下去,如果你用常开触点检测,只要按着,它就一直是1。但很多时候,我们只需要「按下」这个动作执行一次,而不是一直执行。比如计数器,按一下加1,你按着不放总不能一直加吧?
梯形图里:
I0.0(上升沿检测) M0.0
——|P|———————————————( )
I0.0(下降沿检测) M0.1
——|N|———————————————( )
或者用西门子的标准指令:
I0.0 M0.0
——|R_TRIG|——————————————( )
CLK
实战案例: 我调试过一个冲压机,要求每按一次启动按钮,气缸完成一次冲压动作。如果用普通触点,操作工按着不放,气缸就会反复冲压,非常危险。后来改成上升沿触发,按一下只执行一次,安全多了。
边沿检测的典型应用:
| 应用场景 | 使用边沿类型 | 说明 |
|---|---|---|
| 按钮计数 | 上升沿 | 按一次计一次,长按不重复计数 |
| 故障复位 | 上升沿 | 故障消除后,按复位键只执行一次清除 |
| 传感器检测 | 上升沿/下降沿 | 检测工件到来(上升沿)或离开(下降沿) |
| 单次脉冲生成 | 上升沿 | 产生一个扫描周期的脉冲信号 |
我的小技巧: 边沿检测指令会占用一个中间位来存储上一个周期的状态。在西门子PLC里,如果你用R_TRIG指令,记得给它分配一个背景数据块或者用M区存储。我习惯用M0.0-M0.7来做边沿存储位,好记又方便。
4.4 三种指令的对比总结
讲了这么多,咱们用一张表收个尾:
| 指令类型 | 核心特点 | 适用场景 | 注意事项 |
|---|---|---|---|
| 常开/常闭/线圈 | 直接反映输入状态,不自保持 | 简单逻辑、互锁、急停 | 需要自锁时记得加反馈触点 |
| 置位/复位 | 状态保持,不受输入消失影响 | 状态记忆、报警锁存、模式切换 | 注意S/R优先级,做好互锁 |
| 边沿检测 | 只响应变化瞬间,不响应持续电平 | 计数、单次触发、脉冲生成 | 需要存储位,注意扫描周期影响 |
好了,这一章的内容就到这儿。位逻辑指令是PLC编程的根基,别看它简单,真正用好用活,需要你在项目里反复打磨。下一章咱们聊定时器和计数器,到时候你会发现,今天学的这些基础,会像积木一样搭出更强大的功能。
记住我一句话:基础不牢,地动山摇。把位逻辑练熟了,后面的路就好走了。
公众号:蓝海资料掘金营,微信deep3321