北岛夜话
原创工业智能控制领域(PLC、单片机、嵌入式、机器人、通信)的技术及经验分享。
文章301 浏览1930324

西门子SCL编程入门教程连载(17)-自己编写沿检测代码

前面的文章《西门子SCL编程入门教程连载(5)-沿信息检测指令》,有小伙伴留言问:

SCL里使用沿检测必须使用DB块码?和梯形图不能一样么?

今天这篇文章,我来回答这个问题。

cover.png

第一种情况:

如果使用SCL语言指令列表中的R_TRIG或者F_TRIG指令,在添加这些指令的时候系统会自动添加背景数据块或者多重背景数据块,所以这种情况下必须使用数据块的;

第二种情况:

沿信号检测指令的关键之处在于要记住之前的信号状态,然后将当前的信号状态与之前的进行比较,从而来判断是否是上升沿或者下降沿。

基于这一原理,我们可以自己编写沿信号检测代码:

首先,创建功能块FB_EdgeDetect,声明变量如下:

  1. request:用于检测的输入信号;

  2. edgeUp:上升沿输出信号;

  3. edgeDown:下降沿输出信号;

  4. requestMemory:输入信号的记忆值(上一个扫描周期的状态值),注意是静态变量;

FB_Variable_Declear.png

编写代码如下:

FB_code.png

当然,在FB中实现该代码仍然需要背景数据块。所以,我也介绍下如何在FC中实现这个功能。

比如,创建一个功能FC_EdgeDetect,声明变量如下:

FC_Edeg_Detect.png

代码不用变,如下:

FC_code.png

在OB1中调用FC_EdgeDetect的示例代码如下:

OB1.png

需要注意的是,requestMemory要使用全局变量或者静态变量,不能使用临时变量;

好了,关于自己编写沿信号检测的代码就先介绍到这里,有任何问题欢迎留言。

我最近开通了微信视频号,以视频的方式分享一些工控小知识。具有内测权限的小伙伴欢迎扫描下方的二维码体验:

founderchip.png

西门子SCL编程入门教程连载(17)-自己编写沿检测代码

来源:本站|   大小:563KB|   下载次数:46次

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论