关于200smart 定时中断的几个测试
200smartPLC仍然保留着原200的4个定时中断,即需要通过设置的定时中断_0(由SMB34设置,时间单位mS)、定时中断_1(由SMB35设置,时间单位mS)及定时中断T32和T96。这4个定时中断除了定时时间范围不同,前者定时范围1~255mS,后者定时范围1~32.767S,显然后者定时中断的时间远比前者大。
前几天,看到有一个网友对定时中断应用的若干提问,问题链接:http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=234111&cid=1028
大致提问的含义是变更定时中断的周期,看中断链接子程序运行,及T32定时中断的调用。
我按那位网友的含义理解,大致编辑了几个验证程序。
验证1,采用定时中断_0与T32比较,大家均设置定时时间为1mS,图示:
让PLC启动运行一会儿,看2个定时中断的累加数值差异会越来越大。主要原因还是T32定时虽然已经脱离了异步刷新的工作机制,但是,plc扫描机制的影响还是存在的。在测试这个程序前,我有意加入了一个for/next指令,目的也是想扩大程序对扫描周期的影响,上面的测试程序,并没有应用到for/next程序的测试结果已经非常明显了。为验证我这个理论,我看了plc的扫描周期,图示:
当PLC扫描周期等于3mS时,T32丢失累加次数变得非常可能。
验证2,我将定时中断周期同时调整到10mS,再来看结果,图示:
运行测试结果,这2个定时中断累加数差异比定时中断1mS时的差异要小了一些。
如果再将定时中断的时间加长,这个差异将会更加缩小一些。
网友的另一个问题,即任意修改T32的定时中断时间,是否需要重新开定时中断。图示:
测试结果是不需要重新再开启定时中断T32的,任意时间片均可以修改T32的PT管脚数值,T32定时中断会刷新运行新值。
对于中断子程序的认识,加深一下区别。仍然按前面的思路,只是将中断子程序累加与OB1上累加做一下比较,图示:
小结:
定时中断_0与T32的时间差区别在于前者没有与周期直接关联,后者有。定义的中断连接,如累加计算必须在所连接的中断子程序上运算,在OB1后者其它非中断连接子程序上运算是会存在差异的,这个差异的主要原因还是扫描周期的刷新机制引起。选择的定时中断周期长,相对这个差异会变的小,但,不能够达到中断所需要的精度,希望这几个测试能够满足你对定时中断,尤其是中断子程序的认识程度。