• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于FPGA自動(dòng)變速率采集實(shí)現(xiàn)及SQL數(shù)據(jù)庫(kù)鏈接建立

      2015-04-12 00:00:00王樹東等
      現(xiàn)代電子技術(shù) 2015年9期

      摘 要: 針對(duì)衛(wèi)星電推進(jìn)分系統(tǒng)地面測(cè)試設(shè)備建設(shè)方案,開發(fā)了配套的數(shù)據(jù)采集存儲(chǔ)系統(tǒng),闡述了FPGA在LabVIEW語(yǔ)言編程中下位機(jī)自動(dòng)變速率采集的實(shí)現(xiàn),并通過LabVIEW如何建立與數(shù)據(jù)庫(kù)的鏈接,進(jìn)行數(shù)據(jù)插入,查詢,系統(tǒng)能夠在前臺(tái)監(jiān)控計(jì)算機(jī)提供人機(jī)界面,能夠自動(dòng)根據(jù)情況變換速率采集。詳細(xì)介紹了每個(gè)程序VI的編程思路,給下位機(jī)自動(dòng)變速率編程提供一個(gè)新的方向,實(shí)際運(yùn)行系統(tǒng)表明,該思路編程新穎獨(dú)特,自動(dòng)變速率運(yùn)行穩(wěn)定,采集效果準(zhǔn)確。

      關(guān)鍵詞: 數(shù)據(jù)采集; LabVIEW; SQL數(shù)據(jù)庫(kù); 變速率采集

      中圖分類號(hào): TN911?34; TP311 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2015)09?0096?04

      Abstract: According to the development scheme of ground testing equipment for the satellite electric propulsion subsystem, a matched data acquisition and memory system is developed. The implementation of FPGA?based automatic variable rate acquisition in the LabVIEW language programming by slave computer is described. The realization method for link of the database with SQL database through LabVIEW is introduced. With data insertion and query, the system can provide human?machine interface in the PC monitoring computer and transform the acquisition rate automatically according the situation. The programming idea for each program VI is elaborated, which provides a new direction for computer automatic variable rate programming. The actual running result shows that the programming idea is novel and unique, and the system works well and can realize accurate acquisition.

      Keywords: data acquisition; LabVIEW; SQL database; variable rate acquisition

      0 引 言

      隨著航空航天技術(shù)的不斷發(fā)展,對(duì)電推進(jìn)技術(shù)的要求不斷提高,依托于電推進(jìn)系統(tǒng)的數(shù)據(jù)采集系統(tǒng)應(yīng)運(yùn)而生。數(shù)據(jù)采集存儲(chǔ)系統(tǒng)配套服務(wù)于電推進(jìn)分系統(tǒng)地面試驗(yàn)設(shè)備,是電推進(jìn)系統(tǒng)進(jìn)行地面測(cè)試、驗(yàn)證的重要組成部分,提供對(duì)實(shí)驗(yàn)的過程控制、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)分析等功能。傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)只能對(duì)于特定硬件進(jìn)行相應(yīng)的軟件定制,拓展性適應(yīng)性較差,研發(fā)費(fèi)用較高。而且系統(tǒng)的自控型較遲滯,不能根據(jù)現(xiàn)場(chǎng)環(huán)境自動(dòng)進(jìn)行變速率采集。本文著重闡述了一種FPGA在下位機(jī)中基于LabVIEW編程語(yǔ)言的自動(dòng)變速率采集方式[1],及如何把采集到數(shù)據(jù)進(jìn)行數(shù)據(jù)庫(kù)鏈接及存儲(chǔ)回放。系統(tǒng)程序可以自動(dòng)變換所需的采集速率,不用人為手動(dòng)控制,而且系統(tǒng)可以隨著現(xiàn)場(chǎng)環(huán)境隨時(shí)修改程序,結(jié)合相應(yīng)的硬件就可以快速地搭建一個(gè)完整的采集系統(tǒng),為實(shí)驗(yàn)和工程節(jié)約大量時(shí)間和經(jīng)費(fèi),程序靈活度大大增加。

      1 硬件設(shè)計(jì)

      數(shù)據(jù)采集卡是計(jì)算機(jī)與外界的接口[2],它的主要作用是將外部的模擬信號(hào)轉(zhuǎn)化為計(jì)算機(jī)能夠處理的數(shù)字信號(hào)。本文采用了NI公司提供的FPGA CampactRIO系列(CRIO)數(shù)據(jù)采集設(shè)備。整個(gè)硬件CRIO采集系統(tǒng)由NI CompactRIO?9025控制器、CRIO?9118機(jī)箱、NI?9222和NI?9229采集卡三部分硬件組成,在下位機(jī),采用了NI TPC?2212 LabVIEW觸屏式計(jì)算機(jī)實(shí)現(xiàn)人機(jī)界面,實(shí)時(shí)控制數(shù)據(jù)采集過程[3]。從硬件結(jié)構(gòu)上,F(xiàn)PGA程序運(yùn)行在FPGA機(jī)箱背板中,它是作為 CRIO系統(tǒng)中的一個(gè)部件存在的,它的上一級(jí)是控制器,運(yùn)行的是實(shí)時(shí)操作系統(tǒng),下一級(jí)是C系列模塊即采集卡,負(fù)責(zé)實(shí)際的數(shù)據(jù)采集和控制[4]。圖1為采集設(shè)備硬件連接圖。

      2 FPGA下位機(jī)軟件設(shè)計(jì)

      下位機(jī)FPGA中采用LabVIEW編程語(yǔ)言進(jìn)行編程,主要程序由FPGA機(jī)箱中的最底層采集程序Target.VI和RT實(shí)時(shí)控制器中進(jìn)行數(shù)據(jù)整理交換程序HOST.VI組成。FPGA編程是整個(gè)數(shù)據(jù)采集的核心所在,它是采集系統(tǒng)的數(shù)據(jù)來源。

      2.1 FPGA采集程序Target.VI

      整個(gè)程序采用平鋪式順序結(jié)構(gòu)來實(shí)現(xiàn),確保程序按一定順序進(jìn)行,不容易出現(xiàn)程序混亂。首先在第一個(gè)幀中設(shè)置要采集的采樣率,完成后在第二幀中開啟采集卡START,采集卡模塊準(zhǔn)備數(shù)據(jù)采集。因?yàn)樾枰兯俾蔬M(jìn)行采集,運(yùn)用了條件結(jié)構(gòu)進(jìn)行程序搭建。當(dāng)速率一切正常不需要變換速率時(shí),直接運(yùn)行“假”程序,這里的16路I/O接口通道進(jìn)行采集,把采集到的數(shù)據(jù)進(jìn)行創(chuàng)建數(shù)組以便用于數(shù)據(jù)傳送。因?yàn)樵贔PGA中,不能使用全局變量進(jìn)行數(shù)據(jù)共享,同時(shí)為了保持FPGA運(yùn)行的精確性,摒棄了輪詢和中斷方式,這里采用DMA FIFO進(jìn)行VI間數(shù)據(jù)傳送,把得到的數(shù)據(jù)直接傳遞到RT實(shí)時(shí)控制器的內(nèi)存中。這里需要注意的是保持?jǐn)?shù)據(jù)連續(xù)采集的While只需要在第三幀I/O接口進(jìn)行循環(huán)即可,不用覆蓋整個(gè)平鋪順序結(jié)構(gòu),防止每次采集都需要重新設(shè)置采樣率,影響系統(tǒng)運(yùn)行。采集底層程序要求越簡(jiǎn)單直接越好,拋卻系統(tǒng)冗繁性,拖慢整個(gè)系統(tǒng)。

      當(dāng)系統(tǒng)需要變換速率時(shí),運(yùn)行條件“真”中的程序,這里設(shè)置了一個(gè)真假布爾開關(guān)update speed,根據(jù)環(huán)境需要以便自動(dòng)控制采樣率切換。在“真”條件結(jié)構(gòu)內(nèi)部創(chuàng)建第二個(gè)平鋪順序結(jié)構(gòu),第一幀程序中設(shè)置采集模塊STOP,把采集卡模塊進(jìn)行中斷,第二幀中設(shè)置需要改變的采樣率,這里用采樣率2控件進(jìn)行輸入,為后面RT程序中自動(dòng)變換速率留下輸入端口。最后第三幀中進(jìn)行采集模塊START進(jìn)行,創(chuàng)建update speed布爾輸入開關(guān)局部變量,局部變量狀態(tài)為“F”,把條件結(jié)構(gòu)切換到運(yùn)行“假”中程序,進(jìn)行I/O端口數(shù)據(jù)采集。FPGA程序條件“假”如2圖表示,變速率條件“真”程序如3圖表示。

      2.2 RT實(shí)時(shí)控制器HOST.VI

      RT中程序主要負(fù)責(zé)對(duì)FPGA采集上來的數(shù)據(jù)進(jìn)行傳遞和處理[5]。上位機(jī)通過RT控制器進(jìn)行數(shù)據(jù)共享,來進(jìn)行波形顯示數(shù)據(jù)庫(kù)存儲(chǔ)等功能。首先運(yùn)用打開FPGA VI引用句柄控件進(jìn)行FPGA Target.vi的底層程序調(diào)用,經(jīng)過屬性重置及FIFO請(qǐng)求深度的設(shè)置后,連接一個(gè)FPGA的讀取/寫入控件,通過它可以直接對(duì)FPGA中采樣率2端口進(jìn)行采樣率重置輸入以達(dá)到變速率的目的。這里對(duì)采樣率2及update speed端口連接了兩個(gè)局部變量,它們負(fù)責(zé)對(duì)改變的采樣率進(jìn)行輸入和采集卡模塊的切換控制。最后連接FIFO讀取控件,運(yùn)用FIFO成功把底層數(shù)據(jù)傳遞上來。

      下面進(jìn)行最重要的自動(dòng)變速率切換程序編程。主要思想是利用條件結(jié)構(gòu)進(jìn)行程序“真假”切換。當(dāng)需要25 Kb/s的采樣率時(shí),調(diào)用執(zhí)行“真”中的程序,條件結(jié)構(gòu)中輸入25 Kb/s到顯示控件,并通過剛開始創(chuàng)建的局部變量直接把改正數(shù)值輸入FPGA讀寫控件,達(dá)到改正采樣率的目的。最后把得到的數(shù)據(jù)進(jìn)行隊(duì)列數(shù)據(jù)傳送,以便后面進(jìn)行外掛硬盤存儲(chǔ)。這里還創(chuàng)建了一個(gè)數(shù)值局部變量配合相應(yīng)的采樣率進(jìn)行后面的數(shù)據(jù)存儲(chǔ)時(shí)間配合,方法同修改采樣率一樣。當(dāng)程序穩(wěn)定運(yùn)行一段時(shí)間,只需要2 Kb/s的采樣率時(shí),執(zhí)行“假”中程序,同樣運(yùn)用局部變量把2 Kb/s采樣率輸入到讀寫控件,直接改正采樣率,不需要回到底層FPGA Target.vi中改正。因?yàn)榇藭r(shí),只需要1 Kb/s的存儲(chǔ)就可以,這里做了一個(gè)數(shù)組子集索引,把兩個(gè)索引出來的數(shù)組相加除2即可,同樣在VI內(nèi)部傳遞數(shù)據(jù)用隊(duì)列實(shí)現(xiàn)。在這里用布爾開關(guān)控制調(diào)節(jié)采樣率,當(dāng)需要自動(dòng)控制變速率時(shí),比如當(dāng)系統(tǒng)剛開始采集15 s時(shí)數(shù)率值較高,電壓電流較大不穩(wěn)定,需要高速率25 Kb/s采集,可以把采集到的一組數(shù)據(jù)索引出來進(jìn)行比對(duì),當(dāng)高于特定值時(shí)選擇器輸入“真”信號(hào),實(shí)行條件結(jié)構(gòu)“真”中程序,進(jìn)行25 Kb/s采樣率切換,之后系統(tǒng)運(yùn)行穩(wěn)定,電壓電流降下來小于特定值,輸入“假”信號(hào),切換到2 Kb/s的采樣率。這就實(shí)現(xiàn)了工程上的自動(dòng)轉(zhuǎn)換速率功能,采樣率可以根據(jù)自己實(shí)際需要進(jìn)行轉(zhuǎn)換。圖4,圖5為數(shù)據(jù)讀取及采樣率真假切換程序。

      3 LabVIEW上位機(jī)數(shù)據(jù)庫(kù)鏈接設(shè)計(jì)

      運(yùn)用數(shù)據(jù)共享傳遞從下位機(jī)采集上來的數(shù)據(jù),也就是來自從下位機(jī)RT實(shí)時(shí)控制器HOST.VI中的數(shù)據(jù)。把數(shù)據(jù)進(jìn)行濾波、加窗等處理后導(dǎo)入隊(duì)列,進(jìn)行VI內(nèi)部數(shù)據(jù)庫(kù)存儲(chǔ)。

      3.1 數(shù)據(jù)庫(kù)寫入.VI

      把由隊(duì)列傳來的數(shù)據(jù)進(jìn)行SQL數(shù)據(jù)庫(kù)存儲(chǔ)。存儲(chǔ)速率由主界面VI程序中時(shí)間等待控件來確定,這里設(shè)定1 s存儲(chǔ)1個(gè),即等待1 000 ms。首先把數(shù)據(jù)進(jìn)行至小數(shù)字符串轉(zhuǎn)換,就是把數(shù)據(jù)變換為小數(shù)分?jǐn)?shù)格式的浮點(diǎn)數(shù)字符串,因?yàn)樾枰褧r(shí)間字符串加入數(shù)據(jù)中以便存儲(chǔ),所以需要把數(shù)組全都變成統(tǒng)一類型的字符串形式。然后索引16路數(shù)組字符串,為的是添加時(shí)間字符串,把得到的17路數(shù)組進(jìn)行創(chuàng)建數(shù)組。其中,獲得的時(shí)間格式化,格式為′%Y?%m?%d %H:%M:%S%3u′。把得到的17路數(shù)組轉(zhuǎn)換為電子表格字符串,因?yàn)镾QL Executu模塊中命令文本需要連接的是字符串格式。把得到的字符串格式化,加入表名和values,把得到的格式化字符串用數(shù)據(jù)庫(kù)inserti nto語(yǔ)句利用SQL Execute執(zhí)行模塊,插入數(shù)據(jù)庫(kù),進(jìn)行數(shù)據(jù)存儲(chǔ),把數(shù)據(jù)存到SQL數(shù)據(jù)庫(kù)中。這里用了兩個(gè)執(zhí)行模塊,第一個(gè)是執(zhí)行插入數(shù)據(jù),第二個(gè)執(zhí)行模塊的作用是查詢表中所有的數(shù)據(jù),檢查是否存入數(shù)據(jù),其中表名用全局變量來顯示,方便查詢不同表的數(shù)據(jù),利用Rows fetch顯示存儲(chǔ)的數(shù)據(jù)行數(shù)。數(shù)據(jù)寫入VI見圖6。

      數(shù)據(jù)庫(kù)ADO框圖程序操作步驟分析:利用ADO Connection Create.vi創(chuàng)建一個(gè)鏈接對(duì)象,利用ADO Connection Open.vi建立與數(shù)據(jù)庫(kù)的鏈接。數(shù)據(jù)庫(kù)鏈接串這里建立了一個(gè)數(shù)據(jù)庫(kù)鏈接子VI用于指定數(shù)據(jù)庫(kù)鏈接。數(shù)據(jù)庫(kù)鏈接串也可以用ODBC數(shù)據(jù)源中創(chuàng)建一個(gè)DSN進(jìn)行鏈接。但是用這種方式鏈接,需要在每一臺(tái)電腦上運(yùn)行程序鏈接數(shù)據(jù)庫(kù)時(shí)都需要重新創(chuàng)建數(shù)據(jù)源,非常麻煩。這里直接創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)子VI,把服務(wù)器和數(shù)據(jù)庫(kù)名稱直接用全局變量寫入子VI,用戶只需要選擇好數(shù)據(jù)庫(kù)和服務(wù)器就可以直接運(yùn)行程序進(jìn)行存儲(chǔ),方便快捷。利用ADO Conn Execute.vi執(zhí)行插入數(shù)據(jù)和SQL查詢命令“select*from表名”。最后用ADO Conn Close.vi關(guān)閉與數(shù)據(jù)庫(kù)之間的鏈接。

      3.2 數(shù)據(jù)庫(kù)鏈接(子)VI

      用鏈接字符串把Server(服務(wù)器名稱),Database(數(shù)據(jù)庫(kù)名稱),Uid(用戶名),Pwd(密碼)鏈接起來,用ADO Conn Open.Vi指定打開的路徑。其中服務(wù)器名稱等做成全局變量,直接選擇,方便一點(diǎn)。此vi用于代替電腦上設(shè)置ODBC數(shù)據(jù)源。數(shù)據(jù)庫(kù)鏈接VI程序設(shè)計(jì)見圖7。

      3.3 信息查詢子.VI

      信息查詢子VI調(diào)用于歷史數(shù)據(jù)查詢vi,為其提供歷史數(shù)據(jù)。用鏈接字符串把數(shù)據(jù)庫(kù)的查詢語(yǔ)句鏈接起來,數(shù)據(jù)庫(kù)語(yǔ)句為“select*from表名where cisj between′時(shí)間′and′時(shí)間′”。用connection VIS進(jìn)行實(shí)現(xiàn),原理同數(shù)據(jù)插入,只是查詢語(yǔ)句的改變。信息查詢VI程序設(shè)計(jì)見圖8。

      4 實(shí)驗(yàn)驗(yàn)證

      當(dāng)系統(tǒng)運(yùn)行時(shí),通過CRIO系統(tǒng)分別采集10 V交流電壓,10 A的交流電流,下載在FPGA機(jī)箱中的Target.VI通過NI 9229和9222模塊進(jìn)行采集數(shù)據(jù),并把采到的數(shù)據(jù)通過FIFO上傳到RT中進(jìn)行分析,并存儲(chǔ)到外掛的硬盤中進(jìn)行保存,最后RT與上位機(jī)PC進(jìn)行數(shù)據(jù)傳遞,在上位機(jī)中進(jìn)行信號(hào)處理,最后在系統(tǒng)主界面顯示出來。系統(tǒng)運(yùn)行主界面如圖9所示。

      從圖9可以看出,系統(tǒng)采集的電壓、電流與實(shí)際輸出10 V正弦電壓一致,數(shù)據(jù)準(zhǔn)確穩(wěn)定。系統(tǒng)連續(xù)采集24 h無死機(jī)狀態(tài)出現(xiàn),系統(tǒng)運(yùn)行穩(wěn)定。

      5 結(jié) 論

      經(jīng)過某研發(fā)所應(yīng)用實(shí)踐證明,基于LabVIEW的數(shù)據(jù)采集系統(tǒng)完全達(dá)到用戶的標(biāo)準(zhǔn),其可以自動(dòng)變速率的新穎思想有很大的拓展性,可以有多重變換方式,實(shí)際應(yīng)用可靠,其設(shè)計(jì)費(fèi)用相比于傳統(tǒng)數(shù)據(jù)采集設(shè)備大大降低,顧客只需要根據(jù)自己不同環(huán)境使用硬件設(shè)備就可以快速搭建起一個(gè)采集系統(tǒng)。本文采用的程序結(jié)合NI CRIO系列采集模塊,運(yùn)行穩(wěn)定,可靠性高,具有一定推廣價(jià)值。

      參考文獻(xiàn)

      [1] 陳樹學(xué),劉萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2011.

      [2] 王立強(qiáng).計(jì)算機(jī)測(cè)控系統(tǒng)與數(shù)據(jù)采集卡應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2007.

      [3] 崔佩佩,何強(qiáng),韓壯志,等.基于LabVIEW FPGA實(shí)現(xiàn)不同時(shí)域的數(shù)據(jù)連續(xù)傳輸[J].現(xiàn)代電子技術(shù),2011,34(17):21?24.

      [4] 周益青,王勇.基于LabVIEW軟件的數(shù)據(jù)采集與分析系統(tǒng)[J].制導(dǎo)與引信,2012,33(1):24?28.

      [5] 劉曉燕,吳娜,陳宇佳.基于LabVIEW數(shù)據(jù)采集的大型機(jī)械故障診斷分系統(tǒng)[J].華北水利水電學(xué)院學(xué)報(bào),2013,34(6):126?128.

      [6] 向科峰.基于LabVIEW的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)械管理開發(fā),2011(4):191?192.

      [7] 呂向峰,高洪林,馬亮,等.基于LabVIEW串口通信的研究[J].國(guó)外電子測(cè)量技術(shù),2009,28(12):27?30.

      [8] 章勇勤,艾勇,鄧德祥,等.基于FPGA的超高速數(shù)據(jù)采集與處理系統(tǒng)[J].數(shù)據(jù)采集與處理,2009,24(2):238?242.

      [9] 初華,李長(zhǎng)兵.LabVIEW基于USB 2.0的數(shù)據(jù)采集及處理[J].儀表技術(shù),2010(5):22?25.

      [10] 楊樂平,李海濤,趙勇,等.LabVIEW高級(jí)程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003.

      耒阳市| 淮北市| 连山| 弋阳县| 永和县| 宝兴县| 阳山县| 揭西县| 新竹市| 丹阳市| 克拉玛依市| 宽甸| 福清市| 古交市| 玉林市| 砀山县| 屏东市| 汝城县| 临猗县| 福泉市| 绿春县| 南充市| 犍为县| 昌乐县| 嵊州市| 上虞市| 安西县| 都匀市| 定西市| 米林县| 扎赉特旗| 伊通| 铁岭市| 新晃| 克山县| 红原县| 乌拉特后旗| 慈溪市| 菏泽市| 长岛县| 电白县|