基于LabVIEWRT的數據實時傳輸系統(tǒng)
( 2) 連接啟動宿主機與目標計算機, 并使目標機運行在實時狀態(tài)下。宿主機與目標機的連接可以是普通的網絡連接。使目標計算機運行在實時狀態(tài)下則有從硬盤啟動和從軟盤啟動兩種方式, 啟動軟盤及硬盤的設置均在 NI產品隨帶的硬件操作環(huán)境 MAX下設置, 具體步驟可見文獻 [ 4]。本文所設置的目標機是一個數據采集計算機, 由研華工控機和 N I公司的基于 PC I總線的數據采集卡 PC I6036E組成。目標機啟動模式采取了制作啟動軟盤的方式。
( 3) 在宿主機上進入 LabVIEW RT編程模式, 選定將要運行程序的目標機, 編制宿主機和目標機要運行的程序。 LabVIEW RT的不同版本在這一部分的環(huán)境可能有差別, 本文用的 8 1 0版本是目前最新的版本, 它直接應用了一個 RT工程管理窗口, 使得對子程序模塊 ( VI) 的管理十分方便、直觀。
( 4) 完成程序的編制以及相應的設置后, 直接把程序下載到目標機上即可以運行。應用 LabV I EW RT編制的程序只要下載到目標機上就可以自己獨立運行, 而只要沒有特殊的設置, 縱使宿主機崩潰關機了, 其運行依然不受影響。而且, 通過設置可以把目標機上的程序設置成開機即自動運行狀態(tài), 這樣宿主機就可以不需控制目標機而進行其它目標機的開發(fā)。這在很多自動測試、控制網絡等系統(tǒng)中有著極大的優(yōu)點, 可以極大地提高系統(tǒng)開發(fā)效率并節(jié)省很多的資源。另外, 文中系統(tǒng)開發(fā)所應用的 LabVIEW RT的 810版本還增加了一個 /共享變量 0 的新功能。它采用了一個 / 先進先出0 的內存棧列機制, 通過應用共享變量可以方便、可靠的實現控制計算機與目標機計算機之間的數據傳送以及邏輯控制。比起以前版本為實現網絡通訊所必須采取的 DataSocket技術等, 共享變量的邏輯以及代碼極其簡單。也正因為此, 共享變量的出現也大大提升了 LabVIEW 以前并不受贊揚的網絡通
訊性能 [5]
。
2 12 軟件組成與實時性控制
2 1211 軟件組成及流程
一般情況下, 非 N I公司的產品, 即第三方硬件產品, 并不能直接應用在 LabV IEW RT環(huán)境之下。而此時就必須自行開發(fā)板卡在 LabV IEW RT環(huán)境下的驅動, 其包括很多的過程 [ 6]。
然而 NI公司恰好開發(fā)出了 VM IPCI- 5565的驅動, 作為例程發(fā)布在 N I主頁上供開發(fā)者學習。實驗證明, 在對目標機進行一定設置后, 此驅動可以應用在 LabV IEW 的 RT環(huán)境下。系統(tǒng)軟件的組成分為宿主機控制程序和目標機采集程序兩部分, 功能可以實現由控制界面控制采樣時間限、采樣模式及點數、采樣率等參數設置的任意通道的數據采集和直接發(fā)送。軟件的流程如圖 3所示。
2 1212 軟件中的實時性考慮
圖 3 系統(tǒng)軟件流程圖
為盡量提升軟件運行的效率和數據處理的實時性, 軟件從總體方案和具體函數的選擇應用上都進行了優(yōu)化考慮。具體表現在: 在總體方案上, 程序盡量在開始采集命令下達之前實現所有的硬件參數配置以及控制變量的復位, 而在數據采集開始后使目標機上運行的代碼盡量少。而在具體函數的應用上, 也以運行代碼的簡潔高效為原則。這包括了對數據采集函數的改進組合和對數據發(fā)送時函數的選擇。數據采集函數在運行時,通過判斷采集模式 (是連續(xù)還是定點 ) 選擇在 DAQm x函數模
塊基礎上改進的采集子 VI[ 7- 8]。另外需要注意的是, 在數據發(fā)送時必須根據反射內存卡函數的運行特點和發(fā)送數據的模式, 合適選擇編制的數據發(fā)送子V I 。由于反射內存卡的驅動函數是由 LabVIEW 中的 V ISA底層函數綜合應用而成的[ 6], 尤其是數據讀寫函數, 全部由 VISA中寄存器讀寫函數組成。所以一般的浮點型采集數據無法直接寫進寄存器, 而必須開發(fā)合適的數據轉換函數。此時有兩種方法: 一即把所有數據通過 LabV IEW 的 datafl a ttern子 VI轉化成字符型 ( 8位精度整形 ) 數據 (此時又分兩種情況, 有適用于連續(xù)數據的單點轉化和適用于定量序列的向量轉 ) , 發(fā)出后再通過相反的方法轉換回原始數據; 二則是把浮點數據判斷正負后設置代表負數的標志位, 再通過一個固定的數學變換全部轉換成整形數據, 把轉換后的數據和對應標志位數據一同發(fā)送, 接收后再結合標志位進行數據反變換即可。
可見, 第一種方法把一個 32位浮點數變成了 4個 8位整形數來發(fā)送, 而第二種方式增加了一倍的數據量, 但完成一個數據發(fā)送卻只發(fā)送兩次。于是, 如若是少量的數據序列, 則推薦采取第一種方式來發(fā)送; 而若是大批量數據發(fā)送, 則可以在預先分配標志位內存區(qū)的情況下采用第二種方法。而隨后的實驗則證明, 這樣的選擇在實際上是正確的。
3 系統(tǒng)測試及結果分析
系統(tǒng)搭建完畢后, 對其的功能和性能進行了測試。測試方案為:
( 1) 數據采集計算機上在 LabVIEW RT環(huán)境下直接產生定量數據, 通過寫入反射內存發(fā)送, 計算出平均耗時, 以得到軟件的性能指標;
( 2) 數據采集計算機上在 LabVIEW RT環(huán)境下產生模擬數據, 經自我采回后再寫入反射內存發(fā)送, 計算出平均耗時;
( 3) 利用 /銀河 - SI M 仿真工作站0 產生數據, 由數據采集計算機節(jié)點采集數據并向數據接收計算機節(jié)點發(fā)送, 比較仿真工作站的模擬波形和接收計算機的數據波形, 以驗證系統(tǒng)功能。
測試結果表明:
( 1) 軟件發(fā)送 10000個 32位浮點數時, 通過第一種處理方式耗時 7 m s , 第二種處理方式耗時5m s , 性能達到了預期要求, 且耗時上的差異與理論上的推斷相符。
( 2) 軟件完全可以在同時輸出 2路模擬信號的情況下,實現可控制的任意多路 ( 1~ 7)、任意通道 ( 0~ 8) 同一采樣率下的數據采集與傳送, 且準確性較高、可靠性好。
( 3) 整個系統(tǒng)可以實現數據較好的實時傳輸, 完成數據的實時處理。
4 結束語
本文實現的系統(tǒng)是實驗室開發(fā)的 / 智能集成仿真網絡接口系統(tǒng)0 的一部分, 整體系統(tǒng)可以實現反射內存網絡和廣播內存網絡的實時數據通訊 [9- 10]。而本子系統(tǒng)除能完成總體的任務外, 由于具有網絡結構開放、工作模式簡潔高效的特點,更具有較大的發(fā)展空間和拓展應用前景。在系統(tǒng)投入應用后,在某制導武器的仿真試驗中工作良好, 在武器的開發(fā)定型中發(fā)揮了積極的作用。
評論