<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 基于 LabVIEW 的油滴電量測試系統(tǒng)的數(shù)據(jù)庫訪問

          基于 LabVIEW 的油滴電量測試系統(tǒng)的數(shù)據(jù)庫訪問

          作者: 時(shí)間:2016-12-26 來源:網(wǎng)絡(luò) 收藏
            0 引言

            隨著測試技術(shù)與計(jì)算機(jī)技術(shù)日益緊密的結(jié)合,測試測量領(lǐng)域得到了空前的發(fā)展。尤其是基于LabVIEW的新一代虛擬儀器測試系統(tǒng),充分利用了計(jì)算機(jī)數(shù)據(jù)處理速度快、控制能力強(qiáng)等優(yōu)點(diǎn),使測試系統(tǒng)在數(shù)據(jù)采集、傳送、處理、顯示及存儲(chǔ)等方面突破了以往單一的儀器儀表的限制。LabVIEW 是一個(gè)劃時(shí)代的圖形化編程系統(tǒng),提供一種全新的程序設(shè)計(jì)方法,它對(duì)被稱為“虛擬儀器”的軟件對(duì)象進(jìn)行圖形化的組合操作,其強(qiáng)大的數(shù)據(jù)分析功能可在數(shù)據(jù)采集、測試分析中起到至關(guān)重要的作用,這就涉及到對(duì)大量數(shù)據(jù)的存儲(chǔ)、查詢、調(diào)用等功能。

          本文引用地址:http://www.ex-cimer.com/article/201612/333647.htm

            而大量數(shù)據(jù)的管理又需要通過數(shù)據(jù)庫來實(shí)現(xiàn),但是Lab-VIEW 本身并不具備數(shù)據(jù)庫訪問功能,因此需要其他輔助的方法來實(shí)現(xiàn)。本文以油滴電量測試系統(tǒng)的數(shù)據(jù)庫為例,利用NI的LabVIEW Database Connectivity Toolkit進(jìn)行編程,完成了對(duì)數(shù)據(jù)庫的訪問,實(shí)現(xiàn)了數(shù)據(jù)存儲(chǔ)、查詢、更新、修改、刪除等各項(xiàng)功能。

            1 LabVIEW訪問數(shù)據(jù)庫的多種實(shí)現(xiàn)方式

            數(shù)據(jù)庫訪問方式有多種,第一種是利用Visual C++等多種語言編寫DLL程序訪問數(shù)據(jù)庫,但這種方法需要從底層經(jīng)過復(fù)雜的編程才能實(shí)現(xiàn),開發(fā)難度大,本文不考慮這一方法;第二種方法是基于第三方軟件通過編程來實(shí)現(xiàn)LabVIEW 對(duì)數(shù)據(jù)庫的訪問。比如,LabSQL工具包就是第三方開發(fā)的專門針對(duì)LabVIEW的一個(gè)開源附加工具包,對(duì)基本的數(shù)據(jù)庫操作功能進(jìn)行二次封裝,能夠完成一般的數(shù)據(jù)庫操作,但兼容性相對(duì)較差;第三種是利用NI 的附加數(shù)據(jù)庫接口工具包LabVIEW SQLToolkit進(jìn)行編程來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問。該工具包集成的模塊中包含了大多數(shù)數(shù)據(jù)庫操作和訪問的功能,易于理解和編程。

            LabVIEW SQL Toolkit 又稱為LabVIEW DatabaseConnectivity Toolkit,是專門用于數(shù)據(jù)庫訪問的附加工具包,它涵蓋了數(shù)據(jù)庫操作的所有功能,集成了一系列功能模塊,這些模塊封裝了數(shù)據(jù)庫的大多數(shù)操作和一些高級(jí)的數(shù)據(jù)庫訪問功能。其主要的功能包括:

           ?。?)支持ADO所支持的所有數(shù)據(jù)庫引擎;

           ?。?)支持所有與ODBC 或OLE DB 兼容的數(shù)據(jù)庫驅(qū)動(dòng)程序;

           ?。?)與SQL兼容;

           ?。?)可以將數(shù)據(jù)庫中Column Values 的數(shù)據(jù)類型轉(zhuǎn)換為標(biāo)準(zhǔn)LabVIEW Database Connectivity Toolset 的數(shù)據(jù)類型,進(jìn)一步增強(qiáng)了它的可移植性。

            基于LabVIEW SQL Toolkit 的豐富功能及諸多優(yōu)點(diǎn),本文選擇使用LabVIEW SQL Toolkit 來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的操作。

            2 應(yīng)用實(shí)例

            本文以油滴電量測試系統(tǒng)作為基于LabVIEW的數(shù)據(jù)庫訪問的應(yīng)用實(shí)例。油滴電量測試系統(tǒng)分為上位機(jī)和下位機(jī)2 部分,分別承擔(dān)總控平臺(tái)和測試終端的作用,總體結(jié)構(gòu)見圖1.該系統(tǒng)具有參數(shù)采集、存儲(chǔ)和數(shù)據(jù)分析等功能。下位機(jī)采用的是油滴儀、計(jì)時(shí)器、噴霧器等儀器進(jìn)行測量,測試數(shù)據(jù)通過無線通信模塊將數(shù)據(jù)傳送到上位機(jī),上位機(jī)是采用LabVIEW 2010圖形化編程平臺(tái)設(shè)計(jì),將下位機(jī)傳送來的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫,通過數(shù)據(jù)庫進(jìn)行訪問,實(shí)現(xiàn)對(duì)數(shù)據(jù)的分析與管理。

            

            基于LabVIEW 的總控臺(tái)由3部分組成:命令發(fā)送、總體進(jìn)度顯示、某一測試終端的詳細(xì)數(shù)據(jù)顯示。與第二和第三項(xiàng)功能相適應(yīng),需要對(duì)各個(gè)測試終端的數(shù)據(jù)進(jìn)行數(shù)據(jù)庫管理。

            軟件設(shè)計(jì)中,利用LabVIEW SQL Toolkit 對(duì)Micro-soft Access 數(shù)據(jù)庫進(jìn)行添加、修改、更新、刪除、查詢和分析,實(shí)現(xiàn)測試系統(tǒng)的數(shù)據(jù)管理功能。系統(tǒng)總體流程為:下位機(jī)采集數(shù)據(jù)并存儲(chǔ)在FLASH中,待上位機(jī)發(fā)送“數(shù)據(jù)接收”命令,下位機(jī)將依次把數(shù)據(jù)傳送到上位機(jī),上位機(jī)將數(shù)據(jù)存儲(chǔ)在名為“測試數(shù)據(jù)庫”的Microsoft Ac-cess 的數(shù)據(jù)庫中,操作人員通過“歷史數(shù)據(jù)查詢”或“圖像顯示歷史數(shù)據(jù)”功能模塊,查詢或分析某一顆油滴的測試數(shù)據(jù)。而操作人員在進(jìn)入此系統(tǒng)前需要注冊(cè)或登錄操作,在這里的登錄系統(tǒng)中同樣需要數(shù)據(jù)的存儲(chǔ)、匹配操作,需要對(duì)數(shù)據(jù)庫進(jìn)行訪問。圖2為系統(tǒng)數(shù)據(jù)顯示的程序前面板。

            

            軟件具體功能包括:一是將操作員編號(hào)、測試儀地址、測試電壓、油滴運(yùn)動(dòng)時(shí)間等基本數(shù)據(jù)添加到Micro-soft Access數(shù)據(jù)庫;二是對(duì)Microsoft Access 數(shù)據(jù)庫進(jìn)行查詢、修改、更新、刪除錯(cuò)誤的數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行分析。

            2.1 建立數(shù)據(jù)源

            LabVIEW 數(shù)據(jù)庫工具包只能操作數(shù)據(jù)庫,不能創(chuàng)建數(shù)據(jù)庫,所以必須借助第三方數(shù)據(jù)庫管理系統(tǒng),本文采用Access來創(chuàng)建數(shù)據(jù)庫。因?yàn)槲闹械臄?shù)據(jù)庫范例是油滴電量測試實(shí)時(shí)監(jiān)控系統(tǒng)(簡稱油滴電量測試系統(tǒng)),所以建立一個(gè)名為“測試數(shù)據(jù)庫。 mdb”的數(shù)據(jù)庫文件。

            然后是建立于數(shù)據(jù)庫的鏈接。在利用LabVIEW 數(shù)據(jù)庫工具包操作數(shù)據(jù)庫之前,需要先建立數(shù)據(jù)庫鏈接。

            鏈接數(shù)據(jù)庫的方法有2 種:利用ODBC(OpenDatabaseConnectivity)技術(shù)鏈接數(shù)據(jù)庫和利用Active 數(shù)據(jù)對(duì)象ADO(ActiveX Data Objects)技術(shù)鏈接數(shù)據(jù)庫。

            使用ODBC API 函數(shù)時(shí),需要?jiǎng)?chuàng)建數(shù)據(jù)源名DSN(Data Source Names)才能鏈接到實(shí)際數(shù)據(jù)庫。因此需要考慮移植問題,當(dāng)代碼發(fā)布到其他機(jī)器上時(shí),要手動(dòng)為其重新建立一個(gè)DSN.此外,Microsoft設(shè)計(jì)的ODBC標(biāo)準(zhǔn)只能訪問關(guān)系型數(shù)據(jù)庫,對(duì)于非關(guān)系型數(shù)據(jù)庫則無能為力。而ADO 是Microsoft 提出的應(yīng)用程序接口(API),用以訪問關(guān)系型或非關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)。

            ADO使用通用數(shù)據(jù)鏈接UDL(Universal DataLink)來獲得數(shù)據(jù)庫信息,即實(shí)現(xiàn)數(shù)據(jù)庫的鏈接[6].

            本文使用的是利用動(dòng)態(tài)數(shù)據(jù)對(duì)象ADO(ActiveXData Objects)技術(shù)鏈接數(shù)據(jù)庫。在“測試數(shù)據(jù)庫。mdb”

            所在的文件夾下點(diǎn)擊鼠標(biāo)右鍵→新建→Microsoft DataLink,并命名為“測試數(shù)據(jù)庫鏈接。udl”.或者通過另一種方法來建立。udl文件,在測試數(shù)據(jù)庫。mdb所在的文件夾下點(diǎn)擊鼠標(biāo)右鍵→新建→文本文檔,并命名為“測試數(shù)據(jù)庫鏈接。txt”,再將其后綴改為“.udl”即可。雙擊“測試數(shù)據(jù)庫鏈接。udl”,打開數(shù)據(jù)鏈接屬性對(duì)話框,在提供程序選項(xiàng)卡中選擇Microsoft Jet 4.0 OLE DB Provide.

            在接下來的鏈接選項(xiàng)卡中,選擇已經(jīng)建立好的數(shù)據(jù)庫文件,然后單擊“測試鏈接(T)”按鈕,就會(huì)鏈接成功。

            2.2 數(shù)據(jù)庫操作

            鏈接上數(shù)據(jù)庫之后,就可以對(duì)數(shù)據(jù)庫進(jìn)行操作了。

            對(duì)數(shù)據(jù)庫的操作主要有創(chuàng)建表格、刪除表格、添加記錄、查詢記錄等。本文主要介紹添加記錄、刪除記錄、查詢記錄和更新數(shù)據(jù)庫數(shù)據(jù)信息。

            2.2.1 添加記錄

            在使用本系統(tǒng)時(shí),第一次使用的操作員需要注冊(cè),操作員的注冊(cè)信息需要寫入數(shù)據(jù)庫以數(shù)據(jù)表的形式保存下來,以便操作員以后使用系統(tǒng)就可以直接登錄,下面說明如何向數(shù)據(jù)庫中寫入數(shù)據(jù)。

            與數(shù)據(jù)庫以及記錄集對(duì)象建立鏈接,獲取“測試數(shù)據(jù)庫鏈接。udl”文件的位置,使用DB Tools Open Connec-tion.vi創(chuàng)建鏈接。

            選擇寫入數(shù)據(jù)的數(shù)據(jù)表“ 用戶信息表”,利用DBTools Insert Data.vi獲取數(shù)據(jù)表的列名字。

            由DB Tools Insert Data.vi來實(shí)現(xiàn)添加記錄,它有三個(gè)主要的參數(shù):table(數(shù)據(jù)表名)告訴DB Tools InsertData.vi 向數(shù)據(jù)庫里的哪個(gè)表格插入數(shù)據(jù);data 告訴DBTools Insert Data.vi插入什么數(shù)據(jù);column對(duì)應(yīng)插入列的名字,其數(shù)據(jù)類型是一個(gè)字符串?dāng)?shù)組,而且它的數(shù)據(jù)來源于DB Tools Insert Data.vi獲得并輸出的數(shù)據(jù)。然后斷開與數(shù)據(jù)庫的鏈接。

            圖3是添加記錄的程序框圖

            

            2.2.2 刪除記錄

            在測試過程中存在著很多不確定性因素會(huì)導(dǎo)致測試結(jié)果出現(xiàn)偏差,這就需要將不合格的測試數(shù)據(jù)刪除,將符合要求的測試數(shù)據(jù)保存起來。

            對(duì)于刪除測試數(shù)據(jù)記錄的操作,可以使用數(shù)據(jù)庫高級(jí)操作,在LabVIEW 中執(zhí)行SQL 語言來實(shí)現(xiàn)數(shù)據(jù)刪除功能。刪除一條記錄的語法為:

            DELETE FROM table_name

            WHERE column_name = some_value

            圖4實(shí)現(xiàn)了刪除一條記錄的操作。

            

            2.2.3 查詢數(shù)據(jù)

            實(shí)驗(yàn)操作人員需要通過下位機(jī)將獲得的測試數(shù)據(jù)發(fā)送到PC 機(jī)的LabVIEW 測試系統(tǒng)中并通過LabVIEW保存到數(shù)據(jù)庫中,以便以后查看數(shù)據(jù)和數(shù)據(jù)的存檔。在本測試系統(tǒng)中,每個(gè)操作員的數(shù)據(jù)分為5組且每一組數(shù)據(jù)存放在一個(gè)數(shù)據(jù)表中,這樣要獲得某一個(gè)操作員的實(shí)驗(yàn)數(shù)據(jù)就需要從5個(gè)數(shù)據(jù)表中一次查詢到該操作員的數(shù)據(jù),再在LabVIEW前面板上顯示查詢結(jié)果。

            此處同樣需要首先建立鏈接,即利用DB Tools In-sert Data.vi獲取數(shù)據(jù)表的列名,并利用DB ToolsSelectData.vi 來讀取指定數(shù)據(jù)表中的所有數(shù)據(jù)。因?yàn)閺腄BTools Select Data.vi 讀出來的數(shù)據(jù)是動(dòng)態(tài)數(shù)據(jù)類型,需要通過Database Variant To Data.vi 函數(shù)把動(dòng)態(tài)數(shù)據(jù)類型轉(zhuǎn)換成正確的數(shù)據(jù)類型。

            通過以上步驟,已經(jīng)完成將指定數(shù)據(jù)表中的數(shù)據(jù)全部數(shù)據(jù)讀出并以正確的數(shù)據(jù)類型進(jìn)行顯示。

            在完成某一特定操作員的測試數(shù)據(jù)查詢工作時(shí),本文采用雙for循環(huán)嵌套,外部for循環(huán)的循環(huán)次數(shù)為5,再由內(nèi)部for循環(huán)依次查詢“測試數(shù)據(jù)1…5”表中的數(shù)據(jù),根據(jù)外部索引輸出數(shù)組的操作員編號(hào)列信息與前面板輸入的信息匹配,再利用指定操作員編號(hào)的索引值查找數(shù)據(jù)表中對(duì)應(yīng)的記錄信息,并插入到最后的“指定操作員數(shù)據(jù)”數(shù)組中。

            圖5為完整的查詢數(shù)據(jù)程序框圖。

            圖6 為直接從數(shù)據(jù)庫中讀取到的未經(jīng)過處理的數(shù)據(jù)顯示。

            圖7為經(jīng)過對(duì)數(shù)組數(shù)據(jù)進(jìn)行變換、處理得到的通常情況下數(shù)據(jù)記錄表格形式。

            

            

            

            2.2.4 數(shù)據(jù)更新

            以上過程已實(shí)現(xiàn)了數(shù)據(jù)的寫入,但對(duì)于某些需要實(shí)時(shí)同步修改的數(shù)據(jù),需要考慮數(shù)據(jù)更新問題。因?yàn)閿?shù)據(jù)庫要記錄用戶最后一次登錄系統(tǒng)的時(shí)間,所以當(dāng)用戶每次登錄系統(tǒng),系統(tǒng)都要將其在數(shù)據(jù)庫中的時(shí)間信息更改為當(dāng)前時(shí)間。

            這里同樣使用的是數(shù)據(jù)庫高級(jí)操作,在LabVIEW中執(zhí)行SQL 語言來實(shí)現(xiàn)數(shù)據(jù)更新功能。SQL 中更新一條記錄的語句是“update”,其語法為:

            UPDATE table_name

            SET column_name=new_value

            WHERE column_name=some_value

            圖8為更新時(shí)間的框圖程序。

            

            3 結(jié)語

            通過結(jié)合油滴電量測試系統(tǒng)的Access數(shù)據(jù)庫操作,本文實(shí)現(xiàn)了在LabVIEW 平臺(tái)下,利用Database Connec-tivity Toolkits 工具對(duì)Access 數(shù)據(jù)庫進(jìn)行實(shí)時(shí)操作,實(shí)現(xiàn)了數(shù)據(jù)的寫入、刪除、更新等實(shí)用功能,為類似的數(shù)據(jù)庫開發(fā)提供了可予借鑒的方法。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();