菜鸟:
用315-2DP的CPU做的一个项目,程序中用SCL做了4个FB块,这4个FB块在不同的FC程序中调用了很多次。问题是这样的: 我的FB块需要用几个S_ODT的定时器,这个CPU只有256个定时器编号可用,由于我的这些FC程序在OB1里面不会同时导通,即这些FC不会同时工作,所以开始的时候我是在不同的FC里面使用了重复的定时器编号,但定时器不会工作,只能使用不同的编号定时器才会工作。问题是我调用了很多次FB块,每个FB块都要占用几个定时器,256个就不够用,又不想自己做定时器,所以想知道为什么在不同的FC块中使用同一个定时器就会导致定时器不工作呢,这些FC块不会同时运行的。有没有什么好的办法,除了自己做定时器以外。谢谢
游民:
可以使用IEC定时器,如SFB4等,FB里使用多重背景调用,即在FB的静态变量里定义类型为SFB4的变量,然后在程序里调用这些变量即可。
侠士:
我也遇到过同样问题,改进后可以在不同子程序调用同一定时器。
需要在子程序末尾给定时器复位,当然这不够,定时器需要一个上升沿信号才会开始计时,所以你要自己产生一个上升沿信号配合定时器使用。
菜鸟:
谢谢两位提供的方法,等项目调试完我分别学习一下这两个方法。
侠士:
实践证明,绝B可以一个定时器多处调用。
当然容易出错,不推荐罢了。
游民:
可以使用IEC定时器, 在FB的静态区指定SFB4,就可以减少PLC定时器的使用。