分享

博途中的沿指令,你用对了吗?

 PLC发烧友 2025-04-24 发布于广东

1

 沿指令概述   


   在设计PLC程序的时候,有时我们需要判断一些信号发生时或是消失时的情况,如物料感应到时,故障出现时,物料离开时,故障消失时等的一些情况,在要判断这些情况的下都会使用沿指令来进行判断。
   沿指令分为上升沿指令和下降沿指令两大类,上升沿指令表示信号由0变为1的情况,下降沿指令表示信号由1变为0的情况。不管是上升沿指令还是下降沿指令接通时间都为1个扫描周期时间。所以在应用中除了上面描述的情况外,若需要只让程序执行一个扫描周期的时间,也可使用沿指令来控制。

2

博途中沿指令分类

 

     S7-1200/1500 CPU中有多种沿检测指令,这些指令可以用于变量或者逻辑运算结果(RLO)的上升沿、下降沿检测,如下图所示

以上升沿指令说明为例:

①  在触点分配的 "M0.0" 位上检测到正跳变(0->1)时,该触点的状态为 TRUE。该触点逻辑状态随后与能流输入状态组合以设置能流输出状态,M0.1用于上个扫描周期的状态。    

②  在进入线圈的能流中检测到正跳变(0->1)时,分配的位 "M0.2 " 为 TRUE。能流输入状态总是通过线圈后变为能流输出状态。P 线圈可以放置在程序段中的任何位置。

   "CLK" 能流输入中检测到正跳变(0->1)时,Q 输出能流或者逻辑状态为 TRUE。P_TRIG 指令不能放置在程序段的开头或结尾。

④  分配的背景数据块用于存储 CLK 输入的前一状态。在 CLK 能流输入 (LAD) 中检测到正跳变(0->1)时,Q 输出能流或者逻辑状态为 TRUE。在 LAD 中,R_TRIG 指令不能放置在程序段的开头或结尾

总结:在使用中比较常用的为①③⑤⑦,其中① ⑤表示单个信号的上升沿和下降沿, ③⑦用于判断逻辑运算结果的上升沿和下降沿。

3

沿指令正确使用


(1)先看下面这段程序,为什么启动按钮启动后,后面的输出一个有输出,一个没有输出。

   程序中在两个程序段,都要判断“UserDB.Start”变量的上升沿,但是都使用到了同一个暂存位来暂存上个扫描周期的状态,所以当上个程序段的上升沿指令执行完后,会把对应的触点状态放到暂存位地址中,方便下个扫描周期的计算,所以暂存位地址是相同的时候,那么下段的上升沿对应的暂存位的状态其实已经变为了1,所有下个程序段的上升沿没有,所以写程序是,每个上升沿指令需要给他不同的暂存位。    

(2)当要判断几个条件进行逻辑运算结果的上升沿时,可使用扫描RLO上升沿指令。当前面的逻辑运算结果和上一次逻辑运算结果对比后,出现0→1的变化,这导通一个扫描周期的时间。

(3)SCL编程时需要使用上升沿和下降沿指令
  ① 在使用SCL编程时,需要使用到上升沿指令时,可使用检测上升沿指令这个FB块来实现,由于是FB块,在使用时会生成对应的DB背景块。程序如下图所示,UserDB".Start_P为上升沿信号,只接通一个扫描周期的时间,同理下降沿选择下降沿指令。

在SCL编程时,如不适用检测上升沿指令,也可根据上升沿和下降沿的指令原理,自行编写一个上升沿和下降沿的程序。
上升沿:本次的状态和上个扫描周期的状态对比,若本次结果为1,上次结果为0,说明有上升沿,然后把本次的结果给到上次的结果的储存器。
下降沿:本次的状态和上个扫描周期的状态对比,若本次结果为0,上次结果为1,说明有下降沿,然后把本次的结果给到上次的结果的储存器。    

其中:UserDB".Start_P[1]:上升沿信号

UserDB".Start[1]:本次状态存储器

UserDB".LastStatusBit[1]:上次状态暂存存储器

UserDB".Start_N[2]:下降沿信号

UserDB".Start[2]:本次状态存储器

UserDB".LastStatusBit[2]:上次状态暂存存储器

4

总结  


1、不同的沿指令具有不同的含义和使用场合,如单个触点信号的沿判断,逻辑信号的沿判断等,当然对应检测信号上升沿或是下降沿指令,即可对单个触点检测,也可对逻辑信号的判断,取决于CLK管家的情况。
2、沿指令使用时需要保证暂存位地址不重复,否则沿信号会无法生效。
3、SCL编程时,可以使用自己根据沿指令的原理编写对应的程序。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多