配置定时结构的设置(Real-Time、Windows)
- 更新时间2025-08-27
- 阅读时长7分钟
通过定时结构的配置对话框进行高级设置,如执行期限、超时以及定时结构的次要定时源等。双击输入节点或右键单击输入节点,在快捷菜单中选择配置输入节点,打开配置定时循环、配置定时顺序或配置多帧定时循环对话框。
设置执行期限
执行期限是分配给一个子程序框图或帧完成其执行的一个时间量,与起始时间相对。使用执行期限可为子程序框图设置一个时限参考。如帧未能在执行期限前完成,下一帧的左侧数据节点将在延迟完成?输出端返回TRUE并继续执行。指定一个执行期限,其单位与帧定时源的单位一致。
在以下实例中,定时顺序结构第一帧的执行期限已配置为50。执行期限指定子程序框图须在1 kHz时钟走满50下(即50毫秒)前结束执行。但是,由于帧中有一个VI需要60毫秒等待,故帧中的代码耗时60毫秒完成。当帧无法在指定的最后期限前结束执行代码时,第二帧的延迟完成?输出端将返回TRUE。
设置超时
超时指帧开始执行前可等待的最长时间,以毫秒为单位。超时与循环起始时间或上一帧的结束时间相对。如子程序框图未能在指定的超时前开始执行,定时循环将在该帧的左侧数据节点的唤醒原因输出端中返回超时。
可使用若干种NI-DAQmx定时源,包括数字边沿计数器、任务源信号、控制定时结构、指定超时时间等。在下例中,当DAQmx创建定时源VI从外部设备接收到一个脉冲,定时顺序循环的第2帧开始执行。理想条件下,外部设备每50毫秒发送一个脉冲。脉冲的时间间隔不尽相同。第二帧的超时设为60毫秒,这意味着该帧开始后可等待60毫秒。如第二帧未能在60毫秒前开始执行,定时结构将继续执行余下的非定时循环,而第二帧则在左侧数据节点的唤醒原因输出端中返回超时。
如超时发生在定时结构中,结构会将当前循环的剩余部分执行完。定时结构将在余下各个帧的唤醒原因输出端返回超时。余下各帧的定时信息与发生超时的帧的定时信息相同。如定时循环必须再完成一次循环,则循环会停止于发生超时的帧,等待最初的超时事件。
定时结构第一帧的超时默认值为-1,即无限等待子程序框图或帧的开始。其他帧的超时默认值为0,即保持上一帧的超时值不变。
设置偏移
偏移是相对于定时结构开始时间的时间长度,这种结构等待第一个子程序框图或帧执行的开始。偏移的单位与结构定时源的单位一致。
在不同的定时结构中,可使用一个偏移并设置二者使用相同的定时源可将二者的相位对齐。以下程序框图中,定时循环都使用相同的1 kHz定时源且偏移(t0)值为500,这意味着循环将在定时源触发循环开始后等待500毫秒。
在定时循环的最后一帧中,可使用右侧数据节点动态改变下一次循环的偏移。然而,在动态改变下一次循环的偏移时,须将值连接至右侧数据节点的模式输入端以指定一个模式。
| 注:如通过右侧数据节点改变偏移,不可将无改变连接至模式输入端。必须选择一个模式值。 |
关于设置定时循环偏移的范例,请参考labview\examples\Structures\Timed Loop目录下的Timed Loop Offset VI。
指定一个处理器
默认状态下,LabVIEW自动指定可用的处理器以处理定时结构的执行。也可在多个处理器上手动加载平衡的定时结构以获得更大执行控制。
配置定时循环、配置多帧定时循环、配置定时顺序、配置下一帧定时或配置下一次循环对话框中,从处理器分配的模式下拉菜单中选择手动可手动配置一个用于处理定时结构的处理器。输入值必须为0到255之间的整数, 其中0表示系统的第一个可用的处理器,处理器栏用于指定一个处理器来执行操作。如输入的值在指定范围外,LabVIEW将其强制转换为一个0到 255之间的值。如输入的数量超过可用处理器的数量,将导致运行时错误且定时结构停止执行。
如在模式下拉菜单中选择自动,LabVIEW将自动为结构指定一个处理器,同时处理器的值自动设为-2。如在模式下拉菜单中为一页帧或此后的循环选择无改变,LabVIEW将使用处理之前帧或循环的同一个处理器,同时处理器的值自动设为-1。
在定时结构或定时结构帧的输入节点的处理器输入端连接一个特定的值也可对处理器进行设置。
关于手动指定处理器以优化定时结构性能的更多信息,见多CPU系统的RT应用程序优化。
设置次要定时源
次要定时源用于时钟源与定时结构本身不同的子程序框图或帧。通过配置定时循环、配置多帧定时循环或配置定时顺序对话框的帧定时源可选中一个次要定时源。
定时结构支持以下次要定时源:
- 使用循环定时源或使用顺序定时源 - 使用与定时结构相同的定时源来为帧定时。
- 使用以下内置定时源 - 使用独立的内置定时源为帧定时。
- 1 kHz时钟<结构开始时重置> - 与1 kHz时钟相似的定时源,每次定时结构循环后重置为0。
- 1 MHz时钟<结构开始时重置> - 与 MHz时钟相似的定时源,每次定时结构循环后重置为0。
定时结构的绝对时间和相对时间
指定的定时源控制了定时结构的执行。但不是所有定时结构的配置选项都参照定时源的绝对值。多帧定时循环和多帧定时序列中,有些配置选项是相对于之前帧或当前帧的定时。参照帧的起始或结束的选项使用的是相对时间,而参照定时源的选项则使用绝对时间。
定时结构中,偏移值使用绝对时间,预期开始、预期结束、实际开始和实际结束等输出在帧和循环定时中均以绝对时间的单位计算。每一帧的起始时间、执行期限和超时都使用相对时间。起始时间和超时均相对于前一帧执行的开始时间,而执行期限则相对于当前帧执行的开始时间。
在下列程序框图中,多帧定时循环使用1 kHz时钟、周期1000毫秒、偏移值100毫秒。偏移值使用绝对时间,故循环在定时源时钟走到100毫秒、1100毫秒、2100毫秒、3100毫秒...时开始循环,直到循环结束执行。
| 注:根据定时循环的模式,延迟的定时循环可使用绝对时间,也可使用相对时间。 |
| 1 | 偏移 | 绝对时间 - 相对于循环定时源 |
| 2 | 期限 | 相对时间 - 第2帧的开始时间 |
| 3 | 开始 | 相对时间 - 相对于第1帧的开始时间 |
| 4 | 超时 | 相对时间 - 相对于最后一帧的开始时间 |
定时循环的第二帧的起始时间为75毫秒。起始时间相对于前一帧执行的开始,故其他帧至少在首帧开始执行的75毫秒后再执行。由于第二帧至少在定时源时钟为100毫秒时首帧开始执行后75毫秒才开始执行,则根据绝对时间,第二帧在第一次循环的起始时间为175毫秒。
帧的超时输入为2000毫秒。超时是前一帧开始执行后下一帧开始执行前的最大等待时间。如第二帧在首帧开始执行的2000毫秒内不开始执行,LabVIEW将在没有任何定时的条件下执行剩下的循环并在左侧数据节点的唤醒原因输出端中返回超时。如第二帧在2000毫秒的超时过后仍未执行,则150毫秒成为帧的执行期限。从第二帧开始执行的那一刻起,可能帧尚未在延迟完成显示控件中输出TRUE值时150毫秒便用完。