提到初始化操作,想必大家都不陌生,基本上都能信手拈来,如使用FirstScan,OB100等,现在说一说,在FB内部进行一次性初始化操作的实现。
所谓一次性初始化,也就是说在调用FB时,初始化操作有且仅有一次,直到CPU下一次再由STOP——>RUN。
弄了个简单的例子来作为演示DEMO,在下面的FB_OneShotInitialise中,对两个输出参数unit_1和unit_2进行初始化赋值操作,将它们的值分别给定为1和2,然后在后面,继续执行其它逻辑。
实现细节,是通过借助一个布尔类型的静态变量statOneShotInitialise,在接口定义时将其默认值设置为TRUE,在FB中对需要进行初始化的变量初始化完毕后,令statOneShotInitialise := FALSE;这样,我们在FB内部就有了一个One-Shot。





在resetCmd为FALSE,PLC由STOP——>RUN时,FB的IDB中的值显示出完成了对输出参数的初始化操作。

这样在FB内部即可以完成一次性的初始化操作,既不像OB100那样针对的是全局性的初始化操作,也不像使用FirstScan那样需要额外关注FB的调用执行时机问题,免得FirstScan不起作用。
雕虫小技,让方家见笑了。