LabVIEW CompactRIO 開發(fā)指南 3 選擇CompactRIO編程模式
第二章
選擇CompactRIO編程模式
第一章中介紹的CompactRIO架構為我們提供了通過LabVIEW FPGA定制FPGA硬件或使用NI CompactRIO掃描模式來實現(xiàn)I/O的選項。如果計算機上有LabVIEW Real-Time和LabVIEW FPGA,那么當向LabVIEW項目添加CompactRIO目標時,將提示選擇想要使用的編程模式。在選擇一種模式后,如果想為應用程序使用LabVIEW FPGA和CompactRIO掃描模式的混合,也可以進入混合模式。如圖2.1所示。如果安裝了LabVIEW FPGA,在向LabVIEW項目添加CompactRIO系統(tǒng)時,會提示選擇編程模式

圖2.1?選擇編程模式
下面是每種編程模式的概述。
LabVIEWFPGA接口模式
使用LabVIEW FPGA接口模式,除了對實時處理器進行編程外,還可以通過定制FPGA個性來解鎖CompactRIO的真正功能。這可以幫助開發(fā)人員實現(xiàn)通常需要定制硬件的性能。使用LabVIEW FPGA,可以實現(xiàn)自定義定時和觸發(fā),卸載信號處理和分析,創(chuàng)建自定義協(xié)議,并以最大速率訪問I/O。當在FPGA VI和Real-Time VI之間通信數(shù)據(jù)時,可以選擇使用DMA FIFO以非常高的速率傳輸數(shù)據(jù),或者使用控件和指示器通信單點數(shù)據(jù)。
CompactRIO掃描模式
使用CompactRIO掃描模式,可以對CompactRIO系統(tǒng)的實時處理器進行編程,但不能對FPGA進行編程。在這種模式下,NI為FPGA提供了一個預定義的特性,它定期掃描I/O并將其放置在內存映射中,使其可用于LabVIEW Real-Time。CompactRIO掃描模式足以滿足需要以幾百赫茲的速率對I/O進行單點訪問的應用程序。它不支持高速率的流數(shù)據(jù)
混合模式
同時在目標上使用CompactRIO掃描模式和LabVIEW FPGA被稱為混合模式。使用這種方法,開發(fā)人員選擇直接使用LabVIEW FPGA編程的模塊從I/O掃描中刪除,其余模塊與RIO掃描接口通信。請注意,RIO掃描接口使用了通??捎糜贚abVIEW FPGA的三個DMA通道中的兩個。本節(jié)提供有關為CompactRIO應用程序選擇編程模式的提示。開發(fā)人員應該根據(jù)應用程序對性能、可靠性、自定義和I/O的需求來選擇編程模式。NI LabVIEW for CompactRIO開發(fā)人員指南討論了LabVIEW FPGA編程和RIO掃描接口使用的編程技術和最佳實踐。
何時使用LabVIEW FPGA
與基于處理器的控制系統(tǒng)一樣,F(xiàn)PGA已被用于實現(xiàn)所有類型的工業(yè)控制系統(tǒng),包括模擬過程控制、離散邏輯以及基于批處理或狀態(tài)機的控制系統(tǒng)。然而,基于FPGA的控制系統(tǒng)在很多方面與基于處理器的系統(tǒng)不同。如果應用程序有下面列出的任何需求,應該使用LabVIEW FPGA編程I/O和其他低級任務。可以在第5章:通過LabVIEW FPGA定制硬件中找到更多關于使用LabVIEW FPGA編程的信息。
使用LabVIEW FPGA,您可以創(chuàng)建用于高速數(shù)據(jù)采集、控制回路或自定義定時和觸發(fā)的自定義FPGA vi。

圖2.2使用LabVIEW FPGA
最大性能和可靠性
當為FPGA設備編譯控制應用程序時,結果是一個高度優(yōu)化的處理流程,提供真正的并行處理,并具有專用硬件電路的性能和可靠性優(yōu)勢。由于FPGA芯片上沒有操作系統(tǒng),因此代碼以確保最大性能和可靠性的方式實現(xiàn)。
高速波形采集/產(chǎn)生(> 500hz)
RIO掃描接口針對運行在低于500 Hz的控制回路進行了優(yōu)化,但許多C系列I/O模塊能夠以更高的速率獲取和生成。如果需要充分利用這些模塊功能并以高于500 Hz的速度采集或生成,則可以使用LabVIEW FPGA以根據(jù)具體的應用定制的用戶定義速率進行采集。自定義觸發(fā)/時間/同步
使用可重新配置的FPGA,可以創(chuàng)建簡單、高級或其他自定義的觸發(fā)器、定時方案和I/O或機箱同步實現(xiàn)。這些可以像基于超過閾值的模擬采集的上升觸發(fā)自定義CAN消息一樣復雜,也可以像在外部時鐘源的上升沿上獲取輸入值一樣簡單。
基于硬件的分析/生成和協(xié)同處理
許多傳感器輸出的數(shù)據(jù)比實時處理器單獨合理處理的數(shù)據(jù)要多??梢詫PGA用作協(xié)處理器來分析或生成復雜信號,同時將處理器釋放給其他關鍵線程。這種基于FPGA的協(xié)同處理通常用于以下應用:
■編碼/解碼傳感器
轉速表
標準和/或自定義數(shù)字協(xié)議
■信號處理和分析
光譜分析(快速傅立葉變換和窗化)
過濾、平均等
數(shù)據(jù)簡化
第三方IP集成
■傳感器仿真
凸輪和曲柄
線性可變差動變壓器(LVDTs)
■硬件在環(huán)仿真
最高性能控制
FPGA不僅可以實現(xiàn)高速采集和生成,還可以在FPGA上實現(xiàn)多種控制算法??梢允褂脝吸cI/O與多通道,可調PID或其他控制算法來實現(xiàn)確定性控制,環(huán)路速率超過1 MHz。例如,LabVIEW FPGA模塊包含的PID控制算法在300 ns內執(zhí)行。
使用LabVIEW FPGA接口模式
當從LabVIEW項目中發(fā)現(xiàn)CompactRIO控制器時,選擇LabVIEW FPGA Interface作為編程模式。LabVIEW FPGA接口模式自動檢測I/O模塊并將其添加到LabVIEW項目中??梢栽诘?章:通過LabVIEW FPGA定制硬件中找到更多關于使用LabVIEW FPGA接口模式的信息和最佳實踐。
何時使用CompactRIO掃描模式
一些工業(yè)控制和監(jiān)控應用基于單點I/O數(shù)據(jù)。這些進程中使用的數(shù)據(jù)表示物理I/O通道的當前值。流程不關心跟蹤數(shù)據(jù)的時間歷史、將當前值與任何先前值進行比較,或測量值的變化率。它們通常不需要超過500赫茲的循環(huán)速率??梢允褂肅ompactRIO掃描模式來簡化這些類型的應用程序。
RIO掃描接口技術允許單點I/O訪問高達幾百赫茲的速率,而無需編寫FPGA代碼或RT到FPGA接口。當控制器通過掃描接口訪問I/O時,將自動從模塊中讀取模塊I/O,并將其放入CompactRIO控制器上的當前值表中。

圖2.3 RIO掃描接口
當決定為CompactRIO應用程序使用Scan Mode時,應該考慮所需的性能或循環(huán)速率和通道計數(shù)。圖2.4中的圖形顯示了使用掃描模式對PID控制回路完成的基準測試,包括一個模擬輸入和一個模擬輸出。數(shù)據(jù)顯示,高于100 Hz的PID循環(huán)速率加上高通道數(shù)對CPU使用率有顯著影響。一般來說,當需要比500hz更快的循環(huán)速率時,不應該使用掃描模式。

圖2.4當使用RIO掃描接口時,高通道數(shù)和高環(huán)路速率對CPU的影響很大
雖然不應該使用掃描模式高速數(shù)據(jù)采集或控制回路,但它確實提供了幾個好處:
■易于編程-在開發(fā)過程中將I/O變量直接拖放到LabVIEW實時VI中。
■動態(tài)檢測I/O模塊的能力-未通過項目配置的插槽自動檢測插入的模塊。然后,可以通過變量API配置這些模塊。
■故障引擎- NI掃描引擎具有內置的NI故障引擎,可以確定地拋出錯誤。
■診斷和調試-使用分布式系統(tǒng)管理器,可以查看當前值和故障,以及在程序運行時覆蓋當前I/O值。
并非所有CompactRIO硬件都適用于NI掃描模式。有關支持掃描模式的C系列I/O模塊列表,請參見CompactRIO掃描模式支持的C系列模塊。帶有1M門FPGA的CompactRIO目標不能完全支持掃描接口。可以在不支持的目標上實現(xiàn)一些掃描接口功能,但必須使用LabVIEW FPGA。
使用CompactRIO掃描模式
當從LabVIEW項目中發(fā)現(xiàn)CompactRIO控制器時,選擇Scan Interface作為編程模式。RIO掃描接口自動檢測I/O模塊并將它們添加到LabVIEW項目中。然后,可以將I/O變量拖放到LabVIEW實時和主機VI框圖上,并立即讀寫縮放,校準的I/O數(shù)據(jù),而無需任何FPGA編程或編譯。

圖2.5?將I/O變量拖放到實時VI框圖上。
掃描引擎還提供了一個Timed-Loop定時源,因此您可以將代碼與低抖動控制應用程序的I/O更新同步。

圖2.6?使用將時鐘源設置為同步到掃描引擎的定時環(huán)路,將環(huán)路同步到I/O更新。
可以在\LabVIEW\examples\ScanEngine中找到使用掃描模式的示例程序。在掃描模式下編程時,與I/O變量接口的另一個選項是通過I/O變量可編程API,如圖2.7所示。與靜態(tài)I/O可變節(jié)點API相比,編程API提供了以下幾個優(yōu)點:
■可以一次迭代多個變量,而不會拉下大量的I/O變量節(jié)點
■部署到CompactRIO目標不那么復雜,因為項目沒有綁定到LabVIEW項目
■程序化API提高了可伸縮性
■可以在運行應用程序時更改I/O變量配置設置,并且配置設置可以在框圖中查看
圖2.7?使用I/O變量可編程API
雖然編程API提供了幾個優(yōu)點,但它確實需要更多的編程。I/O變量編程API可以在Data Communication?Shared Variable?I/OVariable.下的LabVIEW函數(shù)面板中找到。
在將Scan Engine I/O變量部署到CompactRIO控制器時,請注意這些變量可能會占用很大一部分CPU帶寬。如果在Scan Mode下部署機箱,其中物理上包含您想要使用的所有模塊,那么它將發(fā)布一個名為PercentHWScanUtilization的變量。根據(jù)掃描時間和部署的硬件,該值告訴我們用于讀取或寫入I/O變量的CPU帶寬百分比。在此基礎上,可以了解有多少時間可以專用于其他流程。

圖2.8?監(jiān)控讀寫掃描引擎I/O變量所占用的CPU帶寬。
何時使用混合模式
同時在一個目標上使用掃描模式和LabVIEW FPGA被稱為混合模式。使用這種方法,選擇直接使用LabVIEW FPGA編程的模塊從I/O掃描中刪除,其余模塊與RIO掃描接口通信。當編譯LabVIEW FPGA VI時,如果任何I/O模塊被配置為使用掃描模式,則編譯中包含RIO掃描接口的必要組件。結果是單個位文件,該文件與配置為使用掃描模式的模塊的掃描模式功能以及與剩余I/O模塊直接通信的自定義FPGA邏輯一起工作。

圖2.9?激活混合模式后,編寫FPGA VI與模塊接口,并將數(shù)據(jù)傳遞給實時主機。
在混合模式下,可以在某些模塊上繼續(xù)使用RIO掃描接口,同時直接在FPGA上編程其他模塊??梢允褂肍PGA編程模型來處理高速操作、內聯(lián)處理、波形緩沖采集以及不支持掃描模式的某些模塊。通過將模塊項目項從CompactRIO機箱下拖放到FPGA目標下,激活特定模塊的FPGA編程。通過這樣做,可以對FPGA進行編程,使自定義代碼與其他模塊的掃描接口并行運行??梢酝ㄟ^使用FPGA主機接口函數(shù)或用戶定義變量從實時VI訪問FPGA I/O。

圖2.10?激活特定模塊的FPGA編程。
在使用混合模式時,需要注意一些重要的限制。首先,編譯時間顯著增加,因為編譯器必須將默認RIO Scan Interface位文件和創(chuàng)建到一個位文件中的FPGA代碼結合起來。其次,由于掃描引擎使用兩個通道,因此可以在FPGA代碼中使用的DMA通道數(shù)量減少。大多數(shù)FPGA有三個DMA通道,因此大多數(shù)應用程序在FPGA代碼中只剩下一個DMA通道。