上一篇文章我们谈到了SCL的沿检测指令——R_TRIG和F_TRIG。细心的小伙伴在阅读文章后提出一个问题:如果每一个沿检测指令都要使用一个数据块(DB),那多次使用的情况下程序中岂不是会有很多的数据块?这篇文章,我们再来谈谈这个话题。

的确,如果在FC(功能)中使用沿检测指令,我们必须为其创建相应的数据块。这是因为FC没有属于自己的背景数据块,不能保存静态变量。
如果在程序中需要多次使用沿检测指令,建议使用FB(功能块)而非FC(功能)。由于FB有自己的背景数据块,这样,我们可以把沿检测指令需要保存的静态数据存放到FB的背景数据块中,并且可以采用多重背景数据块的方式来减少程序中需要添加的数据块(DB)的数量。
举个例子:
假设我们有三台电机需要进行起停控制。
启动按钮的PLC地址分别是:
I0.0(标签名:E_Start_Motor1);
I0.1(标签名:E_Start_Motor2);
I0.2(标签名:E_Start_Motor3);
添加FB到主程序中,命名为:FB_SCL_Test.
向FB中添加上升沿触发指令:R_TRIG ,在出现添加背景数据块对话框中选择“多重背景数据”,并命名为:R_TRIG_Motor1,如下图