摘 要:本文主要以船舶數(shù)字化平臺設計為例,分別從Labview數(shù)據(jù)采集的實現(xiàn)、創(chuàng)建存儲過程的Java方法以及利用Labview技術對Java存儲過程的調用及執(zhí)行等三方面對Labview數(shù)據(jù)采集技術及Java數(shù)據(jù)存儲過程實現(xiàn)數(shù)據(jù)自動采集接口的設計實現(xiàn)進行分析和探討。
關鍵詞:Labview數(shù)據(jù)采集;Java存儲;數(shù)據(jù)自動采集接口
中圖分類號:TP274.2
1 Labview數(shù)據(jù)采集
Labview程序主要涉及前面板及流程圖兩項內容,程序設計采用多線程方式,前面板及流程圖分別對應一個線程。其中,前面板提供程序圖形接口,對輸入予以集成,對輸出予以顯示,與傳統(tǒng)儀器面板類似;流程圖主要實現(xiàn)對前面板輸入及輸出的編程控制及定義。
Labview數(shù)據(jù)采集基本流程示意圖詳見圖1所示。
圖1 Labview數(shù)據(jù)采集基本流程示意圖
在執(zhí)行采集數(shù)據(jù)操作之前,先進行DAQ板卡初始化,采集到的數(shù)據(jù)經(jīng)過板卡及內存中Buffer環(huán)節(jié)之后才被存儲。因為所選擇的板卡具備DMA性能,這樣可以在輸入操作模擬過程中構建起以計算機內存為連通的高速硬件通道,通過該通道可以實現(xiàn)數(shù)據(jù)向計算機內存的直接傳輸。
一般情況下,觸發(fā)器為一個數(shù)字或模擬信號,觸發(fā)包括初始化、終止及DAQ事件同步的所有方式,動作是否發(fā)生主要取決于觸發(fā)器的狀態(tài)。硬件觸發(fā)器主要受板卡電路管理,并負責分配DAQ事件時間,精確度較高。所采集的數(shù)據(jù)首先借助通用接口總線向主機進行傳輸,Labview試驗系統(tǒng)程序對數(shù)據(jù)進行初步處理,在此基礎之上,借助Java存儲過程實現(xiàn)原始數(shù)據(jù)及信息在對應數(shù)據(jù)庫的存儲操作。
2 Java存儲過程
Java創(chuàng)建存儲過程常見方法主要有以下幾種:
(1)數(shù)據(jù)處理。Java存儲過程的第一步就是處理數(shù)據(jù),在此所處理的數(shù)據(jù)主要是在船舶數(shù)字化平臺中設定為非空的數(shù)據(jù),并且在Labview中為空的數(shù)據(jù),這些數(shù)據(jù)在經(jīng)過Java存儲過程處理之后便無法在船舶數(shù)字化平臺中進行保存;所有數(shù)據(jù)在經(jīng)過Labview處理之后均為字符串形式存在,為確保數(shù)據(jù)符合數(shù)字化平臺對數(shù)據(jù)類型的要求,Java存儲過程會轉換數(shù)據(jù)存在形式;最后,對于涉及多個單獨字段的字符串,需要進行分割處理,并將其保存在字符數(shù)組當中。
(2)事務處理。數(shù)據(jù)庫操作中所談及的事務指的是由一個或數(shù)個對數(shù)據(jù)庫更新的sql語句所構成的無法分割的工作單元。事務在所涉及的全部操作均實現(xiàn)之后才會向數(shù)據(jù)庫進行整體性提交,若其中某一操作未實現(xiàn),將對事務予以撤銷。因針對數(shù)據(jù)庫的操作并非一次完成,其中每次執(zhí)行或步驟都可以視作一個事務,假如數(shù)據(jù)庫操作在其中一個環(huán)節(jié)未執(zhí)行或發(fā)生意外導致事務未成功,就會出現(xiàn)部分事務執(zhí)行而部分未執(zhí)行的情況,此時出現(xiàn)事務回滾,之前的操作將會被取消。
(3)自增序列的查詢及插入。數(shù)據(jù)庫表結構的部分字段充當具有自增性質的主鍵,一般可以采取no-zlcon-s.currval的方式對這種類型的字段進行查詢,其中no-zlcon-s是其中一張表的sequence,在執(zhí)行上述操作時應注意操作順序,在完成no-zlcon-s.nextval之后再進行no-zlcon-s.currval操作。
3 數(shù)據(jù)自動采集接口的實現(xiàn)與應用
3.1 Labview訪問船舶數(shù)字化平臺
Labview自身無法執(zhí)行訪問數(shù)據(jù)庫操作,所以對于利用Labview編制的虛擬儀器系統(tǒng)而言,要想執(zhí)行訪問數(shù)據(jù)庫操作,必須采取相應的輔助手段。
Labview中訪問數(shù)據(jù)庫的方式較為常見的主要有:
(1)使用接口工具包Labview SQL Toolkit完成訪問數(shù)據(jù)庫操作;
(2)借助Labview中ActiveX功能,對Microsoft ADO對象進行調用,借助SQL語言完成數(shù)據(jù)庫訪問操作。需要特別指出的是,采取此種訪問方式用戶必須掌握足夠多的Microsoft ADO以及SQL語言知識;
(3)利用第三方所推出的工具包LabSQL進行數(shù)據(jù)庫訪問。為最大限度的確保程序穩(wěn)定性及反應靈敏性,本文所探討的數(shù)據(jù)自動采集接口訪問數(shù)字化平臺選擇第一種數(shù)據(jù)庫訪問方式。
3.2 Labview中執(zhí)行存儲過程
作為附加工具包,Labview SQL Toolkit中實現(xiàn)了對高級功能模塊的有效集成,其主要作用是執(zhí)行數(shù)據(jù)庫訪問操作,利用Labview SQL Toolkit中所涉及的功能模塊可以實現(xiàn)大部分數(shù)據(jù)庫操作及部分高級數(shù)據(jù)庫訪問,借助Labview SQL Toolkit在Labview所支持的ODBC本地或遠程數(shù)據(jù)庫。
借助DB Tools List Tables,通過一維數(shù)組的方式對所選定的數(shù)據(jù)庫當中的全部表進行列舉,并在前面板數(shù)組控件Tables當中進行同步顯示。對于用戶而言,當Tables Index確定的情況下,采取數(shù)組函數(shù)索引的方式對其中一個表進行索引;在此基礎之上,將索引結果與DB Tools List Columns以及DB Tools Select All Data進行連接。
完成上述操作之后將面臨數(shù)據(jù)格式問題,因此需要及時轉換數(shù)據(jù)格式,將格式符合要求的數(shù)據(jù)與數(shù)據(jù)庫相連,與此同時,對SQL語句進行執(zhí)行以實現(xiàn)Java存儲目的。Labview將會以存儲過程反饋值為依據(jù),對操作結果進行及時顯示。
4 結束語
本文以船舶數(shù)據(jù)庫平臺為依托,借助Labview數(shù)據(jù)采集、數(shù)據(jù)庫操作功能以及Java存儲過程,作為重要的數(shù)據(jù)庫接口附加工具包,LabVIEW SQL Toolkit主要應用于數(shù)據(jù)庫訪問,該附加工具包含有數(shù)個封裝了大部分數(shù)據(jù)庫操作及部分高級數(shù)據(jù)庫訪問功能的功能模塊,在LabVIEW當中,利用LabVIEW SQL Toolkit便可以向ODBC本地或遠程數(shù)據(jù)庫提供支持,并且對船舶數(shù)據(jù)庫平臺數(shù)據(jù)自動采集接口的實現(xiàn)及應用展開分析和探討。
參考文獻:
[1]邢立偉.基于LabVIEW的車身過程設備信息網(wǎng)絡化管理系統(tǒng)的研制[D].哈爾濱工業(yè)大學,2007.
[2]李杰,陳濤,范勇.基于LabVIEW的綜合錄井多參數(shù)曲線監(jiān)測系統(tǒng)設計[J].儀器儀表用戶,2010(04).
[3]尚振陽.吉林石化煉油與化工運行系統(tǒng)數(shù)據(jù)采集接口實現(xiàn)研究[D].吉林大學,2011(04).
[4]劉輝.Java網(wǎng)絡編程:連接網(wǎng)絡數(shù)據(jù)庫的多種方法[J].價值工程,2010(03).
[5]王聰華,王建國.Java調用VC++DLL實現(xiàn)串口GPS的訪問[J].信息技術,2010(01).
作者簡介:郭嚴友(1980.08-),男,廣東肇慶人,本科,計算機講師,主要研究方向:軟件工程、網(wǎng)絡、多媒體。
作者單位:肇慶市農業(yè)學校,廣東肇慶 526070