在 S7-1200/S7-1500 中,如何测量一个完整程序、子程序或特定组织块的运行时间?
在STEP 7(TIA Portal)中,可以使用“RUNTIME”指令来测量完整程序、单个块或命令序列的运行时间。使用“RT_INFO”指令,可以读取特定组织块、通信或用户程序运行时的统计信息。
描述
“RUNTIME”指令在“基本指令>程序控制指令”菜单下,“RT_INFO”指令在“扩展指令>诊断”菜单下。下面的示例展示了计算程序运行时间。
示例1:
用“RUNTIME”R指令测量S7-1200/S7-1500程序的运行时间
程序
使用 'RUNTIME' 指令可以测量整个程序、单个块或命令序列的运行时间。
如果想测量单个块或命令序列的程序运行时间。如果可能,请将您的程序代码移动到具有更高优先级的OB中,这样它就不会被通信和其它OB中断或延迟。
图1展示了如何测量OB30中一个被调用的程序块的运行时间,优先级为24.
'RUNTIME'指令的第一次调用用来设置测量时间的起点,并将其保存在DB变量 'Memory'中来为第二次调用做参考。
然后调用 'TestBlock' 程序块。
当程序块被执行后,'RUNTIME' 指令第二次调用,第二次调用来计算 'TestBlock'程序块的运行时间并将结果(秒)写入DB变量 'runtimeResult'中。
图. 1
总结
要记录运行时间,需要使用'DB'.runtimeResult创建一个跟踪轨迹(TRACE),采样选择OB30.
图. 2展示了变量的记录图表.在这个例子中TestBlock'程序块的运行时间在 20.5 到 23 µs之间.
注意
对于测量程序运行时间,需要禁用程序状态,因为它会使测量结果失真。
为了能够在状态中显示当前值,CPU重新编译需要显示的程序段。
根据编辑器中显示的内容,将增加子程序的运行时间。
图. 2
示例 2:
使用1500的“RT_INFO”指令进行时间测量
程序
使用“RT_INFO”指令可以生成特定组织块、通信或用户程序运行时的统计信息。通过 'MODE'参数,你可以定义在“INFO”中读出那种类型的运行时间 。在下面的例子(图3)中,OB1中调用'RT_INFO'指令来输出不同模式的运行时间。在数据块中,使用变量 'obNr' 定义要测量的OB块,使用 'mode'变量可以选择要测量的模式 。
可以测量下面几种运行时间:
MODE = 1 特定OB的运行时间
MODE = 2 特定OB的最大运行时间
MODE = 3 特定OB的最小运行时间
MODE = 23 最长循环时间(与OB 无关)
MODE = 24 最短循环时间(与OB 无关)
MODE = 25 当前/上一个循环时间,上一个循环的持续时间(与OB 无关)
图. 3
总结
要记录运行时间,需要使用'DB'.runtimeResult创建一个跟踪轨迹(TRACE),采样选择OB30.
图. 4展示了变量的记录图表.在这个例子中TestBlock'程序块的运行时间在 31 到 33 µs之间.
注意
对于测量程序运行时间,需要禁用程序状态,因为它会使测量结果失真。
为了能够在状态中显示当前值,CPU重新编译需要显示的程序段。
根据编辑器中显示的内容,将增加子程序的运行时间。
图. 4
建议
运行时间的长短取决于所用的CPU.如果您需要较短的运行时间,我们建议您使用高性能的CPU。
下表概述了各CPU位和字操作的处理时间