关于200 SMART BGN_ITIME和CAL_ITIME指令的应用
今天在“找答案”栏目看到有这样一个贴子,其中心思想是测试用户程序的扫描周期(虽然软件中“PLC”下的“PLC”信息中有“扫描速率”的显示功能),但是,用户为了测试BGN_ITIME和CAL_ITIME指令,用特殊标志位SM0.1也是一种思路。提问链接:http://www.ad.siemens.com.cn/service/answer/tobe_solution.aspx?Q_ID=215577&cid=1028
打开软件,在“项目树”下的“定时器”可以找到这2个间隔定时器指令,按F1帮助能够说明这2个指令的应用。
软件中测试plc扫描周期(扫描速率窗口):
按网友的测试思路编辑了一个简单的程序,图示:
初始化数据区后,直接调用BGN_ITIME和CAL_ITIME指令,测试结果间隔定时器并没有按想象的那样能够记录一个扫描周期的运行时间。我将在这2个指令中间插入一些延时程序(循环指令),图示:
这次测试的结果基本与PLC信息窗口的扫描速率周期接近,能够测试出间隔时间周期了。
那么,图2的程序为什么无法记录一个周期内PLC的扫描周期?原因其实很显然,因为2个程序段之间间隔时间过短,无法进行有效的记录时间间隔。
我在整个测试期间,特意下载数次,以消除可能的概率问题,图2的程序,只有一次有1mS的记录在VD4中,这个记录应该属于一种“假象”(记录应该是最大的扫描周期时),因为BGN_ITIME和CAL_ITIME指令最小精度为1mS,无法获取实数类型的时间值。
由此说明,用特殊标志位SM0.1测试状态变化(上电唯一的一次ON位),是可以测试PLC扫描周期是一个方向问题,而不是概率问题,这个测试周期也仅仅只是上电的第一次扫描周期,适当“拉开”这2个间隔定时器的采集时间是可以测试出这个时间的。也由此说明在调用这2个间隔定时器时,需要考虑到用真实、有效的程序段间隔作为检测程序段之间的扫描周期,过于接近的程序段,恐难真实反映间隔时间,除非,调用间隔定时器的条件转换足以有若干的扫描周期的可能。