魏 凱,張?zhí)扉_,王顯靜,孫亦霖
(青島理工大學(xué) 自動化學(xué)院,山東 青島 266033)
某空調(diào)通風(fēng)試驗(yàn)臺以Webaccess作為軟件平臺,用于采集測點(diǎn)數(shù)據(jù)、執(zhí)行算法并輸出控制信號。但在空調(diào)通風(fēng)試驗(yàn)臺的項(xiàng)目中,風(fēng)速、壓力和溫度總共有140個采集點(diǎn),如果采用Webaccess內(nèi)部點(diǎn),無法進(jìn)行存儲。因?yàn)檫@些點(diǎn)的數(shù)據(jù)要被實(shí)時地保存。為此,本文介紹了基于Webaccess平臺、采用SQL sever作為本工程節(jié)點(diǎn)的數(shù)據(jù)保存數(shù)據(jù)庫,同時也考慮了可以方便其他局域網(wǎng)的應(yīng)用程序訪問本機(jī)上的數(shù)據(jù),以作為分析的依據(jù)。
在本系統(tǒng)中,應(yīng)用程序訪問SQL數(shù)據(jù)庫通過ODBC或ADO兩種方式。ODBC是微軟開發(fā)的數(shù)據(jù)庫編程接口,應(yīng)用程序可以通過ODBC訪問來自不同數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)。在Windows系統(tǒng)中,包含有ODBC接口的管理程序,如果要使用ODBC數(shù)據(jù)源,必須首先創(chuàng)建和配置數(shù)據(jù)源。ODBC管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫的位置、數(shù)據(jù)庫的類型和ODBC驅(qū)動程序,建立與數(shù)據(jù)庫的連接,應(yīng)用程序?qū)?shù)據(jù)庫的操作通過ODBC完成。ADO是微軟提供的一種面向各種數(shù)據(jù)源的高級接口,開發(fā)人員只需編寫訪問數(shù)據(jù)庫的代碼而不用去關(guān)心如何去實(shí)現(xiàn),即只要關(guān)心和數(shù)據(jù)庫的連接;ADO通過OLE DB訪問和操作數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù),通過ADO可以連接數(shù)據(jù)庫,并且指定訪問數(shù)據(jù)源的命令,最后執(zhí)行命令。
在本系統(tǒng)中,連接一個本地 SQLserver,并在這個服務(wù)器中建立了一個shuju數(shù)據(jù)庫,這個數(shù)據(jù)庫含有10個數(shù)據(jù)表,分別為:1個存儲修正值的表,3個實(shí)時的數(shù)據(jù)保存數(shù)據(jù)表,3個數(shù)據(jù)坐標(biāo)直接讀取表和3個歷史坐標(biāo)存儲總表。Webaccess在采集數(shù)據(jù)之后,存入數(shù)據(jù)庫,數(shù)據(jù)庫再把數(shù)據(jù)分享到局域網(wǎng)。整個系統(tǒng)的數(shù)據(jù)流向圖如圖1所示。
圖1 整個系統(tǒng)的數(shù)據(jù)流向
在Windows系統(tǒng)中,采用Webaccess作為軟件平臺,其本身支持對數(shù)據(jù)庫的讀寫,但需要在Windows的ODBC管理器中添加ODBC數(shù)據(jù)源。在Windows XP系統(tǒng)的控制面板的管理工具中,數(shù)據(jù)源管理器中添加SQL server驅(qū)動、命名、選擇服務(wù)器,然后添加數(shù)據(jù)庫 shuju,測試連接即完成。每次在腳本中執(zhí)行SQL語句、進(jìn)行操作數(shù)據(jù)庫之前,必先連接數(shù)據(jù)源。下面介紹如何連接shuju數(shù)據(jù)庫、讀寫存儲溫度的數(shù)據(jù)表TDATATABLE和存儲矯正值的數(shù)據(jù)表xiuzheng。
(1)在xiuzheng數(shù)據(jù)表中存儲了在Webaccess中對每個點(diǎn)的傳感器數(shù)據(jù)的矯正值,每當(dāng)每個點(diǎn)的數(shù)據(jù)存儲到數(shù)據(jù)庫之前,必須讀取xiuzheng表中的矯正值,加到讀入的數(shù)據(jù)值上。其代碼如下:
(2)將讀到的傳感器測量的點(diǎn)的數(shù)值加上矯正值存儲到TDATATABLE。其代碼如下:
(1)在Webaccess中局部點(diǎn)存儲了坐標(biāo)值,只有當(dāng)局部點(diǎn)文件被加載時才能把這些點(diǎn)賦值。本文采用在Webaccess的總體腳本中添加VB輔助程序、運(yùn)行總體腳本時在VB程序中給這些局部點(diǎn)賦值。
在VB輔助程序中,VB控件作為第三方控件在Webaccess平臺中實(shí)現(xiàn)與數(shù)據(jù)庫的連接。由于嵌入到Webaccess中的控件是通過bwocxrun.exe與Webaccess通信,因此要把bwocx.ocx引用到VB中。在VB中新建ActiveX控件—>工程—>部件 bwocxrun ActiveX Control modole—>接口向?qū)А?hWnd—>映射到 UserControl—>數(shù)據(jù)類型為string—>在空白處添加ocx控件。
在VB控件中建立與SQL數(shù)據(jù)庫的連接,本系統(tǒng)采用ADO連接數(shù)據(jù)庫,而在VB中采用ADO接口。主要有兩種方式:一是采用ADOdata控件連接數(shù)據(jù)庫,二是采用ADO對象與數(shù)據(jù)庫連接。在采用第二種方式時還有兩種方式:分別是ADO對象和ODBC數(shù)據(jù)源連接或者ADO對象和指定的OLE DB提供者連接數(shù)據(jù)庫。本文采用ADO對象和指定的OLE DB連接方式。以下是與TXYZTABLE的連接:
(2)在本系統(tǒng)中,由于如果改變測點(diǎn)額定坐標(biāo),將會使以前的坐標(biāo)信息全部丟失。為了存儲過去的歷史坐標(biāo),系統(tǒng)建立了一個歷史坐標(biāo)數(shù)據(jù)表。利用Delphi編寫了一個輔助程序?qū)?dāng)前的測點(diǎn)坐標(biāo)存儲到數(shù)據(jù)庫中,當(dāng)測量點(diǎn)修改后,可以運(yùn)行該程序?qū)⒏膭拥淖鴺?biāo)存儲到歷史坐標(biāo)數(shù)據(jù)庫中。當(dāng)在使用以前的測量點(diǎn)時,也可以在程序中選擇以前存儲的歷史坐標(biāo)加載到測量點(diǎn)的局部點(diǎn)。
使用Delphi編寫試驗(yàn)坐標(biāo)處理程序時,其程序采用ADO數(shù)據(jù)庫訪問接口進(jìn)行連接數(shù)據(jù)庫,采用ODBC驅(qū)動程序連接數(shù)據(jù)源。圖2為該程序的界面。
圖2 Delphi試驗(yàn)坐標(biāo)處理程序的界面
在編寫程序時,需要在新建的窗體上添加ADOConnection和ADOQUERY控件。其中這ADOConnection的 connectionstring 屬 性 為 ”Provider=MSDASQL.1;Persist SecurityInfo=False;UserID=sa;DataSource=shuju”,并為ADOQUERY添加connection屬性為ADOConnection的name[4]。
在MPXYZTABLE中,每一條記錄的第一個字段表示第幾條實(shí)驗(yàn)記錄。下面是以壓力歷史坐標(biāo)表演示將數(shù)據(jù)編號讀出,并將選擇的編號的數(shù)據(jù)記錄讀取到坐標(biāo)數(shù)據(jù)表的示例:
下面是把歷史坐標(biāo)中選擇的編號相應(yīng)的記錄輸出到全局變量中,然后把這些變量再寫入到坐標(biāo)表中的代碼:
以上就是在Webaccess中SQL數(shù)據(jù)庫的調(diào)用和操作。在實(shí)際的應(yīng)用中只要掌握簡單的查詢語句,就可以對數(shù)據(jù)庫進(jìn)行操作。
[1]研華(中國)公司自動化事業(yè)群.Advantech WebAccess產(chǎn)品使用手冊[S].2009.
[2]陳艷峰,高文姬,邵蘊(yùn)秋,等.Visul Basic 數(shù)據(jù)庫項(xiàng)目案例導(dǎo)航[M].北京:清華大學(xué)出版社,2004.
[3]劉德生,張?zhí)扉_.基于VB的WebAccess組態(tài)功能擴(kuò)展[J].微型機(jī)與應(yīng)用,2011,30(12):29.
[4]鄭阿奇.Delphi實(shí)用教程 [M].北京:電子工業(yè)出版社,2006.