发布于 2011-06-03 17:04:52
21楼
思考、研究一段时间后!根据Automann老兄的思路,测试的工具已经具备。其实,我们可以通过站在OB1这个平台,用一种简单的方式来测试“#OB1_PREV_CYCLE”当中是否包含执行其它OB执行的时间!测试程序中都是无条件指令,没有跳转和循环,测试程序如下!
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬OB1内测试程序╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
L #OB1_PREV_CYCLE
T MD 100 //PLC上一个OB1执行的时间(ms)
L MD 100
L MD 104
+D
T MD 104 //PLC启动后OB1执行时间累计(ms)
L MD 108
L 1
+I
T MD 108 //OB1执行次数累计
//先试验:只下载OB1和OB100,启动PLC,这样让OB1执行接近5万次时,我们就停止PLC
//记录下OB1执行累计时间和次数;然后用累计时间除以总次数;就得到执行一次OB1的
//平均时间。可以测试、记录5次数据!
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬OB35内的程序,中断时间可以设置20ms╬╬╬╬╬╬╬╬╬╬╬╬
L LW 15 //凑执行时间的操作,此操作并无意义,主要考虑与OB1执行指令性质一致,来保证OB35与
T MD 50 //OB1执行一个周期时间相等,曹冲称象的办法,这样就可以知道OB35一个周期的执行时间
L MD 54
L MD 58 //凑执行时间的操作,此操作并无意义,主要考虑与OB1执行指令性质一致,来保证OB35与
+D
T MD 58 //OB1执行一个周期时间相等,曹冲称象的办法,这样就可以知道OB35一个周期的执行时间
L MD 112
L 1
+I
T MD 112 //OB35执行次数累计
//等OB1+OB100测试结束;然后将OB35下载到PLC,OB35中断循环时间设置20ms,(OB35
//内的程序执行时间小于12ms,在OB1中已测试)。
//下载OB35到PLC后,启动PLC,这样让OB1执行接近5万次时,我们就停止PLC
//记录下OB1执行累计时间和次数;然后用累计时间除以总次数;就得到执行一次OB1的
//平均时间。可以测试5组数据!这时是带OB35执行的数据。
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬OB100内测试程序╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
L 0
T MD 104 //OB1执行累计时间清零
L 0
T MD 108 //OB1执行次数清零
L 0
T MD 112 //OB35执行次数清零
//初始化程序:在PLC起动时,将OB1运行累计时间清零;将OB1执行次数清零;将OB35执
//行次数清零。
//╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
呵呵......有兴趣的朋友可以测试一下,测试完成对比两种情况,分析OB1一个周期执行的平均时间,这样你就会发现、思考一些有意思的事情!
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”