从使用数量和时基的角度对比:
1、从可使用的个数来讲——使用SFB4没有数量的限制(仅受限于CPU内存大小限制);而使用系统提供的TIMER时支持的个数是有限制的(不同类型CPU,支持的TIMER个数也不一样)。
2、从定时时基来讲,TIMER的时基是固定的;而使用SFB4(或其他IEC_T)的没有时基之说,基本原理是用读取CPU的运行时间作差处理来进行定时的,比如调用SFB4,定时时间10S,当条件满足时SFB4中将记录此时CPU运行时间t1,然后没调用执行一次SFB4将查看当前CPU的运行时间t2,当t2-t1>=10s时,定时器的输出将置位。
总结:使用Timer时,既可以在OB1中使用,也可以其它子程序或中断程序中使用,定时是准确的;而SFB4(或IEC_T)推荐在OB1中使用,并且应该每个扫描周期都要能够执行SFB4,若要在周期中断中使用,一定注意此时的定时时间应该为该中断周期的整数倍,否则定时时间误差会比较大。
此处提供一个使用SFB4出现定时误差为1s的程序代码(见附件),供大家测试。也希望大家和网友“jianghehupo”一样将你的测试结果与大家分享——学习经验的同时也传递一份知识!
点击此处查看附件