概覽
定時對于所有測試、控制和設(shè)計(jì)應(yīng)用而言是至關(guān)重要的,,在系統(tǒng)中必須作為重點(diǎn)進(jìn)行考慮,。當(dāng)需要完成協(xié)同動作時,定時和同步技術(shù)將事件以時間進(jìn)行關(guān)聯(lián),。要讓軟件完成這些協(xié)同動作,,程序必須以時間為基準(zhǔn)來實(shí)現(xiàn)同步。NI LabVIEW中包含了定時結(jié)構(gòu),,您可以在系統(tǒng)中用它來同步您的程序,。
LabVIEW定時原理——納秒級引擎和NI-TimeSync
LabVIEW使用稱為納秒級引擎的軟件組件在程序中記錄時間,。引擎在后臺運(yùn)行,與操作系統(tǒng)交互管理時間,。在LabVIEW中有多個函數(shù)和結(jié)構(gòu),,使用此引擎記錄時間,如等待函數(shù)和定時循環(huán)結(jié)構(gòu),。納秒級引擎可以使用本地實(shí)時時鐘(RTC),,也可以通過NI定時同步架構(gòu)(NI-TimeSync)用外部參考時鐘進(jìn)行驅(qū)動(圖1)。
圖1. LabVIEW納秒級定時機(jī)制與NI-TimeSync協(xié)同為應(yīng)用程序提供時鐘,。
LabVIEW 2010在NI-TimeSync中引入全新時鐘,。NI-TimeSync 1.1中的IEEE1588插件提供了精度高達(dá)1 ms的同步參考時鐘。您可以在網(wǎng)絡(luò)上配置多個儀器,,使用同一個IEEE 1588參考時鐘,,讓多個平臺可以在標(biāo)準(zhǔn)的以太網(wǎng)網(wǎng)絡(luò)上進(jìn)行同步。您還可以通過NI測量與自動化瀏覽器(MAX)工具配置設(shè)備使用軟件1588精確時間協(xié)議(圖2),。
圖2. 從MAX配置設(shè)備的時間同步源
LabVIEW定時結(jié)構(gòu)——定時循環(huán)
定時循環(huán)是在可配置的定時源產(chǎn)生事件時執(zhí)行的循環(huán)結(jié)構(gòu),。它可以使用多種定時源(后面的教程會有詳細(xì)介紹)。如果開發(fā)多速率處理,、精確定時與同步,、循環(huán)執(zhí)行反饋、動態(tài)變化定時特性或多執(zhí)行優(yōu)先級的應(yīng)用,,可以使用定時循環(huán),。除了定時循環(huán)的嚴(yán)密定時特性之外,定時結(jié)構(gòu)還可以用于為多核編程分配處理器資源,。使用定時循環(huán),,您可以指定包括周期、優(yōu)先級,、期限,、偏移量和延時等多個定時屬性。結(jié)合這些屬性和豐富的定時源,,無論需要怎樣的定時方式,,您都可以創(chuàng)建復(fù)雜的應(yīng)用程序。
圖3. 使用定時常數(shù)執(zhí)行代碼的LabVIEW定時循環(huán)結(jié)構(gòu)定時循環(huán)的定時源
定時源控制定時結(jié)構(gòu)的執(zhí)行,。您可以從三類定時源中選擇:內(nèi)部定時源,、軟件觸發(fā)或外部定時源(圖4)。
圖4. 定時循環(huán)結(jié)構(gòu)的定時源:內(nèi)建內(nèi)置定時源,、軟件觸發(fā)源和外部源
內(nèi)置定時源
內(nèi)置定時源使用納秒級引擎記錄時間,。您可以使用1 kHz時鐘或1 MHz時鐘在實(shí)時(RT)目標(biāo)上配置定時循環(huán),。您可以使用1 kHz時鐘以毫秒級分辨率使用定時結(jié)構(gòu),。所有能夠運(yùn)行定時結(jié)構(gòu)的LabVIEW平臺都支持1 kHz定時源,。支持1 MHz定時源的目標(biāo)可以提供微秒級分辨率的定時結(jié)構(gòu)。您還可以配置定時循環(huán)結(jié)構(gòu),,使用這些內(nèi)置定時源,,作為絕對時間參考,用時間戳開始執(zhí)行循環(huán)結(jié)構(gòu),。例如,,您可以配置定時循環(huán)在每天的確定時間開始運(yùn)行。
另一個內(nèi)置定時源是同步掃描引擎,。它將定時結(jié)構(gòu)與NI掃描引擎進(jìn)行同步,。使用這個定時源,定時結(jié)構(gòu)在每次掃描結(jié)束時執(zhí)行,。循環(huán)執(zhí)行周期對應(yīng)于掃描周期(µS)設(shè)置,,您可以在NI掃描引擎頁面上進(jìn)行配置。
軟件觸發(fā)定時源
您可以創(chuàng)建軟件觸發(fā)的定時源來觸發(fā)基于軟件事件定時結(jié)構(gòu),。Create Timing Source VI創(chuàng)建軟件觸發(fā)的定時源,。Fire Software-Triggered Timing Source VI以編程方式觸發(fā)用軟件觸發(fā)定時源控制的定時循環(huán)。您可以使用軟件觸發(fā)定時源作為兼容實(shí)時方式的事件響應(yīng)器或是在新數(shù)據(jù)出現(xiàn)時,,通知在生產(chǎn)者—消費(fèi)者模式中中的消費(fèi)者循環(huán),。
外部定時源
您可以創(chuàng)建外部定時源,用NI-DAQmx7.2或以后版本控制定時結(jié)構(gòu),。用DAQmx Create Timing Source VI以編程方式選擇外部定時源,。您還可以使用多種NI-DAQmx定時源,包括頻率,、數(shù)字邊沿計(jì)數(shù)器,、數(shù)字變化檢測與任務(wù)信號源控制定時結(jié)構(gòu)。使用DAQmx數(shù)據(jù)采集VI創(chuàng)建以下類型的NI-DAQmx定時源,,控制定時結(jié)構(gòu),。
頻率——創(chuàng)建用定時結(jié)構(gòu)以一定頻率執(zhí)行的定時源。
數(shù)字邊沿觸發(fā)器——創(chuàng)建在數(shù)字信號的上升沿或下降沿執(zhí)行的定時結(jié)構(gòu),。
數(shù)字變化檢測——創(chuàng)建在一條或多條數(shù)字線的上升沿或下降沿執(zhí)行的定時結(jié)構(gòu),。
任務(wù)信號——創(chuàng)建可以通過使用信號來觸發(fā)執(zhí)行的定時結(jié)構(gòu)。
LabVIEW中的定時與同步
利用語言自帶的定時結(jié)構(gòu),、納秒級定時引擎和定時循環(huán)結(jié)構(gòu),,LabVIEW提供了系統(tǒng)必須的定時與同步功能。
如果您不熟悉同步,,可以訪問實(shí)現(xiàn)同步了解更多,。或是查看行業(yè)中的案例研究,。
了解LabVIEW 更多信息,,請?jiān)L問ni.com/labview/zhs