4、位逻辑指令详解:常开/常闭触点、线圈输出、置位/复位、上升沿/下降沿检测、RS触发器

各位同学,欢迎来到第四讲。今天咱们聊聊位逻辑指令。说白了,就是PLC里最基础、最常用的那套“开关逻辑”。你想想看,一个自动化项目,不管多复杂,底层都是这些“通”和“断”的组合。我个人习惯,每次写程序前,都会先在脑子里过一遍这些指令的用法,就像练武之前先扎马步一样。

4.1 常开触点和常闭触点

这两个是PLC编程的“砖瓦”。常开触点,就是平时断开的,你按一下才通。常闭触点正好相反,平时是通的,你按一下反而断开。

我在现场调试时遇到过一件事。一个老工程师把急停按钮接成了常开触点,结果一上电机器就自己转。吓得我赶紧断电检查。后来发现,急停按钮这种安全相关的,必须用常闭触点。为什么?因为万一线路断了,常闭触点会断开,机器能停下来。用常开的话,线断了机器还在跑,多危险。

核心记忆点:

  • 常开触点:平时不通,条件满足才通
  • 常闭触点:平时通着,条件满足就断开

4.2 线圈输出

线圈输出,就是给一个变量赋值。比如你写一个“Q0.0”,前面条件满足了,这个线圈就“得电”,输出点就亮了。

嗯,这里要注意一个细节。线圈输出不能重复使用。什么意思?就是同一个地址,比如M0.0,你不能在程序里写两次线圈输出。我见过一个新手,为了省事,把同一个输出点写了两遍。结果PLC扫描到最后一行,前面的赋值全被覆盖了。设备动作乱得一塌糊涂。

我的习惯:每个线圈只在一个地方输出。如果需要在多个地方控制同一个点,用中间变量M区过渡一下。

4.3 置位/复位指令

置位(Set)和复位(Reset)是一对好兄弟。置位就是把一个位“锁死”在1状态,复位就是把它“解锁”回0状态。哪怕你置位之后条件消失了,这个位还是1,直到你复位它。

我在做传送带控制时特别喜欢用这对指令。比如启动按钮按一下,置位一个M点,传送带就一直跑。直到碰到限位开关,复位这个M点,传送带才停。这样写,程序逻辑特别清晰,而且不容易出bug。

// 博途中的LAD示例
// 启动按钮 I0.0 置位 Q0.0
// 停止按钮 I0.1 复位 Q0.0
// 注意:置位和复位可以分开写,不一定要挨着

我曾经踩过的坑:置位和复位同时触发时,谁写在后面谁说了算。所以写程序时,一定要想清楚优先级。我一般把复位写在后面,确保安全优先。

4.4 上升沿/下降沿检测

这个指令,说白了就是“抓瞬间”。上升沿检测,就是信号从0变1的那一瞬间,输出一个脉冲。下降沿就是信号从1变0的那一瞬间。

你想想看,一个按钮按下去,PLC扫描周期那么快,可能你按一次,它检测到几十次。但用上升沿检测,它就只认第一次从0变1的那个时刻,只输出一个扫描周期的脉冲。这样就不会重复触发了。

我记得有一次做包装机项目,计数传感器老是多计数。后来发现是传感器抖动,信号在1和0之间来回跳。加上上升沿检测之后,问题就解决了。只抓取稳定的上升沿,抖动全被过滤掉了。

实用技巧:

  • 上升沿:用P_TRIG指令(博途里叫“R_TRIG”的上升沿版本)
  • 下降沿:用N_TRIG指令(博途里叫“F_TRIG”的下降沿版本)
  • 每个沿检测都需要一个背景数据块来存储上一个周期的状态

4.5 RS触发器

RS触发器,其实就是把置位和复位打包成一个功能块。它有两个输入端:S(置位)和R(复位),一个输出端Q。

博途里提供了两种:SR触发器和RS触发器。区别在于优先级。SR触发器是置位优先,RS触发器是复位优先。我个人习惯用RS触发器,因为复位优先更安全。万一两个信号同时来,设备能停下来,而不是继续跑。

触发器类型 S=1, R=1时输出 推荐场景
SR触发器 Q=1(置位优先) 需要保持启动状态的场合
RS触发器 Q=0(复位优先) 安全相关的场合,如急停复位

我的建议:除非你有特殊需求,否则一律用RS触发器。安全第一,这是我在现场摔过跟头换来的经验。

4.6 综合应用示例

咱们来个简单的例子。一个电机启动/停止控制,带故障复位功能。

// 网络1:启动信号(上升沿检测)
// I0.0 启动按钮
// 用上升沿检测,防止按钮抖动
"R_TRIG_DB_Start"(CLK:=I0.0, Q=>M0.0);

// 网络2:RS触发器控制电机
// M0.0 启动脉冲(置位)
// I0.1 停止按钮(复位)
// I0.2 故障信号(复位)
"RS_Trigger_DB"(S:=M0.0, R:=I0.1 OR I0.2, Q=>Q0.0);

// 网络3:故障指示灯
// Q0.1 故障指示灯
Q0.1 := I0.2;

你看,这样写出来,逻辑一目了然。启动用上升沿,停止和故障用复位,安全又可靠。我在好几个项目里都用这个模板,改改地址就能用,省了不少事。

最后总结一下:

  • 常开常闭是基础,别搞反了
  • 线圈输出别重复,一个地址只写一次
  • 置位复位要成对,注意优先级
  • 沿检测抓瞬间,防抖动利器
  • RS触发器选复位优先,安全有保障

好了,这一讲就到这里。这些指令看着简单,但用好了能解决大问题。下次咱们聊聊定时器和计数器,那又是另一番天地了。