第二章 位逻辑指令:从继电器到数字世界的桥梁

说实话,位逻辑指令是PLC编程的基石。不管你以后做多复杂的项目,最终都要回到这些最基本的指令上。我刚开始学PLC那会儿,总觉得位逻辑太简单,不就是开和关吗?后来在一条汽车生产线上栽了跟头,才明白这些基础指令用好了,能解决大问题。

2.1 常开触点和常闭触点

这两个概念,说白了就是继电器电路的数字化翻版。常开触点,平时是断开的,信号来了才接通。常闭触点正好相反,平时是通的,信号一来反而断开。

在TIA Portal里,常开触点用 --| |-- 表示,常闭触点用 --|/|-- 表示。你写程序的时候,直接拖拽就行。

核心要点:

  • 常开触点:输入为1时导通,输入为0时断开
  • 常闭触点:输入为0时导通,输入为1时断开
  • 两者可以串联、并联,形成复杂的逻辑组合

我记得有个项目,客户要求急停按钮必须用常闭触点。为什么?因为急停按钮按下时,触点断开,系统停机。但如果线路断了,触点也是断开的,系统同样会停机——这叫「故障安全」。你想想看,如果用常开触点,线路断了系统都不知道,那多危险。

2.2 线圈输出

线圈就是输出。在梯形图里,线圈画成 --( )-- 的样子。当线圈左边的逻辑条件满足时,线圈得电,对应的输出点或内部变量就变成1。

这里有个坑,我刚开始也犯过。线圈不能并联使用!同一个输出点,在程序里只能出现一次线圈。如果你写了两个线圈控制同一个点,PLC会按程序扫描顺序,最后一个线圈的状态覆盖前面的。我曾经在调试时找了半天bug,最后发现是重复输出了。

注意:同一个地址的线圈在程序中只能出现一次。如果需要多个条件控制同一个输出,请使用置位/复位指令,或者把条件合并。

2.3 置位与复位

置位(Set)和复位(Reset)是我用得最多的指令之一。置位指令 --( S )-- 让输出保持为1,复位指令 --( R )-- 让输出保持为0。哪怕触发信号消失了,输出状态也不会变,直到被另一个指令改变。

举个例子:

// 置位复位示例
// I0.0 按下 - 置位 Q0.0
// I0.1 按下 - 复位 Q0.0

   I0.0          Q0.0
---| |-----------( S )---

   I0.1          Q0.0
---| |-----------( R )---

这段程序的意思是:按一下启动按钮(I0.0),Q0.0就亮,松手也不灭。按一下停止按钮(I0.1),Q0.0才灭。这就是典型的「自锁电路」的数字化实现。

我个人习惯,在需要记忆状态的场合,优先用置位复位,而不是用自锁电路。为什么?因为程序更清晰,别人一看就懂。

2.4 上升沿与下降沿

上升沿和下降沿,检测的是信号变化的瞬间。上升沿 --( P )-- 检测信号从0变1的那一刻,下降沿 --( N )-- 检测信号从1变0的那一刻。

为什么要用沿信号?因为PLC是循环扫描的。如果你不用沿,一个按钮按下去,PLC可能扫描到好几次都为1,导致输出反复动作。用沿信号,只在按下的一瞬间触发一次。

实用技巧:在S7-1200/1500中,沿检测需要配合背景数据块使用。每个沿指令都会占用一个临时存储位,用来记住上一个周期的状态。如果你在FC里用沿指令,记得在接口区声明一个静态变量。

我遇到过这样一个情况:一个传送带需要每次按钮按下时前进一格。如果不用沿检测,按钮按久一点,传送带会走好几格。用了上升沿,按一次走一格,完美解决。

2.5 RS触发器和SR触发器

这两个触发器,其实就是置位复位指令的「高级版」。RS触发器:置位优先。SR触发器:复位优先。

类型 特点 应用场景
RS触发器 置位和复位同时有效时,置位优先 急停复位、安全回路
SR触发器 置位和复位同时有效时,复位优先 常规启停控制

在TIA Portal里,RS和SR触发器以功能块的形式出现。你拖出来之后,会看到S、R1(或R、S1)两个输入,以及Q一个输出。

我个人建议,在安全相关的场合用RS触发器。比如急停按钮复位后,系统必须手动启动才能恢复运行,这就是置位优先的逻辑。而在普通启停控制中,用SR触发器更安全——万一两个信号同时来了,优先停止。

避坑指南:我曾经在一个项目中,用SR触发器控制液压泵。调试时发现泵偶尔会自己启动。查了半天,原来是复位信号在PLC启动瞬间有一个短暂的脉冲,导致触发器复位了。后来我在复位信号前加了一个启动延时,问题就解决了。

知识体系总览

下面这张图,是我自己总结的位逻辑指令知识体系。你可以把它当作一个快速索引。

位逻辑指令知识体系 位逻辑指令 常开/常闭触点 线圈输出 置位/复位 上升/下降沿 串联/并联组合 故障安全设计 不可重复输出 条件合并技巧 记忆功能 RS/SR触发器 单次触发 背景数据块 核心:从继电器逻辑到数字逻辑的思维转换

嗯,这张图基本把位逻辑指令的脉络理清了。你写程序的时候,可以对照着看看,用到了哪些指令,它们之间是什么关系。

最后说一句,位逻辑指令虽然基础,但千万别小看它。我见过不少「高级」工程师,写复杂功能块写得飞起,结果在最基本的位逻辑上翻车。打好基础,比什么都重要。

专注资料整理