LabVIEW使用名为纳秒级引擎的软件组件在程序中记录时间。该纳秒级引擎在后台运行,并与操作系统交互管理时间。LabVIEW中的多个函数和结构(如等待函数和定时循环结构)使用此引擎记录时间。纳秒级引擎可使用本地实时时钟(RTC),或可由通过NI定时同步框架(NI-Time Sync)集成的外部参考时钟驱动(图1)。
图1:LabVIEW纳秒级定时机制和NI-TimeSync协同为应用程序提供时钟。
LabVIEW 2010引入了可用于NI-TimeSync的全新时钟。随附于NI-Time Sync1.1的IEEE标准1588插件提供了分辨率为1 ms的同步时钟参考。您可以将网络上的多个设备配置为使用同一个IEEE 1588参考时钟,让多个平台可以在标准的以太网网络上进行同步。您还可以通过NI测量和自动化资源浏览器(MAX)工具,将设备配置为使用软件1588精确时间协议(图2)。
图2:在MAX中配置设备的时间同步源
定时循环是一种在已配置的定时源产生事件时执行的循环结构。它具有多种定时源(本教程稍后将对此进行介绍)。如果要开发的应用程序需要多速率处理、精确定时和同步、循环执行反馈、动态变化定时特性或多种执行优先级时,可以使用定时循环。除了定时循环的严密定时特性之外,该结构还可用于为多核编程分配处理器亲和。使用定时循环,您可指定各种定时属性,包括周期、优先级、期限、偏移量和超时。通过将这些属性和大量定时源相结合,您可以创建复杂的应用程序,而无需考虑所需的定时约束(图3)。
图3:LabVIEW定时循环结构,通过定时约束执行代码 |
定时源控制定时结构的执行。您可以从三类定时源中选择:内部定时源、软件触发定时源或外部定时源(图4)。
图4:定时循环结构的定时源:内置内部定时源、软件触发定时源和外部定时源
内部定时源使用纳秒级引擎来记录时间。您可将定时循环配置为在受支持的实时(RT)目标上使用1 kHz时钟或1 MHz时钟。使用1 kHz时钟,您可以调度毫秒级分辨率的定时结构。可运行定时结构的所有LabVIEW平台均支持1 kHz定时源。支持1 MHz定时源的目标可以调度微秒级分辨率的定时结构。您还可将定时循环结构配置为使用这些内置定时源作为绝对时间参考,以使用时间标识开始执行循环结构。例如,可以将定时循环配置为在每天的确定时间开始运行。
另一个内部定时源是同步至扫描引擎。这会将定时结构与NI扫描引擎同步。通过该定时源,将在每次扫描结束时执行定时结构。两次迭代之间的间隔对应于您在NI Scan Engine page(NI扫描引擎)页面上配置的Scan Period (µS)(扫描周期(µS))设置。
您可以创建软件触发定时源,以触发基于软件定义事件的定时结构。创建定时源VI能够创建软件触发定时源。发射软件触发定时源VI则能以编程方式触发一个由软件触发定时源控制的定时循环。也可使用软件触发定时源作为与RT兼容的事件处理器,或者在生产者-消费者应用程序中生成可用新数据时通知消费者定时循环。
您可以使用NI-DAQmx 7.2或更高版本创建用于控制定时结构的外部定时源。DAQmx创建定时源VI能以编程方式选择外部定时源。另有几种类型NI-DAQmx定时源可用于控制定时结构,如频率、数字边沿计数器、数字改动检测和任务源信号等。DAQmx数据采集VI能够创建以下用于控制定时结构的NI-DAQmx定时源。
频率-创建以恒定频率执行定时结构的定时源。
数字边沿计数器-创建在数字信号上升或下降边沿上执行定时结构的定时源。
数字改动检测-创建在一个或多个数字线路上升或下降边沿上执行定时结构的定时源。
任务源信号-创建以特定信号确定定时结构执行时间的定时源。
借助语言固有的定时结构、纳秒级定时引擎和定时循环结构,LabVIEW可为系统提供必不可少的定时和同步功能。