恭喜,你发布的帖子
发布于 2019-04-19 10:47:47
4楼
后续测试
1) 按1楼网友的程序测试:
这个程序能够反映出M0.0在plc扫描机制下的通、断过程,并通过间隔定时器捕捉。
2) 按提问网友的程序测试:
因为这个程序是采用特殊标志位SM0.1作为启动间隔定时器的条件,且只有一个周期有效。我在测试时,无法看到间隔定时器VD0的数据,为验证可能存在的概率问题,我又下载了几次测试,结果仍然是一样的VD0均没有数据。
按那位网友的回复,这个间隔定时器的指令他非常熟悉,也很了解。但是我在按他的要求做测试时始终无法进行正确计时,因为仅仅是在网上的交流,可能无法真实反映出具体的测试程序及测试过程。
既然是仅仅的一次,我又结合1楼网友的思想,做了一个程序测试:
这次可以看到BGN_ITIME指令的out管脚有了数据,这个数据实际上是BGN_ITIME指令运行(接通次数)的累积时间值,通过这个程序可以反映出提问网友VD0数据可能出现的一些问题。
本着将弄清问题的想法,我思索着做这么一些程序段来验证这个间隔定时器的工作机制。
1) 定义一个定时中断,中断时间为1mS。结果存放到VW102(VB102)
2) 按在线帮助文档写一个间隔定时器应用程序。结果存放到VD4(VB6)
3) 按网友的思路单独调用BGN_ITIME指令,来测试这些定时器的差值。结果存放到VD8(VB10)
程序:
VB102 = 5S;VB6 = 5S;VB10 = 14S。
在测试程序的开始,将所使用到的数据初始化后,再调用的,每一次测试的数据均自0数据开始。但是,测试的结果均是单独的BGN_ITIME指令误差与其它2个指令的时间数据均要大,其根本原因当然是程序的扫描周期有关了。
几次的测试结果,图示:
VB102 = 23S;VB6 = 23S;VB10 = 196S。
测试结果,按在线帮助应用的指令间隔时间比较接近于中断定时器的时间,说明能够比较客观反应其真实的时间记录,而单独应用BGN_ITIME指令的时间已经无法确保它应有的精准性了。
请填写推广理由:
分享
只看
楼主