S7-200SMART T32定时器的刷新机制
写这个贴的目的是用实际的plc程序来佐证,1mS时基定时器刷新的工作机制。无论是从手册或者其它资料中查阅,关于西门子S7-200SMART的定时器的刷新,都会说到同步和异步这个说法。所谓同步就是定时器延时的时间当当前值等于预设值时,触发相应的中断子程序。而相当于定时器的异步,就理解为当当前值等于预设值时,定时器的触点并不是立即被刷新,而是需要等待到定时器的线圈状态值被扫描采集到才在那个周期被刷新。因此,1mS时基的定时器是每1mS被刷新的,与程序的扫描周期无关。
S7-200SMART,1mS时基接通延时的定时器共计有2个,它们分别是T32和T96,这里用于佐证的接通延时定时器为T32。
程序:
定义3种方式的定时器工作状态,它们分别是循环定时中断、T32接通延时定时器在关联的连接中断中、在OB1中这3个应用环境。
1) 首先,复位3个定时器工作环境下的刷新中断次数的存储区;图示1:

2) 定义循环定时中断10和T32关联的中断21,开中断;图示2:

3) 分别在关联的中断子程序和OB1中累加刷新次数:;图示3:

4) 将程序下载到plc,状态图表看运行结果;图示4:

为观看方便,特意在T32定时器线圈前加M0.1触点控制T32定时器的工作。
从运行结果看,在INT_1运行结果与在OB1中运行的结果,明显看到了差异。
由此说明,在OB1累加的T32刷新次数是经过扫描周期被刷新的次数,而在INT_1是T32定时器当前值等于预设值时触发的中断刷新的次数,二者有明显的区别,如果我加长plc的扫描周期,此差异会明显减小,plc的扫描周期,图示5:

从监控plc的周期也能够理解,如果当plc周期大于1mS时,T32的累加次数会被丢失的可能。
5) 在合适的网络段,增加一段for/next指令,用于增加plc的扫描周期,图示6:

插入for/next循环指令,让指令循环10000次,再看plc的周期,此时,已经有原来的1~5mS延长为28~58mS,图示7:

PlC周期最小28mS,足够可以让T32定时器获得被刷新的机会。
6) 此时,断开M0.1,再看T32定时器在2个工况下的运行结果,图示8:

T32定时器从2种工况下的运行,及增加了for/next指令,改变plc运行周期说明1mS定时器的同步刷新的工作机制,来佐证同步定时器刷新是一种可行的方法。这里添加的循环定时中断,无非是为了说明与T32在同步刷新条件下,次数刷新的比较。