![4a40f092e9670cd844e1bbe15b68c27f.png](https://i-blog.csdnimg.cn/blog_migrate/82fdbaa906c344f07f92fb5d2a2c603d.png)
前面的文章《西门子SCL编程入门教程连载(5)-沿信息检测指令》,有小伙伴留言问:
SCL里使用沿检测必须使用DB块码?和梯形图不能一样么?
今天这篇文章,我来回答这个问题。
第一种情况:
如果使用SCL语言指令列表中的R_TRIG或者F_TRIG指令,在添加这些指令的时候系统会自动添加背景数据块或者多重背景数据块,所以这种情况下必须使用数据块的;
第二种情况:
沿信号检测指令的关键之处在于要记住之前的信号状态,然后将当前的信号状态与之前的进行比较,从而来判断是否是上升沿或者下降沿。
基于这一原理,我们可以自己编写沿信号检测代码:
首先,创建功能块FB_EdgeDetect,声明变量如下:
- request:用于检测的输入信号;
- edgeUp:上升沿输出信号;
- edgeDown:下降沿输出信号;
- requestMemory:输入信号的记忆值(上一个扫描周期的状态值),注意是静态变量;