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