版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
I附錄:SQLite3部分函數(shù)調(diào)用返回值列表#defineSQLITE_OK0/*Successfulresult*//*beginning-of-error-codes*/#defineSQLITE_ERROR1/*SQLerrorormissingdatabase*/#defineSQLITE_BUSY5/*Thedatabasefileislocked*/#defineSQLITE_MISUSE21/*Libraryusedincorrectly*/#defineSQLITE_ROW100/*sqlite3_step()hasanotherrowready*/#defineSQLITE_DONE101/*sqlite3_step()hasfinishedexecuting*//*end-of-error-codes*/設(shè)計任務(wù)書設(shè)計題目:嵌入式數(shù)據(jù)庫的LabVIEW接口程序設(shè)計學(xué)院:專業(yè):班級:學(xué)生:指導(dǎo)教師(含職稱):專業(yè)負責(zé)人:設(shè)計的主要任務(wù)及目標研究SQIite數(shù)據(jù)庫的配置與操作;研究如何使用C#語言操作SQIite數(shù)據(jù)庫;以LabVIEW為平臺混合編程實現(xiàn)子VI調(diào)用SQIite數(shù)據(jù)庫。設(shè)計(論文)的基本要求和內(nèi)容符合SQL語言的基本語法規(guī)范;能準確運用SQL實現(xiàn)對數(shù)據(jù)庫的讀寫操作;選取流程工業(yè)數(shù)據(jù),實現(xiàn)子VI對數(shù)據(jù)庫的讀寫操作的基本指令。主要參考文獻BASTIDAH,PONCEP,RAMíREZR.ModelandControlforCoupledTanksUsingLabview[C]//Mechatronics,ElectronicsandAutomotiveEngineering(ICMEAE),2013InternationalConferenceon.IEEE,2013:127-133.張廣斌,宮金林,陳爽.SQLite嵌入式數(shù)據(jù)庫系統(tǒng)的研究與實現(xiàn)[J].單片機與嵌入式系統(tǒng)應(yīng)用,2008,(6).扶碧波,樊銳.虛擬儀器軟件開發(fā)方法的研究[J].化工自動化及儀表,2002,29(3).DOI:10.3969/j.issn.1000-3932.2002.03.010.進度安排設(shè)計(論文)各階段名稱起止日期1閱讀文獻,撰寫相關(guān)報告2完成文獻綜述,并做初步研究3根據(jù)課題,學(xué)習(xí)SQLite與C的基本內(nèi)容4以具體要求代碼實現(xiàn)5完成畢業(yè)論文基于Labview的耦合水箱模型與控制赫克托·巴斯蒂達,佩德羅·龐塞,里卡多·拉米雷斯,阿圖羅·莫利納墨西哥蒙特雷科技大學(xué)校園城摘要:本文提出的是一種數(shù)字PI控制器實現(xiàn)的耦合水箱系統(tǒng)液位控制。模型識別是以正弦信號在不同的頻率進行作為結(jié)果而獲的得波特圖應(yīng)用設(shè)計的控制器。Labview設(shè)計數(shù)字控制器的主要優(yōu)點是發(fā)出小的增益的,并允許獲得更好的性能參數(shù)可能性:調(diào)節(jié)時間和超調(diào)量。系統(tǒng)的非線性的數(shù)學(xué)模型與得到的實驗?zāi)P瓦M行比較。仿真所獲得結(jié)果和實現(xiàn)兩個PI控制器一樣,一個用于水箱系統(tǒng)(CE105MV)的控制模塊,另一個控制Labview的執(zhí)行情況。關(guān)鍵詞:波特圖,PI控制器,耦合水箱,Labview。一.引言許多工業(yè)過程,如石化,造紙,制藥和水處理等需要水箱液位控制系統(tǒng)。工業(yè)過程中的液體應(yīng)該被泵輸送,貯存在水箱,然后輸送到另一個水箱。通常水箱連接在一起,水位相互影響作用,這就需要對其進行控制。所用的主要控制策略是基于對PID控制器的設(shè)計,但很多時候,控制器優(yōu)化需要通過試驗和誤差才能實現(xiàn)。PID控制器的設(shè)計原理詳見[1],但這種設(shè)計僅用于一個水箱中??刂评碚撘驯挥脕砜刂埔何获詈纤涞确椒ㄉ婕氨粍覽2],穩(wěn)定的預(yù)測控制[3],滑動模式[4][5],神經(jīng)網(wǎng)絡(luò)[6],模型參考自適應(yīng)控制[7]和反饋線性[8],多數(shù)需要系統(tǒng)的數(shù)學(xué)模型。往往由于系統(tǒng)的復(fù)雜性,很難得到一個數(shù)學(xué)模型,以找到模型的方法是使用的頻率響應(yīng)。頻率響應(yīng)是一個方法,其中該系統(tǒng)行為的特征在于其響應(yīng)于正弦和余弦信號。在頻率響應(yīng)法中,該輸入信號頻率在一定范圍內(nèi)變化,來研究得到的反應(yīng)。盡管該系統(tǒng)的頻率響應(yīng)表示的瞬態(tài)響應(yīng)的定性圖像,頻率和瞬態(tài)響應(yīng)之間的相關(guān)性是間接的,除了在第二階系統(tǒng)[9]的情況。當(dāng)設(shè)計一個閉環(huán)系統(tǒng),在開環(huán)傳遞函數(shù)的頻率響應(yīng)的特性可以獲得對系統(tǒng)可接受的瞬態(tài)響應(yīng)特性的使用幾個設(shè)計標準來設(shè)置。使用波特圖進行識別的系統(tǒng)模型。波特圖是幅度和相位對一個正弦傳遞函數(shù)G(jω)的頻率的表示,它是一個系統(tǒng)的傳遞函數(shù)為正弦輸入在不同頻率的代表性。G(jω)的對數(shù)幅值的共同表示是20log|G(jω)|其中,對數(shù)的底數(shù)為10的分貝刻度的表示中所用的單位,通常簡寫分貝。在對數(shù)表示中,曲線被繪制在對數(shù)頻率標度及線性標度的任何幅度(以dB為單位)和相角(度)半對數(shù)紙上。使用波特圖的主要優(yōu)點是,幅度乘法變?yōu)榧臃?。有一個簡單的方法來近似的基礎(chǔ)上漸進近似曲線數(shù)幅度,這種做法,利用漸近線(直線),這是不夠的,如果你只需要對頻率響應(yīng)特性的一般信息。這是非常有益的使用對數(shù)標度來擴展低頻率范圍內(nèi),因為所述低頻的特性是那些用于慢速系統(tǒng)例如耦合水箱。本文涉及傳統(tǒng)PI設(shè)計控制器在頻域中。隨著它的三個條件對瞬態(tài)響應(yīng)和穩(wěn)定狀態(tài)下,PID動作控制器提供了許多簡單而有效的解決方案來解決現(xiàn)實世界的問題。PID控制器發(fā)明于1910年,齊格勒尼古拉斯提出調(diào)整方法在1942年,PID控制器的普及已經(jīng)成長了很多。PI控制器的傳遞函數(shù)通常是寫在由(1)給出的“平行”的形式,并通過給定的理想形式(2),(1)(2)其中,KP是比例增益,KI是積分增益,TI是積分時間常數(shù)。每一項的功能是?比例項,提供了一種控制動作正比于誤差信號與增益因子。?通過由積分給出低頻補償積分項減少了穩(wěn)態(tài)誤差。傳統(tǒng)的PI控制器的數(shù)字實現(xiàn)是通過采樣獲得的誤差信號和采樣系統(tǒng)產(chǎn)生控制器的輸出信號進行的。圖1是閉環(huán)數(shù)字PI控制器的系統(tǒng)圖。圖1.數(shù)字PI控制控制器的輸入E(t)是一個序列數(shù)據(jù),在e(KT)中,k=0,1,2,...從分析的角度來看,E(KT)為代表的一個理想的采樣器的輸出。數(shù)字控制器執(zhí)行的序列E(KT)的某些操作和生成輸出序列u(KT),它可以被認為是另一個完美取樣的輸出。控制器的傳遞函數(shù)可以寫成(3)本文安排如下:第一章介紹系統(tǒng),第三章展示近似的系統(tǒng)模型,第四章講一個數(shù)學(xué)模型,第五章描述控制器在頻域的設(shè)計,第六章講PI控制器的實現(xiàn)。二.系統(tǒng)說明所使用的耦合水箱系統(tǒng)由TecQuipmentLtd制造。型號CE105耦合水箱的裝置,包括兩個獨立的垂直槽,其通過流動通道相連。如圖2.系統(tǒng)具有三個旋轉(zhuǎn)閥,控制整個系統(tǒng)的流量的變化。閥門B和C提供直接排放到下面的貯存器B控制左側(cè)C控制右側(cè)水箱。旋轉(zhuǎn)閥可用于改變流動通道的截面積,從而改變它的水箱的流動特性。閥的變化的大小提供了一系列的物理和流動特性的選擇。相鄰的閥等級表示相對放電速率:從0到5(關(guān)閉到打開)。圖2.耦合儲水箱系統(tǒng)液位傳感器0至10V直流輸出對應(yīng)于0至250毫米泵的流量傳感器0至10V直流輸出對應(yīng)0?4400立方厘米/分鐘表1.傳感器規(guī)格每個水箱都配有感應(yīng)液面壓力的傳感器。泵的輸出由流量傳感器監(jiān)控。表1為傳感器的規(guī)格。圖3顯示的液位傳感器箱耦合實驗得到的特征圖,該圖顯示通過增加和減少的值的響應(yīng)液位。圖3.液位傳感器圖4.流量傳感器表征所述流量傳感器放置在入水箱1示于圖4.制造商的說明書[10]注意到,由于變化的制造某些傳感器可以有一個小的偏移小于0.5V三.近似模型系統(tǒng)執(zhí)行一個頻率掃描,以獲得輸出信號的L(液面高度的箱2)之間的比率,并在系統(tǒng)的輸入信號是所述泵的電壓V和由此得到的傳遞函數(shù)的系統(tǒng)的近似(4)閥門配置;閥門A=5,閥門B=1,閥門C=1.5系統(tǒng)的響應(yīng)是非常緩慢的,頻率施加低于0.1Hz,頻率范圍從0.00084Hz到0.0426Hz每隔0.0023Hz,利用Labview進行數(shù)據(jù)采集。圖5曲線為輸入和輸出信號,該模擬信號的幅值、相位角之間的差異用來繪制幅值和相位圖,這是用來找到一個傳遞函數(shù)的波特圖。圖5.系統(tǒng)響應(yīng)曲線輸出和輸入幅值之間的比率為分貝(dB),實驗數(shù)據(jù)經(jīng)過處理之后畫出如圖6所示的實驗波特圖及其近似二階系統(tǒng)二階系統(tǒng)的傳遞函數(shù)近似于實際系統(tǒng)響應(yīng)是(5)圖7.Simulink仿真模塊框圖驗證傳遞函數(shù)是在Simulink中使用一個正弦波和三角波比較的響應(yīng)與實驗得到的結(jié)果圖6.波特圖圖8.實驗和模擬的輸出圖8為實際的系統(tǒng)響應(yīng)和近似模型。四.?dāng)?shù)學(xué)模型提出的數(shù)學(xué)模型是通過描述整個系統(tǒng)的方程得到的,說明耦合水箱的情況是非線性的。圖9所示耦合水箱系統(tǒng)的原理圖。動態(tài)模型系統(tǒng)是通過與流入測定水箱(Qi)通過閥門C(Qc)離開來確定。這種關(guān)系由以下兩個方程描述,(6)(7)閥門被假定像標準銳孔[11],然流經(jīng)閥門與水箱的液面以下的方程,(8)(9)(10)圖9.耦合水箱示意圖其中:A是的截面積。a是閥孔的橫截面面積。C是閥門的流量系數(shù)。結(jié)合方程(6)至(10)得出(11)和(12)(11)(12)方程(11)和(12)是一階非線性微分方程組,以使其可用于控制系統(tǒng)的目的方程必須考慮有關(guān)在水箱所需的操作液位小的變化進行線性化。(13)(14)其中,H'是在正常操作液位,并且是常數(shù),h是關(guān)于液位的微小變化量。然后,對于變化量h,非線性方程組的微小變化(11)和(12)可通過直線相切近似在H'(8),(9)和(10),以相同的方式指向Qi包括:穩(wěn)定成分Q'i再加上變化量qi。然后等式(11)和(12)可被重寫成(15)(16)圖10.流量和液位曲線關(guān)系由公式(17)得出控制閥特性在液位H'的斜率,參照圖10。(17)由(17)改寫等式(15)和(16)(18)(19)當(dāng)液位恒定時,有qi=0,h1=0,h2=0,則方程(18)和(19)得到流量和液位的穩(wěn)態(tài)關(guān)系,其中(20)(21)符號變量數(shù)值A(chǔ)水箱截面積閥A截面積閥C截面積閥A的流量系數(shù)閥B,C的流量系數(shù)液位上限輸入電壓上限泵增益液位傳感器增益重力系數(shù)表2耦合儲水箱系統(tǒng)參數(shù)由(18)式減去(20)式,(19)式減去(21)式并定義由(19)求解H1,獲得時間導(dǎo)數(shù)并代入(18),然后重新排列給出的關(guān)于耦合水箱系統(tǒng)的線性二階微分方程。以拉普拉斯變換得出了耦合水箱系統(tǒng)的傳遞函數(shù),(22)又(23)Kp,Kh分別是水箱2的泵增益,傳感器電平增益;系統(tǒng)參數(shù)如表2[12]。最后由等式(22)給出傳遞函數(shù)是,(24)圖11.波特圖如圖11為式(5)和式(24)的傳遞函數(shù)的波特圖。五.控制器設(shè)計PI控制器的設(shè)計基于以下標準:10%最大超調(diào)量和600s的調(diào)節(jié)時間。超調(diào)百分比PO是的函數(shù)阻尼比ζ和由25式給出,對應(yīng)于10%的超調(diào)的阻尼是0.6706,因此相位裕度必須至少67℃。帶寬和穩(wěn)態(tài)時間的比值由下式給出(25)(26)在600秒的建立時間內(nèi)帶寬必須大于或等于0.0105弧度/秒。通過擬合比例增益帶寬為提高整體增益相位裕度應(yīng)的增加,積分增益大于0.01,產(chǎn)生一個小的相位裕度引起的瞬態(tài)響應(yīng)振蕩的增益設(shè)置,通過相位裕度和帶寬之間的協(xié)調(diào)。PI增益Kp=0.6058,Ki=0.0049。對于開環(huán)波特圖帶寬頻率對應(yīng)于約-7dB的增益的頻率。如圖12為開環(huán)控制系統(tǒng)波特圖。圖12.開環(huán)波特圖帶寬大于0.0105弧度/秒可以近似保證穩(wěn)定時間600秒,由于兩者之間的承諾參數(shù)所述相位裕度是比相位余量越小6度時成立,建立了相位裕度等于67度使得帶寬減少導(dǎo)致的沉降時間超過600秒。六.PI控制器的實現(xiàn)本節(jié)介紹數(shù)字和模擬PI控制器的實現(xiàn)。比例積分調(diào)節(jié)規(guī)律又稱PI調(diào)節(jié)規(guī)律。它既具有比例調(diào)節(jié)動作,又具有積分調(diào)節(jié)動作。比例作用快但是不能消除偏差。積分作用稍慢于比例作用,但最終可以消除偏差。積分作用相當(dāng)于在比例調(diào)節(jié)之后,再自動進行調(diào)整,故PI調(diào)節(jié)器又稱為再調(diào)調(diào)節(jié)器。調(diào)節(jié)器的輸出為比例作用和積分作用之和,而第二項多一個比例系數(shù)Kp,這是由于在PI調(diào)節(jié)器的結(jié)構(gòu)上,比例系數(shù)不僅影響到比例不分而且也影響到積分部分。這就是說這樣使偏差隨時間積累的速度加快了。使用測試模塊進行的模擬控制器(CE105MV)。增益利用旋鈕調(diào)整,允許最低值,它是為模塊測試中發(fā)現(xiàn)的增益,能夠在Matlab中的PI校正。增益的PI控制器的測試是:I=0.01和P=0.2。圖13(a)為閉環(huán)系統(tǒng)響應(yīng)步驟輸入。圖13(b)中得到的模擬和顯示響應(yīng)的增益設(shè)置在模塊(CE105MV)。圖13.PI控制器的響應(yīng)LabView編程PI控制器通過采集卡NI
USB-6009得到系統(tǒng)的輸出信號,程序把該信號與參考值比較計算PI控制器的輸出,控制器的輸出信號通過同一采集卡發(fā)送到系統(tǒng),如圖14所示的接線圖Labview自1986年推出以來,經(jīng)過十幾年的時間發(fā)展到以最新版本Labview8.6為核心,包括控制與仿真、高級數(shù)字信號處理、模糊控制和PID控制等眾多的附加軟件包,可運行于Windows,Linux,Sun和HP-HX等多種平臺。它主要的方便就是,一個硬件的情況下,可以通過改變軟件,就可以實現(xiàn)不同的儀器儀表的功能,非常方便,是相當(dāng)于軟件即硬件!現(xiàn)在的圖形化主要是上層的系統(tǒng),國內(nèi)現(xiàn)在已經(jīng)開發(fā)出圖形化的單片機編程系統(tǒng)(支持32位的嵌入式系統(tǒng),并且可以擴展的),Labview提供了種全新的編程方法,即采用編譯型圖形化編程語言G語言(GraphProgromming)。用戶圖14.接線圖設(shè)計好程序的框架之后,只需把系統(tǒng)提供的各種圖形化功能模塊連接起來,即可得到所需的應(yīng)用程序。Labview中的程序稱為虛擬儀器(virtual
instrument)程序,簡稱VI。VI程序?qū)崿F(xiàn)操作狀態(tài)選擇,傳遞函數(shù)的輸入,PID參數(shù)的調(diào)節(jié)與仿真,控制模型動態(tài)模擬,對實驗平臺的監(jiān)控操作。每個VI都由前面板、框圖程序和圖標/連接端口三部分組成。前面板就是圖形化用戶界面,用于設(shè)置輸入數(shù)值和觀察輸出值,框圖程序利用圖15.Labview程序圖形語言對定義在前面板上的控制量和指示量進行編程圖標/連接端口則可以把VI定義為一個子程序(subVI)使其能被別的VI調(diào)用。如圖15所示Labview程序,當(dāng)循環(huán)通過增加新的程序執(zhí)行偏差來放大誤差積分,然后誤差乘以積分增益,該程序確保了整體部分不超過5伏極限,有一種抗飽和部分能避免積分誤差部分的飽和度,此飽和極限為5伏,是處理該采集卡的最大輸出,由實際誤差和比例增益之間的乘積得到的比例部分,最后兩部分相加,并將結(jié)果發(fā)送到采集卡。圖16.閉環(huán)系統(tǒng)響應(yīng)PID參數(shù)整定方法可以分為理論計算法和工程整定法兩種。理論計算法要求必須知道各個環(huán)節(jié)的傳遞函數(shù),計算比較復(fù)雜。工程整定法是基于實驗和經(jīng)驗的方法,簡單易行,是工程實際經(jīng)常采用的方法。利用Labview控制仿真設(shè)計工具包和DSCModule工具包結(jié)合設(shè)計出控制模型的動態(tài)模擬界面,界面中的控制對象可以按照控制要求動態(tài)變化,其中液面和流量計可以按照調(diào)整好的PID參數(shù),按其控制規(guī)律動態(tài)變化,來模擬整個控制過程。Labview程序允許小積分增益,這可以測試從控制器的設(shè)計中獲得的增益。如圖16所示的閉環(huán)系統(tǒng)。七.結(jié)論通過頻率掃描所述模型以及耦合水箱系統(tǒng)的控制是取得并執(zhí)行常規(guī)的PI的結(jié)果顯示出優(yōu)異的性能。正弦信號分析不僅允許建立非線性系統(tǒng)模型,而且也被用于設(shè)計完整的PI控制器。所使用的方法包括分別通過Matlab進行模型驗證和Labview來實現(xiàn)。在Labview平臺中實現(xiàn)PI控制器可以采用小的比例和積分增益。由于緩慢的系統(tǒng)動力學(xué)原因,微控制器增益呈現(xiàn)出了優(yōu)異的成績,因此耦合水箱系統(tǒng)可以得到比使用原始的控制器(CE105MV)進行控制時更好的性能。所描述的方法可以更好的適用于具有一個不完整的數(shù)學(xué)描述的非線性系統(tǒng)。實驗?zāi)P秃蛿?shù)學(xué)模型之間的比較給出用于驗證實驗。使用Labview的數(shù)據(jù)采集系統(tǒng)生成一個波特圖是一個非常有用和友好的獲得建模和設(shè)計控制系統(tǒng)所需的試驗資料的方式。參考文獻[1]IvanHolicandVojtechVesely“RobustPIDControllerDesignforCoupled-TankProcess”18thInternationalConferenceonProcessControlJune14-17,TatranskaLomnicaSlovakia,2011.[2]Tanasa,Calofir.“Asimpled-datalevelcontrolofnolinearcoupled-tanks.”[3]Lopes,Filho.“AnLMIRobustPredictiveControlApproachAppliedinaCoupledTanksSystems.”[4]Benayache,Mahmoud.“Controllerdesingusingsecondorderslidingmodealgorithmwithanapplicationtoacoupled-tankliquid-levelsystem.”[5]Benayache,Alaoui,Bussy,Castelain“DesignandimplementationofslidingmodeControllerwithvaryingboundarylayerforacoupledtankssystem.”17thMediterraneanConferenceonControl&Automation,MakedoniaPalace,Thessaloniki,Greece,June24-16,2009,pp.1215-1220.[6]Aliasghary,Naderi,Ghasemzadeh,Pourazar.“DesignofRadialBasisFunctionNeuralNetworksControllerBasedonSlidingSurfaceforaCoupledTanksSystem.”[7]Kangwanrat,Tipsuwannaporn,Numsomran.“DesignofPIControllerUsingMRACTecniquesforCoupled-TanksProcess.”[8]Tahir,Iqbal,Mustafa.“ControlofNolinearCoupledThreeTankSystemusingFeedbackLinearization.”[9]OgataKatsuhito,Ingenieríadecontrolmoderna,Prentice-Hall,Mexico,1998.[10]CE105andCE105MVCoupledTanks.TecQuipment.[11]OgataKatsuhito,Dinamicadesistemas,PrenticeHall,Mexico,1987.[12]A.Boubakir,F.Boudjema,“AFuzzySlidingModeControllerUsingNonlinearSlidingSurfaceAppliedtotheCoupledTanksSystem”InternationalJournalofFuzzySystem,Vol.10,No.2,June2008,pp.112-118.文獻綜述——嵌入式數(shù)據(jù)庫的LabVIEW接口程序設(shè)計摘要:傳統(tǒng)的數(shù)據(jù)庫不能用于嵌入式系統(tǒng)的數(shù)據(jù)管理。然而,開源嵌入式數(shù)據(jù)庫SQLite則因為其優(yōu)勢能更好的滿足嵌入式系統(tǒng)的需求。LabVIEW是目前國際上應(yīng)用最廣泛的虛擬儀器開發(fā)環(huán)境之一,主要應(yīng)用于儀器控制、測試測量、快速開發(fā)等領(lǐng)域,并可以適用于多種不同的操作平臺。以LabVIEW為平臺混合編程可以實現(xiàn)sub-VI調(diào)用SQLite數(shù)據(jù)庫。關(guān)鍵詞:嵌入式數(shù)據(jù)庫;SQLite;虛擬儀器;LabVIEW.Abstract:Thetraditionaldatabasecannotbeusedforthedatamanagementofembeddedsystems.However,theopen-sourceembeddeddatabaseSQLitecanmeettheneedsofembeddedsystemsbetterbecauseofitsadvantages.LabVIEWisoneofthemostwidelyusedvirtualinstrumentdevelopmentenvironmentusedintheworldatpresent,oneofthemainapplicationintheinstrumentcontrol,testandmeasurement,rapiddevelopment,andotherfields,andcanbeappliedtoavarietyofdifferentoperatingplatform.HybridprogrammingbasedonLabVIEWplatformachievesub-VIcallingSQLitedatabase.Keywords:embeddeddatabase;SQLite;virtualinstrument;LabVIEW.引言在計算機技術(shù)的飛速發(fā)展的當(dāng)下,嵌入式系統(tǒng)成為當(dāng)前IT行業(yè)的焦點之一,已被廣泛應(yīng)用于各個領(lǐng)域。更多的用戶群也越來越希望能對嵌入式產(chǎn)品中的數(shù)據(jù)進行更有效的管理。嵌入式數(shù)據(jù)庫便是一個非常有效的工具,它能夠使用戶在嵌入式產(chǎn)品中方便地插入、刪除或修改數(shù)據(jù),按照用戶要求對數(shù)據(jù)進行排序查詢,還具有如數(shù)據(jù)加密這樣更實用的功能[1-3]。SQLite是2000年開發(fā)出來的一種中小型嵌入式數(shù)據(jù)庫,可以較為方便地運用于嵌入式系統(tǒng)中。它的源代碼完全開放,可以免費用于任何用途,包括商業(yè)目的。把嵌入式數(shù)據(jù)庫SQLite應(yīng)用于嵌入式系統(tǒng)中進行數(shù)據(jù)維護管理,不僅可以使程序的運行效率大大提高,還會讓源程序具有更好的可讀性和可維護性。LabVIEW是一種程序開發(fā)環(huán)境,類似于C和BASIC開發(fā)環(huán)境,但是LabVIEW與其他計算機語言的顯著區(qū)別是:其他計算機語言都是采用基于文本的語言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語言G編寫程序,產(chǎn)生程序是框圖的形式[4,5],所以嘗試用LabVIEW開發(fā)嵌入式數(shù)據(jù)庫更加方便快捷,具有更加廣闊的發(fā)展前景。SQLite和LabVIEW的研究及現(xiàn)狀嵌入式系統(tǒng)在國內(nèi)的研發(fā)也是近年來才起步的,然而發(fā)展極為迅速。但隨著應(yīng)用領(lǐng)域的不斷擴展,面臨需要處理的數(shù)據(jù)量也在不斷增加,文本式的數(shù)據(jù)管理模式漸漸呈現(xiàn)出局限性,成了系統(tǒng)研發(fā)的瓶頸,對數(shù)據(jù)的整合管理需求上升到數(shù)據(jù)庫層面,嵌入式系統(tǒng)迫切需要數(shù)據(jù)庫技術(shù)支持[6]。SQLite的問世解決了以上難題,SQLite是D·理查德·希普開發(fā)的用一個小型C庫實現(xiàn)的一種強有力的嵌入式關(guān)系數(shù)據(jù)庫管理體制[7]。這是一個沒有外部依賴性,可以更容易地應(yīng)用于嵌入式系統(tǒng)中,運行在所有主要操作系統(tǒng),并支持大多數(shù)計算機語言的完全獨立[8,9]。它提供對SQL92的大多數(shù)支持:多表、索引、事務(wù)、視圖、觸發(fā)和一系列的用戶接口及驅(qū)動[10]。國內(nèi)虛擬儀器最早的研究是從引進消化NI的產(chǎn)品開始的。國家自然科學(xué)基金委員會也曾將虛擬儀器研究作為現(xiàn)代機械工程科學(xué)前沿學(xué)科之一,列入為“十五”期間優(yōu)先資助領(lǐng)域。目前有些研究已取得可喜成績,如863項目“虛擬儀器關(guān)鍵技術(shù)的研究及其產(chǎn)業(yè)化”,所研制的“一體化虛擬儀器”就是一種不同于歐美虛擬儀器的技術(shù)。這項成果表明我國在虛擬儀器方面走出一條自主創(chuàng)新的路子,并成為國際上嵌入式一體化虛擬儀器研發(fā)的先行者[10]。LabVIEW是美國NI公司推出的一種基于G語言的虛擬儀器軟件開發(fā)工具。是目前應(yīng)用最廣、發(fā)展最快、功能最強的圖形化軟件開發(fā)集成環(huán)境。但虛擬儀器軟件亦存在其不足,如不適于或不擅長于完成大量數(shù)據(jù)處理的任務(wù);不能調(diào)用系統(tǒng)程序?qū)崿F(xiàn)底層操作等。在虛擬儀器系統(tǒng)開發(fā)中若遇到這類問題,就可利用虛擬儀器軟件所提供的與傳統(tǒng)編程語言(如C語言)的接口,將其不擅長或不易實現(xiàn)的任務(wù)通過能夠或更適于完成此類任務(wù)的其他編程語言來實現(xiàn)[12,13]。在本次課題中需要以LabVIEW為平臺混合編程實現(xiàn)子VI調(diào)用Sqlite數(shù)據(jù)庫,此時就可通過在LabVIEW中調(diào)用C來實現(xiàn),實踐證明該方法高效易行,是增強LabVIEW整體功能的一條相當(dāng)可靠的途徑。接口程序設(shè)計方法通常的應(yīng)用中,對數(shù)據(jù)的操作用到的都是數(shù)據(jù)庫的最基本功能,如建立表格、查詢、修改、插入、刪除、排序等等。精干高效的SQLite完全能夠滿足這些功能要求,并且它的API極其易于使用,只需要三個用來執(zhí)行SQL和獲得數(shù)據(jù)的函數(shù)。首先,要提供文件和訪問模式用來調(diào)用sqlite_open()連接數(shù)據(jù)庫。然后,執(zhí)行一個callback函數(shù),SQLite通過對每個記錄執(zhí)行callback函數(shù)獲得從數(shù)據(jù)庫那里得到的結(jié)果。最后,如果執(zhí)行一個SQL查詢并獲得一個callback函數(shù)的指針,可以調(diào)用aqlite_exec()。使用完畢后可以調(diào)用sqlite_close()來斷開與數(shù)據(jù)庫的連接[14]。以下是C語言利用SQLite提供的API函數(shù)來完成與數(shù)據(jù)庫的交互過程:Sqlite3*db=sqlite3open("mydb",0777,&errmsg);M打開數(shù)據(jù)庫文件ret=sqlite3-exec(db,qry,null,null,&errmsg);MSQL語句的執(zhí)行程序Sqlite3close(db);M關(guān)閉數(shù)據(jù)庫將應(yīng)用程序通過交叉編譯器編譯后若想取回SQL語句訪問數(shù)據(jù)庫的結(jié)果,就要對每一個記錄執(zhí)行回調(diào)函數(shù)call-back()[15]。LabVIEW中包含了豐富的子程序和函數(shù)庫,如數(shù)據(jù)采集等,利用這些函數(shù)和子程序,用戶可快速建立起自己的采集控制系統(tǒng),但是在很多系統(tǒng)中,從采集的數(shù)據(jù)到輸出的控制信號之間需要經(jīng)過大量和復(fù)雜的數(shù)學(xué)計算,而這時用傳統(tǒng)程序語言(如C語言)的文字編程方式則顯得更簡潔、高效[16]。CIN(CodeInterfaceNode)是LabVIEW調(diào)用外部語言代碼的一種方法,在塊圖表表單中CIN表現(xiàn)為一個具有輸入輸出端口的圖標,用可將需要調(diào)用的C代碼編譯成LabVIEW所能識別的代碼格式后和此節(jié)點相連。當(dāng)程序執(zhí)行到此節(jié)點時,LabVIEW將會自動調(diào)用與此節(jié)點相關(guān)聯(lián)的外部代碼,并向CIN傳遞特定的數(shù)據(jù)結(jié)構(gòu),用戶可以向CIN傳遞任意復(fù)合的數(shù)據(jù)結(jié)構(gòu)[17],由于LabVIEW中數(shù)據(jù)的存儲格式遵循了C語言的數(shù)據(jù)存儲格式,二者完全相同,所以可以通過LabVIEW和C語言的混合編程實現(xiàn)子VI調(diào)用SQLite數(shù)據(jù)庫,實現(xiàn)對數(shù)據(jù)庫的讀寫操作等。結(jié)論SQLite數(shù)據(jù)庫在性能上有很多獨特優(yōu)勢,尤其實性好,空間占用少,安全可靠成本低,對于嵌入式系統(tǒng)開發(fā)方面是很好的數(shù)據(jù)平臺;但SQLite是引擎式數(shù)據(jù)庫,不適合用來做C/S開發(fā),頻繁并行讀寫時,會發(fā)生數(shù)據(jù)沖突,因此不能多個進程同時運作,但是只要揚長避短,取其精華,SQLite則是理想的嵌入式數(shù)據(jù)庫產(chǎn)品。LabVIEW和C語言接口的方法使用方便,可以根據(jù)實際應(yīng)用的需要,充分利用C語言及其編譯器的優(yōu)勢來擴展LabVIEW的功能,從而提高了LabVIEW的數(shù)據(jù)處理能力,同時也能極大地增強LabVIEW與其他應(yīng)用程序之間的數(shù)據(jù)共享能力,具有較為理想的發(fā)展前景。參考文獻BastidaH,PonceP,RamírezR,etal.ModelandControlforCoupledTanksUsingLabVIEW[C]//Mechatronics,ElectronicsandAutomotiveEngineering(ICMEAE),2013InternationalConferenceon.IEEE,2013:127-133.魏海燕,楊建新,郁鼎鑫等.基于LabVIEW的虛擬儀器開發(fā);《機械工程師》.2000,(04):50-51.倪天龍,張賢高,王培.數(shù)據(jù)庫SQLite在嵌入式系統(tǒng)中的應(yīng)用[J].單片機與嵌入式系統(tǒng)應(yīng)用,2005,(10):35-37.唐敏,宋杰.嵌入式數(shù)據(jù)庫SQLite的原理與應(yīng)用[J].電腦知識與技術(shù),2008,(04):600-601.林靜,林振宇,鄭福仁.LabVIEW虛擬儀器程序設(shè)計從入門到精通.人民郵電出版社,2010,(7):37-39.管希萌,劉瑤,徐麗仙,田永曄.嵌入式數(shù)據(jù)庫SQLite應(yīng)用研究.《揚州教育學(xué)院學(xué)報》2008,(03):18-21.JunyanL,ShiguoX,YijieL.ApplicationResearchofEmbeddedDatabaseSQLite[C].//InformationTechnologyandApplications,Ifita09,InternationalForumon.IEEE,2009:539-543.DavidZhang,OuShu-yun,"ApplicationofEmbeddedDatabase",SCMandapplicationofembeddedsystem,2008,7,pp.5-7.WanMa-ning,GuanYong-han,XiangJun,"ResearchonTypicalTechnologiesofembeddeddatabase-SQLiteandBerkeleyDB",InformationofMicrocomputer,2006,22(1-2),pp.91-93.李震,柯旭貴,汪云祥.虛擬儀器的發(fā)展歷史、研究現(xiàn)狀與展望[J].安徽工程科技學(xué)院學(xué)報,2005,18,(4):1-4.王京謙,萬蒞新.開源嵌入式數(shù)據(jù)庫Berkeley和SQLite嵌入式數(shù)據(jù)庫技術(shù)[J].單片機與嵌入式系統(tǒng)應(yīng)用,2005,(2):57-59.楊磊.LabVIEW程序設(shè)計與應(yīng)用.電子工業(yè)出版社,第二版,2005:74-75.GaryW.Johnso,RichardJennings."LabVIEWGraphicalProgramming",McGraw-HillProfessional.2001:117-120.張廣斌,宮金林,陳爽.SQLite嵌入式數(shù)據(jù)庫系統(tǒng)的研究與實現(xiàn)[J].單片機與嵌入式系統(tǒng)應(yīng)用.2006,(06):11-13.包理群,呂登峰,侯志偉.嵌入式數(shù)據(jù)庫在工業(yè)控制系統(tǒng)中的應(yīng)用[J].計算機應(yīng)用與軟件,2014,(02):254-255.李俊,陳湘波.LabVIEW與C語言的混合編程[J].自動化與儀器儀表,2011,(05):62-64.蒯銳.LabVIEW中調(diào)用C語言研究與實現(xiàn).計算機應(yīng)用與軟件.2007,(05):188-191.摘要近年來隨著嵌入式系統(tǒng)迅速發(fā)展,SQLite數(shù)據(jù)庫在數(shù)據(jù)整合管理方面給予了嵌入式系統(tǒng)強大的技術(shù)支持,本課題旨在設(shè)計開發(fā)嵌入式數(shù)據(jù)庫SQLite與LabVIEW的接口程序。本文首先介紹了LabVIEW圖形化開發(fā)環(huán)境和虛擬現(xiàn)實技術(shù)的現(xiàn)狀與發(fā)展,針對其各自特點及優(yōu)勢進行了探討,然后簡明扼要的概括了SQLite數(shù)據(jù)庫的特點及優(yōu)勢,并確定選題的研究意義;其次通過對LabVIEW各類控件及接口,C#語言編程技術(shù)及SQLite數(shù)據(jù)庫的幾種DLL文件的技術(shù)分析,提出了幾種可以完成接口程序設(shè)計的方案,并結(jié)合自身實際情況及方案可完成度,總結(jié)出了設(shè)計開發(fā)接口程序的總體設(shè)計方案;接下來嚴格按照設(shè)計方案進度開始設(shè)計程序,經(jīng)過前期的摸索,逐步實現(xiàn)了基礎(chǔ)程序模塊設(shè)計,從新建數(shù)據(jù)庫開始,依次完成了創(chuàng)建表格、插入數(shù)據(jù)、修改表格內(nèi)容、刪除等基本操作,并最終實現(xiàn)數(shù)據(jù)庫查詢反饋等重要功能。課題最后使用LabVIEW將自行設(shè)計的程序生成了安裝文件和可執(zhí)行程序(EXE)供用戶使用,實現(xiàn)用戶對數(shù)據(jù)庫的基本操作及維護,繼而完成本課題預(yù)期目的,證明了該設(shè)計的可行性。關(guān)鍵詞:嵌入式數(shù)據(jù)庫;SQLite;虛擬儀器;LabVIEW
ABSTRACTInrecentyears,SQLitedatabasegaveembeddedsystemapowerfultechnicalsupportindataintegrationmanagementwiththerapiddevelopmentofembeddedsystem.ThecontentofthisdissertationinvolvesthedesignanddevelopmentoftheinterfaceprogrambetweenLabVIEWandSQLite.Firstly,thethesisintroducesLabVIEWgraphicaldevelopmentenvironment,thepresentsituationanddevelopmentofvirtualrealitytechnology,theircharacteristicsandadvantagesarediscussedrespectively,basedonwhichtheresearchpurportisdecided,ThensuccinctlysumsupthecharacteristicsandadvantagesofSQLitedatabase,andidentifyingtheresearchsignificanceofthistopic;Secondly,byanalyzingthetechnicalofvarioustypesofcontrolsandinterfacesforLabVIEW,C#languageprogrammingandDLLfilesofSQLitedatabase,severalschemesfordesigningtheinterfaceprogramaresummarized.Combinedwithmyownactualsituationandthecompletingdegreeofprograms,sumsupthedesignanddevelopmentoftheoveralldesignfortheinterfaceprogram.Next,starttoprogramthedesignprocessstrictlyaccordingtothedesignplan,aftertheearlyexploration,Graduallyachievethefoundationprogrammoduledesign,followedbycompletingthecreationofatable,insertthedata,modifytablecontents,deletingandotherbasicoperations,andultimatelytheimportantfunctionofthedatabasequeryfeedback.Finally,thethesisgenerateaself-designedprogramtotheinstallationfilesandexecutable(EXE)forusersbyusingLabVIEW,achievingthebasicoperationandmaintenanceofthedatabaseusersandthencompletingtheintendedpurposeofthisprojecttoprovethefeasibilityofthedesign.Keywords:embeddeddatabase,SQLite,virtualinstrument,LabVIEW目錄前言 1第1章緒論 2第1.1節(jié)課題研究背景 2第1.2節(jié)LabVIEW和SQLite發(fā)展現(xiàn)狀 31.2.1LabVIEW的發(fā)展 31.2.2SQLite現(xiàn)狀 3第1.3節(jié)課題意義和主要內(nèi)容 4第2章接口程序設(shè)計技術(shù)分析 5第2.1節(jié)SQLite接口技術(shù)分析 5第2.2節(jié)解析LabVIEW調(diào)用技術(shù) 5第2.3節(jié)接口程序設(shè)計框架 6第3章基礎(chǔ)程序模塊設(shè)計實現(xiàn) 8第3.1節(jié)LabVIEW訪問SQLite數(shù)據(jù)庫 83.1.1創(chuàng)建(或打開已有)數(shù)據(jù)庫 83.1.2執(zhí)行SQL語句 93.1.3LabVIEW和DLL之間參數(shù)配置說明 133.1.4對數(shù)據(jù)庫進行基本操作 14第3.2節(jié)LabVIEW調(diào)用C#DLL文件訪問SQLite數(shù)據(jù)庫 173.2.1C#創(chuàng)建和調(diào)用DLL 173.2.2LabVIEW訪問C#編寫的DLL 21使用VS2010生成預(yù)定的DLL文件 21使用LabVIEW2014調(diào)用生成的dll 23建立工程子VI 24常見錯誤處理 28第4章接口程序設(shè)計實現(xiàn)及調(diào)試 30第4.1節(jié)生成可供調(diào)用的DLL文件 30第4.2節(jié)創(chuàng)建工程編寫程序VI 324.2.1逐個編寫子VI 324.2.2主程序功能實現(xiàn) 35第4.3節(jié)生成可執(zhí)行文件 384.3.1生成前準備 384.3.2生成可執(zhí)行程序 38結(jié)論 42參考文獻 43致謝 45前言在計算機技術(shù)的飛速發(fā)展的當(dāng)下,嵌入式系統(tǒng)成為當(dāng)前IT行業(yè)的焦點之一,已被廣泛應(yīng)用于各個領(lǐng)域。更多的用戶群也越來越希望能對嵌入式產(chǎn)品中的數(shù)據(jù)進行更有效的管理。嵌入式數(shù)據(jù)庫便是一個非常有效的工具,它能夠使用戶在嵌入式產(chǎn)品中方便地插入、刪除或修改數(shù)據(jù),按照用戶要求對數(shù)據(jù)進行排序查詢,還具有如數(shù)據(jù)加密這樣更實用的功能。嵌入式系統(tǒng)在國內(nèi)的研發(fā)也是近年來才起步的,然而發(fā)展極為迅速。但隨著應(yīng)用領(lǐng)域的不斷擴展,面臨需要處理的數(shù)據(jù)量也在不斷增加,文本式的數(shù)據(jù)管理模式漸漸呈現(xiàn)出局限性,成了系統(tǒng)研發(fā)的瓶頸,對數(shù)據(jù)的整合管理需求上升到數(shù)據(jù)庫層面,嵌入式系統(tǒng)迫切需要數(shù)據(jù)庫技術(shù)支持。SQLite是2000年開發(fā)出來的一種中小型嵌入式數(shù)據(jù)庫,可以較為方便地運用于嵌入式系統(tǒng)中。它的源代碼完全開放,可以免費用于任何用途,包括商業(yè)目的。把嵌入式數(shù)據(jù)庫SQLite應(yīng)用于嵌入式系統(tǒng)中進行數(shù)據(jù)維護管理,不僅可以使程序的運行效率大大提高,還會讓源程序具有更好的可讀性和可維護性。LabVIEW是一種程序開發(fā)環(huán)境,類似于C和BASIC開發(fā)環(huán)境,但是LabVIEW與其他計算機語言的顯著區(qū)別是:其他計算機語言都是采用基于文本的語言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語言G編寫程序,產(chǎn)生程序是框圖的形式,所以嘗試用LabVIEW開發(fā)嵌入式數(shù)據(jù)庫更加方便快捷,具有更加廣闊的發(fā)展前景。通常的應(yīng)用中,對數(shù)據(jù)的操作用到的都是數(shù)據(jù)庫的最基本的功能,如建立表格、查詢等等。精干高效的SQLite完全能夠滿足這些功能要求,并且它的API極其易于使用,只需要三個用來執(zhí)行SQL和獲得數(shù)據(jù)的函數(shù)。LabVIEW和C#語言接口的方法使用方便,可以根據(jù)實際應(yīng)用的需要,充分利用C#語言及其優(yōu)勢來擴展LabVIEW的功能,與此同時混合編程的完成極大增強了LabVIEW同其他應(yīng)用程序之間的數(shù)據(jù)傳輸與共享能力。根據(jù)上述現(xiàn)狀,本課題設(shè)計了基于LabVIEW的SQLite數(shù)據(jù)庫接口程序,通過充分認知LabVIEW中的與其他應(yīng)用程序之間的API,搭建起調(diào)用SQLite數(shù)據(jù)庫的DLL文件的子VI,繼而使用DLL文件內(nèi)已經(jīng)封裝的多個函數(shù)以LabVIEW為平臺編寫程序完成對數(shù)據(jù)庫的基本操作,如建立表格、查詢、修改、插入、刪除、排序等等,通過上述程序能夠很好地充分利用SQLite并實現(xiàn)數(shù)據(jù)庫最強大的查詢管理功能。第1章緒論第1.1節(jié)課題研究背景虛擬儀器是計算機、現(xiàn)代測試、儀器儀表等技術(shù)結(jié)合的產(chǎn)物,通過應(yīng)用程序?qū)⒂嬎銠C與功能模塊硬件結(jié)合起來,采用交互式圖形界面操作計算機來控制各種功能模塊,完成對被測試量的采集、分析處理等任務(wù),突破了傳統(tǒng)儀器在功能單一和數(shù)據(jù)交換不易等方面的局限[1,2]。而隨著嵌入式系統(tǒng)的廣泛應(yīng)用及用戶對數(shù)據(jù)處理和管理需求的不斷提高,嵌入式數(shù)據(jù)庫技術(shù)與各種智能設(shè)備的緊密結(jié)合得到重視,嵌入式數(shù)據(jù)庫除了具有傳統(tǒng)數(shù)據(jù)庫的主要功能,還具有嵌入式和支持移動技術(shù)兩種特性,因此通常被用在掌上電腦、移動電話等嵌入式設(shè)備中[3,4]。通過LabVIEW與C混合編程的接口程序調(diào)用嵌入式數(shù)據(jù)庫的技術(shù)不再受單一操作系統(tǒng)的限制,可以隨時隨地處理業(yè)務(wù)、傳遞信息,可以說,這種技術(shù)的發(fā)展能提高數(shù)據(jù)信息接入的普遍性,使人們可以隨時隨地獲取信息,實現(xiàn)更為快捷的信息傳遞[5-7]。嵌入式系統(tǒng)的研發(fā)是近年來才起步的,然而其發(fā)展極為迅速,隨著應(yīng)用領(lǐng)域的不斷擴展,面臨需要處理的數(shù)據(jù)量也在不斷增加,對數(shù)據(jù)的整合管理需求上升到數(shù)據(jù)庫層面,嵌入式系統(tǒng)迫切需要數(shù)據(jù)庫技術(shù)支持,而SQLite的問世則解決了以上難題。SQLite[8-11]沒有外部依賴性,更容易地應(yīng)用于嵌入式系統(tǒng)中,可以運行在所有主流操作系統(tǒng)中,它提供對SQL的大多數(shù)支持,包括多表、索引、事務(wù)、視圖、觸發(fā)和一系列的用戶接口及驅(qū)動,SQLite的設(shè)計目標是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了[12];SQLite的移植性很好,它的數(shù)據(jù)庫文件在其所支持的所有操作系統(tǒng)、硬件體系結(jié)構(gòu)和字節(jié)順序上都是兼容的二進制且;作為程序庫,SQLite提供完整的最簡單最易用的API,不僅具有很好的文檔而且很直觀,它的設(shè)計有助于從多方面定制SQLite,例如可以通過C#語言實現(xiàn)自己定制的SQL函數(shù),更重要的是開源社區(qū)創(chuàng)建了很多種語言和程序庫用來與SQLite交互[13-15],例如C#、LabVIEW等。以上的一些特性使其成為強大而靈活的關(guān)系型數(shù)據(jù)庫前端,簡單而緊湊的B-tree后端。此外,提供的源代碼模塊清晰,注釋完整,并且易理解、易定制,方便獲取,可以根據(jù)需要重編譯應(yīng)用于其他平臺,例如LabVIEW等。第1.2節(jié)LabVIEW和SQLite發(fā)展現(xiàn)狀1.2.1LabVIEW的發(fā)展近些年,世界各國的許多大型自動測控和儀器公司均相繼研發(fā)了不少的虛擬儀器開發(fā)平臺,但最早和最具影響力的還是美國NI公司的圖形化開發(fā)平臺LabVIEW,而作為新興技術(shù),虛擬儀器在國內(nèi)處于起步階段,在數(shù)據(jù)處理軟件如測量結(jié)果的頻譜分析,快速傅里葉變換,各種數(shù)字濾波器等方面做出了一些成就。例如用LabVIEW編制的虛擬示波器的出現(xiàn)改變了原有示波器的整體設(shè)計思路,用軟件代替了硬件,將傳統(tǒng)儀器由硬件實現(xiàn)的數(shù)據(jù)分析與顯示功能,改由功能強大的計算機及其顯示器來完成,使工程技術(shù)人員可以用一部筆記本電腦到現(xiàn)場就可輕松完成信號的采集、處理及頻譜分析和波形分析[16-18]。而LabVIEW本身使用的是圖形化編輯語言G語言編寫程序,以框圖的形式生成程序,是目前應(yīng)用最廣、發(fā)展最快、功能最強的圖形化軟件開發(fā)集成環(huán)境。但虛擬儀器軟件亦存在其不足,如不適于或不擅長于完成大量數(shù)據(jù)處理的任務(wù);不能調(diào)用系統(tǒng)程序?qū)崿F(xiàn)底層操作等,所以嘗試通過LabVIEW調(diào)用開發(fā)嵌入式數(shù)據(jù)庫更加方便快捷,既彌補了LabVIEW在這方面的不足,更充分利用了G語言編程方便快捷和SQLite開源靈活的特點,在數(shù)據(jù)處理,信息管理等方面具有更加廣闊的發(fā)展前景。1.2.2SQLite現(xiàn)狀SQLite嵌入式數(shù)據(jù)庫提供了以源碼發(fā)布的方式,要在眾多的硬件平臺進行移植,可以根據(jù)不同平臺對源碼進行交叉編譯來實現(xiàn)。嵌入式數(shù)據(jù)庫通常是與嵌入式操作系統(tǒng)及具體的應(yīng)用集成在一起,無需獨立運行數(shù)據(jù)庫引擎,由程序直接調(diào)用相應(yīng)的API就可實現(xiàn)對數(shù)據(jù)的存取操作。SQLite[19-21]是一個實現(xiàn)了內(nèi)置的進程型鏈接庫,它實現(xiàn)了自我包含,無服務(wù)器,零配置,事務(wù)型的SQL數(shù)據(jù)庫引擎,其完全免費的源代碼可以用于任何目的,包括商業(yè)軟件的開發(fā)。在項目開發(fā)中,筆者發(fā)現(xiàn)SQLite是以API函數(shù)庫的方式被軟件開發(fā)人員所調(diào)用的。隨著嵌入式數(shù)據(jù)庫SQLite在嵌入式設(shè)備和桌面產(chǎn)品中日益廣泛的使用,對于使用SQLite作為數(shù)據(jù)庫管理系統(tǒng)的軟件開發(fā)人員來說,能否準確的知道當(dāng)前數(shù)據(jù)庫的狀況,能否方便的調(diào)試和跟蹤數(shù)據(jù)庫的執(zhí)行,這對于減少數(shù)據(jù)庫設(shè)計方面的錯誤和縮短軟件產(chǎn)品的開發(fā)周期都是至關(guān)重要的。第1.3節(jié)課題意義和主要內(nèi)容虛擬儀器能通過應(yīng)用程序?qū)⒂嬎銠C與功能模塊硬件結(jié)合起來,采用交互式圖形界面操作計算機來控制各種功能模塊,完成對被測試量的采集、分析處理等任務(wù),突破了傳統(tǒng)儀器在功能單一和數(shù)據(jù)交換不易等方面的局限。嵌入式數(shù)據(jù)庫除了具有傳統(tǒng)數(shù)據(jù)庫的主要功能,還具有可移植性、緊湊性、簡單性、靈活性、可靠性和易用性等其他強大特性,更是一個非常有效的工具,它能夠使用戶在嵌入式產(chǎn)品中方便地插入、刪除或修改數(shù)據(jù),按照用戶要求對數(shù)據(jù)進行排序查詢,通過LabVIEW與C混合編程的接口程序調(diào)用嵌入式數(shù)據(jù)庫的技術(shù)不再受單一操作系統(tǒng)的限制,可以隨時隨地處理業(yè)務(wù)、傳遞信息,這種技術(shù)的發(fā)展能提高數(shù)據(jù)信息接入的普遍性,使人們可以隨時隨地獲取信息,實現(xiàn)更為快捷的信息傳遞。在本次課題中以LabVIEW為平臺混合編程實現(xiàn)子VI調(diào)用SQLite數(shù)據(jù)庫,此時就可通過在LabVIEW中調(diào)用C來實現(xiàn),實踐證明該方法高效易行,是增強LabVIEW整體功能的一條相當(dāng)可靠的途徑。事實證明,LabVIEW和嵌入式數(shù)據(jù)庫的廣泛應(yīng)用一定是未來嵌入式領(lǐng)域發(fā)展的一個重要方向,而SQLite以其體積小巧、功能強大、接口方便、開源免費等優(yōu)勢成為嵌入式數(shù)據(jù)庫領(lǐng)域的新寵。因此,嵌入式數(shù)據(jù)庫SQLite必將擁有廣闊的市場和極度良好的發(fā)展空間。本課題的主要任務(wù)是設(shè)計LabVIEW與嵌入式數(shù)據(jù)庫的接口程序,通過LabVIEW與C的混合編程更好的展示虛擬儀器與數(shù)據(jù)庫在編程和數(shù)據(jù)管理方面的強大功能。主要內(nèi)容:1. 查閱大量國內(nèi)外關(guān)于LabVIEW和嵌入式數(shù)據(jù)庫的理論研究和應(yīng)用方面的文獻,對課題進行全面系統(tǒng)地了解。2. 嵌入式數(shù)據(jù)庫的LabVIEW接口程序具體設(shè)計,主要包括:研究SQLite數(shù)據(jù)庫的配置與操作;研究如何使用C#語言操作SQLite數(shù)據(jù)庫;以LabVIEW為平臺編程實現(xiàn)子VI調(diào)用sqlite3.dll文件操作數(shù)據(jù)庫;利用C#語言編程生成符合SQL語言并能實現(xiàn)對數(shù)據(jù)庫進行操作的DLL文件,由LabVIEW平臺編程實現(xiàn)VI調(diào)用操作數(shù)據(jù)庫;程序完成以上功能后,將程序生成可執(zhí)行文件或者進一步地生成安裝文件。第2章接口程序設(shè)計技術(shù)分析第2.1節(jié)SQLite接口技術(shù)分析SQLite是一個小型的C程序庫,實現(xiàn)了獨立的、可嵌入的、零配置的SQL數(shù)據(jù)庫引擎,其特性包括事務(wù)操作是原子的,一致的,孤立的,并且持久的(ACID特性),它不像常見的客戶-服務(wù)器范例,但在大多數(shù)常見操作上比主流的客戶-服務(wù)器數(shù)據(jù)庫引擎更快;SQLite引擎不是個程序與之通信的獨立進程,而是連接到程序中成為它的一個主要部分。所以主要的通信協(xié)議是在編程語言內(nèi)的直接API調(diào)用,這在消耗總量、延遲時間和整體簡單性上有積極的作用,在設(shè)計具體的API函數(shù)之前,先簡要說明一下很多API函數(shù)中都用到的兩個重要的參數(shù)類型:sqlite3*和sqlite3stmt*,從數(shù)據(jù)庫打開開始,SQLite就要為sqlite3*這個類型準備內(nèi)存,直到數(shù)據(jù)庫關(guān)閉為止。當(dāng)數(shù)據(jù)庫打開時,sqlite3*類型的變量就代表了需要操作的數(shù)據(jù)庫;sqlite3stmt*數(shù)據(jù)類型記錄了一條已經(jīng)把SQL語句聲明解析了并用SQLite本身標記記錄的SQL語句。整個數(shù)據(jù)庫(定義、表、索引和數(shù)據(jù)本身)都在宿主主機上存儲在一個單一的dll文件中,該文件的源代碼在SQLiteHomePage主頁上是可以免費下載到的,不需要進行安裝和管理,內(nèi)部封裝簡單,易于使用的API函數(shù),并且可用于任何用途,它的簡單的設(shè)計是通過在開始一個事務(wù)的時候鎖定整個數(shù)據(jù)文件而完成的,內(nèi)建TCL綁定,另外提供可用于許多其它語言的綁定,這也為本課題提供了方便,可于LabVIEW平臺上直接通過自帶的調(diào)用庫函數(shù)節(jié)點(CallLibraryFunctionNode)調(diào)用。第2.2節(jié)解析LabVIEW調(diào)用技術(shù)LabVIEW是一種用圖標代替文本行創(chuàng)建應(yīng)用程序的圖形化編程語言。傳統(tǒng)文本編程語言根據(jù)語句和指令的先后順序決定程序執(zhí)行順序,而LabVIEW則采用數(shù)據(jù)流編程方式,程序框圖中節(jié)點之間的數(shù)據(jù)流向決定了VI及函數(shù)的執(zhí)行順序。LabVIEW提供很多外觀與傳統(tǒng)儀器類似的控件,可用來方便地創(chuàng)建用戶界面。用戶界面在LabVIEW中被稱為前面板。使用圖標和連線,可以通過編程對前面板上的對象進行控制。這就是圖形化源代碼。LabVIEW的圖形化源代碼在某種程度上類似于流程圖,因此又被稱作程序框圖代碼。但是現(xiàn)有的LabVIEW版本本身并不具備數(shù)據(jù)庫訪問功能,不能像VB、VC++、Delphi、PowerBuilder那樣非常方便的進行數(shù)據(jù)庫程序的開發(fā)。因此以LabVIEW編制的虛擬儀器系統(tǒng)需要其它輔助的方法來進行數(shù)據(jù)庫訪問。利用NI公司的附加工具包中的數(shù)據(jù)庫接口工具包LabVIEWSQLToolkit進行數(shù)據(jù)庫訪問。該工具包集成了一系列的高級功能模塊,這些模塊封裝了大多數(shù)的數(shù)據(jù)庫操作和一些高級的數(shù)據(jù)庫訪問功能。它的優(yōu)點是易于理解,操作簡單,用戶可以不學(xué)習(xí)SQL語法。缺點是需要另外購買且價格昂貴,無疑會增加系統(tǒng)成本。利用LabVIEW的ActiveX功能,調(diào)用MicrosoftADO對象,利用SQL語言實現(xiàn)數(shù)據(jù)庫的訪問。使用這種方法需要用戶對MicrosoftADO以及SQL語言有較深的了解。通過第三方開發(fā)的免費工具包LabSQL訪問。LabSQL利用MicrosoftADO以及SQL語言來完成數(shù)據(jù)庫訪問,將復(fù)雜的底層ADO及SQL操作封裝成一系列的LabSQLVis以供用戶使用。通過調(diào)用動態(tài)鏈接庫DLL(DynamicLinkLibrary)訪問。先利用其它語言如VisualC++編寫DLL,再利用LabVIEW的調(diào)用庫函數(shù)節(jié)點CLFN(CallingLibraryFunctionNode)調(diào)用此DLL訪問數(shù)據(jù)庫。但這種方法需要從底層進行復(fù)雜的編程才能實現(xiàn),對非專業(yè)編程人員來講是不現(xiàn)實的。利用中間文件存取數(shù)據(jù)。先將數(shù)據(jù)存入文件之中,待測量結(jié)束后再用專門的工具將數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫之中。這種方法需要磁盤文件作為中介,而且不具有實時性,不方便使用。針對上面提到的五種訪問數(shù)據(jù)庫的特點,結(jié)合SQLite的特點,擬采用C#編寫DLL文件實現(xiàn)對數(shù)據(jù)庫的訪問。第2.3節(jié)接口程序設(shè)計框架通過上兩節(jié)內(nèi)容的分析,本課題擬采用以下設(shè)計方法實現(xiàn)程序設(shè)計:首先以LabVIEW開發(fā)平臺編寫程序,程序VI包括3個部分:程序前面板、框圖程序和圖標/連接器。程序前面板用于用戶設(shè)置輸入數(shù)值和觀察輸出量,生成模仿傳統(tǒng)儀器的控制面板;每一個程序前面板都對應(yīng)著一段框圖程序,框圖程序用LabVIEW圖形編程語言編寫,類似傳統(tǒng)程序的源代碼,連接器是子程序SubVI被其它VI調(diào)用的接口。其次使用SQLite數(shù)據(jù)庫提供了完整的API接口,本次課題通過LabVIEW的API接口功能即調(diào)用庫函數(shù)節(jié)點(在程序框圖界面右鍵選擇互聯(lián)接口>庫與可執(zhí)行程序>調(diào)用庫函數(shù)節(jié)點)來實現(xiàn)對SQLite數(shù)據(jù)庫的操作。圖2?1是數(shù)據(jù)庫的操作流程。圖2·1:接口程序設(shè)計流程圖LabVIEW采用的是自上而下的模塊化編程方法,所生成的各個子程序有利于主程序的設(shè)計與實現(xiàn)。編輯完程序后,要在用戶的終端機器運行,有必要將該程序生成可執(zhí)行文件,或者進一步的生成安裝文件,因此課題最終結(jié)果應(yīng)創(chuàng)建應(yīng)用程序(EXE),生成安裝包和可執(zhí)行文件。第3章基礎(chǔ)程序模塊設(shè)計實現(xiàn)第3.1節(jié)LabVIEW訪問SQLite數(shù)據(jù)庫3.1.1創(chuàng)建(或打開已有)數(shù)據(jù)庫打開數(shù)據(jù)庫用到的是sqlite3_open()。函數(shù)原型如下:intsqlite3_open(constchar*filename,/*Databasefilename(UTF-8)*/sqlite3**ppDb/*OUT:SQLitedbhandle*/);通過該函數(shù)開始數(shù)據(jù)庫操作之前,需要輸入的參數(shù)是數(shù)據(jù)庫文件的完整路徑,例如:c:\test.db。 sqlite3**返回的是數(shù)據(jù)庫的操作句柄(引用),是一個32位有符號整型數(shù)據(jù)。函數(shù)返回值表示操作是否正確,如果返回SQLITE_OK(0)則表示操作正常。圖3·1:LabVIEW中打開數(shù)據(jù)庫節(jié)點圖3·2:sqlite3_open參數(shù)配置3.1.2執(zhí)行SQL語句SQLite執(zhí)行一條SQL語句需要三個步驟,與之相關(guān)的函數(shù)為:sqlite3_prepare()、sqlite3_step()、sqlite3_finalize(),即編譯SQL字節(jié)碼、執(zhí)行語句與銷毀字節(jié)碼,下面詳細的展示了這幾個函數(shù)的作用和用法。SQL語句聲明(編譯)SQLite中并不能直接識別SQL語句,在執(zhí)行SQL操作前需要先將SQL語句編譯成SQLite可識別的二進制字節(jié)碼,為此SQLite提供了sqlite3_prepare()函數(shù)來執(zhí)行SQL語句的編譯。sqlite3_prepare()函數(shù)原型為:intsqlite3_prepare(sqlite3*db,/*Databasehandle*/constchar*zSql,/*SQLstatement,UTF-8encoded*/intnByte,/*MaximumlengthofzSqlinbytes.*/sqlite3_stmt**ppStmt,/*OUT:Statementhandle*/constchar**pzTail/*OUT:PointertounusedportionofzSql*/);函數(shù)返回的參數(shù)Stmt是已成功編譯的二進制字節(jié)碼,提供給后續(xù)的操作函數(shù)使用,如圖3?4。圖3·3:LabVIEW中編譯SQL語句節(jié)點圖3·4:sqlite3_prepare參數(shù)配置使用sqlite3_prepare()接口函數(shù)訪問數(shù)據(jù)庫是當(dāng)前比較便捷的一種方法。注:輸入?yún)?shù)中只有第一條SQL語句才會被接口函數(shù)編譯。執(zhí)行SQL語句在SQL聲明準備好之后,需要調(diào)用sqlite3_step()函數(shù)來執(zhí)行SQL語句。sqlite3_step()函數(shù)原型:intsqlite3_step(sqlite3_stmt*);圖3·5:LabVIEW中執(zhí)行SQL語句節(jié)點成功執(zhí)行完sqlite3_step()后并不會返回SQLITE_OK(0),在執(zhí)行INSERT、UPDATE、CREATETABLE、DELETE等數(shù)據(jù)庫操作時,如果SQL語句執(zhí)行成功或者正常sqlite3_step()函數(shù)將返回SQLITE_DONE(101),否則將返回錯誤代碼。在執(zhí)行SELETE操作時,如果SQL返回了查詢結(jié)果,sqlite3_step()函數(shù)將返回SQLITE_ROW(100)。圖3·6:sqlite3_step參數(shù)配置圖3·7:LabVIEW中結(jié)束SQL語句節(jié)點圖3·8:sqlite3_finalize參數(shù)配置結(jié)束SQL語句在關(guān)閉數(shù)據(jù)庫之前,必須先將所有之前已經(jīng)準備好的聲明釋放并銷毀,在執(zhí)行了sqlite3_prepare()函數(shù)之后,任何時候都可以通過調(diào)用sqlite3_finalize()函數(shù)將一個準備好的SQL聲明銷毀。sqlite3_finalize()函數(shù)原型:intsqlite3_finalize(sqlite3_stmt*);關(guān)閉數(shù)據(jù)庫通過調(diào)用sqlite3_finalize()函數(shù)將SQL聲明銷毀之后,即可用sqlite3_close()函數(shù)關(guān)閉已打開的數(shù)據(jù)庫,釋放內(nèi)存資源。sqlite3_close()函數(shù)原型:intsqlite3_close(sqlite3*);圖3·9:LabVIEW中關(guān)閉SQLite數(shù)據(jù)庫節(jié)點圖3·10:sqlite3_close參數(shù)配置運用上述操作完成在LabVIEW中通過調(diào)用SQLite3中的函數(shù)創(chuàng)建數(shù)據(jù)表實例,圖3?12和圖3?13分別是該實例的程序框圖和運行后的前面板的顯示情況。圖3·11:LabVIEW中創(chuàng)建數(shù)據(jù)表實例程序框圖圖3·12:運行后前面板顯示情況3.1.3LabVIEW和DLL之間參數(shù)配置說明DLL和LabVIEW之間傳遞參數(shù),最常用的三種數(shù)據(jù)類型是數(shù)值、數(shù)值型數(shù)組和字符串。C語言中經(jīng)常把指針或者數(shù)據(jù)的地址在函數(shù)間傳遞,在32位操作系統(tǒng)中,可以使用int32數(shù)值來表示指針。因此,當(dāng)需要在LabVIEW中傳遞指針數(shù)據(jù)時,可以使用I32或U32數(shù)值類型來表示這個地址類型的數(shù)據(jù)。但是,64位的程序中,數(shù)據(jù)的地址只能使用I64或U64來表示。這樣,如果一個調(diào)用了DLL函數(shù)的VI,并且函數(shù)參數(shù)中有地址型數(shù)據(jù),使用固定數(shù)據(jù)類型的數(shù)值來表示地址,就要準備兩份代碼。解決方法是使用LabVIEW中的新的數(shù)據(jù)類型Pointer-sizedInteger。這個數(shù)據(jù)類型的長度在不同的平臺上會自動使用32位或64位長度。如果在C語言函數(shù)參數(shù)聲明中有const關(guān)鍵字,可以選中Constant選項。布爾類型在DLL函數(shù)和LabVIEWVI之間傳遞沒有專有的數(shù)據(jù)類型,是利用數(shù)值類型來傳遞的。輸入時先把布爾值轉(zhuǎn)變?yōu)閿?shù)值,在傳遞給DLL函數(shù);輸出時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度住宅小區(qū)電動車停車位租賃協(xié)議4篇
- 未來家居創(chuàng)新材料與設(shè)計的美學(xué)融合
- 2025年度綠色建筑領(lǐng)域民營中小企業(yè)技術(shù)服務(wù)合同4篇
- 個人房產(chǎn)作為貸款抵押品協(xié)議2024一
- 二零二五版煤礦安全生產(chǎn)風(fēng)險評價與管控服務(wù)合同4篇
- 2025年度專業(yè)市場攤位租賃及品牌入駐管理合同4篇
- 二零二四女方不忠婚姻解除協(xié)議及財產(chǎn)分割、子女撫養(yǎng)協(xié)議6篇
- 2025年度廠房電氣火災(zāi)預(yù)防與應(yīng)急處理服務(wù)合同4篇
- 二零二五版商鋪產(chǎn)權(quán)過戶代理合同3篇
- 2025年度廠房拆遷補償與綠色建筑推廣實施合同3篇
- (二統(tǒng))大理州2025屆高中畢業(yè)生第二次復(fù)習(xí)統(tǒng)一檢測 物理試卷(含答案)
- 口腔執(zhí)業(yè)醫(yī)師定期考核試題(資料)帶答案
- 2024人教版高中英語語境記單詞【語境記單詞】新人教版 選擇性必修第2冊
- 能源管理總結(jié)報告
- 充電樁巡查記錄表
- 阻燃材料的阻燃機理建模
- CJT 511-2017 鑄鐵檢查井蓋
- 配電工作組配電網(wǎng)集中型饋線自動化技術(shù)規(guī)范編制說明
- 2024高考物理全國乙卷押題含解析
- 介入科圍手術(shù)期護理
- 青光眼術(shù)后護理課件
評論
0/150
提交評論