定时循环
- 更新时间2025-07-30
- 阅读时长13分钟
根据指定的循环周期顺序执行一个或多个子程序框图或帧。在以下情况中可以使用定时循环结构,如开发支持多种定时功能的VI、精确定时、循环执行时返回值、动态改变定时功能或者多种执行优先级。右键单击结构边框可添加、删除、插入或合并帧。

定时循环的组成部分
计数接线端(i)可提供当前的循环总数,首次循环的该值为零。如循环计数超过2,147,483,647(也就是231-1),在后续循环中,计数接线端的值保持为2,147,483,647。如需保存大于2,147,483,647的循环次数,可使用表示更大范围整数的移位寄存器。
定时循环的每一帧都包含(1)输入节点,(4)输出节点,(2)左侧数据节点,(3)右侧数据节点。如下图所示。默认状态下,定时循环不显示所有可用的输入端和输出端。如需显示所有可用接线端,应调整节点大小,或右键单击节点并通过快捷菜单显示节点接线端。右键单击定时循环的边框,在快捷菜单中选择显示左侧数据节点或显示右侧数据节点,可显示各节点。
双击输入节点或右键单击循环结构,选择配置定时循环以打开配置定时顺序对话框对定时循环进行配置。在配置定时循环对话框中输入的值显示在输入节点旁的输入接线端中。
下表为定时循环的接线端。定时循环包含多个节点,其值相对于定时源的开始。如不要求同步,定时源的开始时间为使用该定时源的第一个循环的开始时间。如同步组包含多个循环,定时源的开始时间为最后一个循环准备好执行的时间。
(1)输入节点
![]() | 期限 | 指定定时循环必须完成一次循环的时间。期限的值为相对于定时源开始时间的时间值,单位由定时源单位决定。指定值-1表示无期限。如果您不为该输入指定值,则结构将使用周期值作为期限值。 |
![]() | 错误 | 在结构中传递错误。错误接收到错误状态时,定时循环不执行。 |
![]() | 模式 | 指定定时循环处理执行延迟的方式。共有五种模式-No change, Process missed periods maintaining original phase, Process missed periods ignoring original phase, Discard missed periods maintaining original phase,以及Discard missed periods ignoring original phase。 |
![]() | 结构名称 | 指定定时循环的名称。 |
![]() | 偏移量 | 指定定时循环开始执行前的等待时间。偏移量的值相对于定时源的开始时间,单位由定时源单位决定。 |
![]() | 周期 | 依据定时源的周期,单位与源名称指定的定时源一致。 注: 请勿设置定时循环的周期为0。NI不支持定时周期为0的应用,因为零周期可能导致未定义的应用动作。如需循环以最快速度运行,且具有定时循环的优先执行功能,可通过在定时顺序结构内部使用While循环实现。 |
![]() | 优先级 | 指定定时循环的执行优先级。定时结构的优先级用于指定定时结构相对于程序框图上其他对象的执行开始时间。定时结构的优先级越高,则相对于其它定时结构的执行顺序便越靠前。优先级的输入值必须为1至65535之间的正整数。 |
![]() | 处理器 | 指定用于执行任务的处理器。默认值为-2,即LabVIEW自动分配处理器。如需手动分配处理器,可输入介于0和255之间的任意值,0代表第一个处理器。输入的数量超过可用处理器的数量时,将导致一个运行时错误且定时结构不执行。 |
![]() | 源名称 | 指定用于控制结构的定时源的名称。定时源必须通过创建定时源VI在程序框图上创建,或在配置定时循环对话框中选择。 |
![]() | 超时 | 指定定时循环开始执行前的最长等待时间。默认值-1表示未给下一帧指定超时时间。超时的值相对于定时源的开始时间或上一次循环的结束时间,单位由帧定时源指定。 |
(2)左侧数据节点
| 实际结束[f-1](单帧定时循环除外) | 返回上一帧(f-1)的实际结束时间。实际结束值是相对于定时源开始时间的时间值,单位与定时源相同。 |
| 实际结束[i-1](仅限第一帧) | 返回上一次循环(i-1)的实际结束时间。实际结束值是相对于定时源开始时间的时间值,单位与定时源相同。 |
| 实际开始[f](单帧定时循环除外) | 返回当前帧(f)的实际开始时间。实际开始值是相对于定时源开始时间的时间值,单位与帧定时源相同。 |
| 实际开始[i](仅限第一帧) | 返回当前循环(i)的实际开始时间。实际开始值是相对于定时源开始时间的时间值,单位与定时源相同。 |
| 期限 | 返回当前帧的期限。 |
| 错误 | 在结构中传递错误。 |
| 预期结束[f-1](单帧定时循环除外) | 返回上一帧(f-1)的预期结束时间。预期结束值是相对于定时源开始时间的时间值,单位与定时源相同。预期结束(f-1)与下个循环的开始时间相同。 |
| 预期结束[i-1](仅限第一帧) | 返回上一次循环(i-1)的预期结束时间。预期结束值是相对于定时源开始时间的时间值,单位与定时源相同。 |
| 预期开始[f] | 返回当前帧(f)的预期开始时间。预期开始值是相对于定时源开始时间的时间值,单位与帧定时源相同。 |
| 预期开始[i](仅限第一帧) | 返回当前循环(i)的预期开始时间。预期开始值是相对于定时源开始时间的时间值,单位与定时源相同。 |
| 延迟完成?[f-1] | 如定时循环中的上一帧未在指定期限之前完成,该接线端返回TRUE。 |
| 延迟完成?[i-1](仅限第一帧) | 如定时循环中的上一次循环未在指定期限之前完成,该接线端返回TRUE。 |
| 帧持续时间(单帧定时循环除外) | 返回上一帧的持续时间。帧持续时间是相对于帧开始时间的时间值,单位与帧定时源相同。 |
| 全局结束时间 | 返回上一次循环或帧的结束时间,以纳秒为单位。如果定时循环使用绝对定时源,全局结束时间返回时间标识。否则全局结束时间返回64位整数。如果定时循环在RT终端上运行,全局结束时间基于终端的系统时间,并且可以与外部时钟同步。如果定时循环在Windows上运行,全局结束时间基于Windows系统时间。 |
| 全局开始时间 | 返回上当前循环或帧的开始时间,以纳秒为单位。如果定时循环使用绝对定时源,全局开始时间返回时间标识。否则全局开始时间返回64位整数。如果定时循环在RT终端上运行,全局开始时间基于终端的系统时间,并且可以与外部时钟同步。如果定时循环在Windows上运行,全局开始时间基于Windows系统时间。 |
| 循环持续时间(仅限第一帧) | 返回执行上一次循环所需时间的时间标识。循环持续时间的值相对于循环的开始时间,单位由定时源指定。 |
| 模式(仅限第一帧) | 返回当前循环的模式。 |
| 偏移量(仅限第一帧) | 返回当前循环开始的偏移量。 |
| 周期(仅限第一帧) | 返回当前帧的周期。 |
| 优先级 | 返回当前帧的优先级。 |
| 处理器 | 返回用于执行的处理器(只适用于单个处理器)。否则,返回-2,即LabVIEW自动分配处理器。 |
| 开始(第一帧除外) | 返回当前帧的开始。 |
| 超时 | 返回当前帧的超时。 |
| 唤醒原因 | 返回枚举类型值,其中包含当前循环开始执行的原因。可能值:0表示正常,1表示中止,2表示非同步唤醒,3表示定时源错误,4表示定时循环错误,5表示超时。 |
(3)右侧数据节点
![]() | 期限 | 指定定时循环必须完成下一帧的时间。期限的值相对于下一帧的开始时间,单位由定时源指定。默认值为-1,表示无改变。 |
![]() | 错误 | 通过定时循环的子程序框图中传递错误或警告信息。如错误接收到错误状态,定时循环可执行下一个未定时帧。如错误在最后一帧接收到错误状态,结构可结束当前循环,退出定时循环,并在输出节点返回错误状态。 |
![]() | 模式(仅限最后一帧) | 指定定时循环下一次循环的模式。共有五种模式-No change, Process missed periods maintaining original phase, Process missed periods ignoring original phase, Discard missed periods maintaining original phase,以及Discard missed periods ignoring original phase。 |
![]() | 偏移量(仅限最后一帧) | 指定下一次循环开始执行前的等待时间。偏移量的值相对于下一次循环的开始时间,单位由定时源指定。默认值为-1,表示无改变。如设置下一次循环的偏移量,则必须设置新的模式值。 |
![]() | 周期(仅限最后一帧) | 指定定时循环下一次循环的周期,单位由定时源指定。默认值为-1,表示无改变。 注: 请勿设置定时循环的周期为0。NI不支持定时周期为0的应用,因为零周期可能导致未定义的应用动作。如需循环以最快速度运行,且具有定时循环的优先执行功能,可通过在定时顺序结构内部使用While循环实现。 |
![]() | 优先级 | 指定定时循环下一次循环的优先级。定时结构的优先级用于指定下一次循环相对于程序框图上其他对象的执行开始时间。定时结构的优先级越高,则相对于其它定时结构的执行顺序便越靠前。优先级的输入值必须为1至65535之间的正整数。 |
![]() | 处理器 | 指定用于执行任务的处理器。默认值为-1,即LabVIEW分配的处理器与输入节点中指定的一致。输入-2可使LabVIEW分配处理器。如需手动分配处理器,可输入介于0至255之间的任意值,0代表当前的处理器。输入的数量超过可用处理器的数量时,将导致一个运行时错误且定时结构不执行。 |
![]() | 开始(最后一帧除外) | 指定下一帧开始执行前的等待时间。开始的值相对于当前帧的开始时间,单位由定时源指定。 |
![]() | 超时 | 指定下一次循环开始执行前的最长等待时间。默认值-1表示未给下一次循环指定超时时间。超时的值相对于上一次循环的结束时间,单位由帧定时源指定。 |
(4)输入节点
| 实际结束[f-1](单帧定时循环除外) | 返回上一帧(f-1)的实际结束时间。实际结束值是相对于定时源开始时间的时间值,单位与定时源相同。 |
| 实际结束[i-1] | 返回上一次循环(i-1)的实际结束时间。实际结束值是相对于定时源开始时间的时间值,单位与定时源相同。 |
| 错误 | 接收并传递定时循环的错误,通过子程序框图返回错误。 |
| 预期结束[f-1](单帧定时循环除外) | 返回上一帧(f-1)的预期结束时间。如帧定时源在循环开始时未重置,预期的结束值是相对于定时源的值。预期的结束值单位与定时源的单位一致。预期结束(f-1)与下个循环的开始时间相同。 |
| 预期结束[i-1] | 返回上一次循环(i-1)的预期结束时间。如帧定时源在循环开始时未重置,预期的结束值是相对于定时源的值。预期的结束值单位与定时源的单位一致。 |
| 延迟完成?[f-1](单帧定时循环除外) | 如定时循环中的上一帧未在指定期限之前完成,该接线端返回TRUE。 |
| 延迟完成?[i-1] | 如定时循环中的上一次循环未在指定期限之前完成,该接线端返回TRUE。 |
| 帧持续时间(单帧定时循环除外) | 返回上一帧的持续时间。帧持续时间是相对于帧开始时间的时间值,单位与帧定时源相同。 |
| 全局结束时间 | 返回上一次循环或帧的结束时间,以纳秒为单位。如果定时循环使用绝对定时源,全局结束时间返回时间标识。否则全局结束时间返回64位整数。如果定时循环在RT终端上运行,全局结束时间基于终端的系统时间,并且可以与外部时钟同步。如果定时循环在Windows上运行,全局结束时间基于Windows系统时间。 |
| 循环持续时间 | 返回执行上一次循环所需时间的时间标识。循环持续时间是相对于循环开始时间的时间值,单位与定时源相同。 |
| 处理器 | 返回用于执行的处理器(只适用于单个处理器)。否则,返回-2,即LabVIEW自动分配处理器。 |
关于使用和配置定时循环的详细信息,见配置定时循环。
右键单击定时循环,在快捷菜单中选择替换为While循环,可使定时循环替换为While循环。右键单击定时循环,在快捷菜单中选择替换为定时顺序,可使定时循环替换为定时顺序结构。
与While循环不同,定时循环无需连线停止接线端。如未连线任何条件连接至停止接线端,循环可连续运行。
关于使用和配置用于FPGA VI的定时循环的更多信息,见定时循环(FPGA模块)。
范例
请参考LabVIEW附带的下列范例文件。
- labview\examples\Structures\Timed Loop\Timed Loop Offset.vi
- labview\examples\Structures\Timed Loop\Timed Loop Resettable Source Type.vi










