菜鸟问:
我想在OB35里写一段定时器的程序,想请教下,如果设置OB35的时间是2MS,那么我在OB35里写一个2S的定时器,想请教2MS和2S是如何工作的,之间有什么关系,谢谢!
大虾:
不建议定时器放入中断中执行。必须保证定时器每个周期都要被扫描到。
高手:
OB35的周期是2ms,那么每格2ms就会调用一次OB35,定时器在其触发条件启动后开始计时,计时过程是不需要你的程序进行扫描的!你的每次扫描只是询问定时器当前计时的情况,到了什么状态而已。象你这种情况,你就当在OB1中一样的使用吧,因为一般情况下OB1的扫描周期会大于2ms,除非你的程序很小。
甲:
本例中OB35是每2ms执行一次呢还是每隔2ms执行一次呢?
菜鸟:
感谢二位的讲解,我觉得在OB35里写定时器的程序,确实感觉很别扭,就算定时器时间到,触发了条件,把要执行的时间放在OB1里也不知道执行到哪里去了,所以感觉中断里*好写的是要执行的时间,而不是条件。
大虾:
*好在OB1中使用定时的功能
乙:
在OB35里面对一个值进行累加,加到1000就执行需要2s做一次的动作,然后把累计值清零。
高手:
OB35的帮助中说:“必须确保每个周期性中断OB的运行时间远远小于其时间间隔。如果因时间间隔已到期,如果在预期的再次执行前未完全执行周期性中断OB,则启动时间错误OB (OB80)。稍后将执行导致错误的周期性中断。”
2ms的时间间隔太短,如果不能满足上述要求,可能会出错。
菜鸟:
我不知道自己说的对不对,我的理解是
OB35时间中断每2Ms执行一次,但是里面的2s定时器在**次触发时就开始计时(条件一直满足),不会受到OB35调用周期的影响,直到计时时间到达2s,触发时钟线圈。。。。
总之,我感觉定时器和时间中断的周期并无直接关系,只和计时器的条件有关。。。。
高手:
其实OB35那个扫描时间,实际上就是指OB35里的程序扫描周期,定时期间未到,那他就是每隔2ms查询一次,这个周期和定时时间没有必然联系。