分享

博途SCL编程:如何快速记录变量值改变次数??

 工控库吧 2021-12-08

西门子S7-1500项目设计与实践全套教程!

600多例电子维修妙招维修工程师宝典!


有时候会遇到想知道一个变量数值是否发生了变化,如果有变化,则进行一些列运算或触发一些动作。下面我们来编写一个小子程序,记录变量数值变化的次数。

(1)定义变量,如下图:


(2)编写程序,如下图:

(3)程序监控,如下图:

(4)以上是第一次没有变化时,开始数值是“0”。

(5)以上是数值经过了两次变化,从“0”到“1”,再从“1”到“0”。

可以看到一共记录了两次变化。

【指令解释】R_TRIG:检测信号上升沿
使用“检测信号上升沿”指令,可以检测输入CLK 的从“0”到“1”的状态变化。该指令将输入CLK 的当前值与保存在指定实例中的上次查询(边沿存储位)的状态进行比较。如果该指令检测到输入CLK 的状态从“0”变成了“1”,就会在输出Q 中生成一个信号上升沿,输出的值将为TRUE 或“1”一个周期。在其它任何情况下,该指令输出的信号状态均为“0”。
指令格式:
<变量>(CLK:= <操作数1>,Q => <操作数2>)
指令示例:
"R_TRIG_DB"(CLK := "TagIn",Q => "TagOut");
输入CLK 中变量的上一个状态存储在“R_TRIG_DB”变量中。如果在操作数“TagIn_1”和“TagIn_2”或在操作数“TagIn_3”中检测到信号状态从“0”变为“1”,则输出“TagOut_Q”的信号状态为“1”一个周期。

(成都瑞途电子有限公司 刘立峰<技术总监>》撰稿)

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章