摘 要: 重點(diǎn)介紹了在工控組態(tài)軟件WINCC上的數(shù)據(jù)庫(kù)通信方法和采集過(guò)程,基于WINCC組態(tài)軟件的數(shù)據(jù)庫(kù)后臺(tái)是關(guān)系數(shù)據(jù)庫(kù)SQL Server,。結(jié)合實(shí)際應(yīng)用來(lái)研究關(guān)系數(shù)據(jù)庫(kù)SQL Server及其優(yōu)化策略和服務(wù)性能。
關(guān)鍵詞: 數(shù)據(jù)庫(kù); SQL Server; WINCC
從WINCC6.0開始,就開始采用SQL2000SP3做為WINCC的后臺(tái)數(shù)據(jù)了,而這個(gè)SQL2000SP3由Siemens為WINCC做了二次開發(fā),。WINCC的數(shù)據(jù)有設(shè)計(jì)時(shí)數(shù)據(jù)庫(kù)和運(yùn)行時(shí)數(shù)據(jù)庫(kù),分別放在相關(guān)的目錄,。設(shè)計(jì)時(shí)數(shù)據(jù)庫(kù)沒(méi)有研究的必要性,但運(yùn)行時(shí)數(shù)據(jù)庫(kù)要知道它的名稱,其名稱一般是“CC_工程名_年_月_日_時(shí)_分_秒R”,無(wú)論準(zhǔn)備以DSN或OLEDB的方式訪問(wèn)數(shù)據(jù)庫(kù),都需要該名稱,。將WINCC激活,然后在“ODBC管理器”或“SQL企業(yè)管理器”下的“DATABASE”可以看到運(yùn)行時(shí)數(shù)據(jù)庫(kù)的名稱。其實(shí),,WINCC在運(yùn)行時(shí),根據(jù)WINCC的設(shè)置,,數(shù)據(jù)歸檔以一定時(shí)間做為基準(zhǔn),形成數(shù)據(jù)片段。在數(shù)據(jù)片段下,,有3個(gè)表是用戶所關(guān)心的:ARCHIVE(用戶歸檔記錄)、TAGPRESSED(TAGUNPRESSED)(壓縮/非壓縮變量歸檔記錄)和MSARCLONG(報(bào)警記錄),。在這里主要介紹在WINCC項(xiàng)目中的數(shù)據(jù)庫(kù)編程和通信[1]。
1 總體思路
WINCC項(xiàng)目中通用C和VB 兩種語(yǔ)言,所以,,采用與數(shù)據(jù)庫(kù)進(jìn)行通信的必要條件就是熟悉這2種語(yǔ)言。作為編程語(yǔ)言來(lái)說(shuō),編程只是最后實(shí)現(xiàn)結(jié)果的方式,,重點(diǎn)在于通信方式的建立。下面分別從數(shù)據(jù)通信方式和實(shí)現(xiàn)方法來(lái)介紹,。
2 數(shù)據(jù)通信方式
與數(shù)據(jù)庫(kù)通信的數(shù)據(jù)訪問(wèn)接口有以下幾種[2]。
(1)高級(jí)數(shù)據(jù)連接器ADC(Advanced Data Connector):提供綁定ADO數(shù)據(jù)源到窗體的數(shù)據(jù)綁定控件上,。ADC主要是一種直接訪問(wèn)或者通過(guò)ADO訪問(wèn)遠(yuǎn)程OLEDB對(duì)象的技術(shù),它支持主要應(yīng)用在微軟IE瀏覽器上的數(shù)據(jù)綁定控件,是特地為以Web上的瀏覽器為基礎(chǔ)的應(yīng)用程序而設(shè)計(jì)的,。
(2)Active數(shù)據(jù)對(duì)象ADO(Active Data Objects):ADO實(shí)際是一種提供訪問(wèn)各種數(shù)據(jù)類型的連接機(jī)制。ADO設(shè)計(jì)為一種極簡(jiǎn)單的格式,,通過(guò)ODBC的方法同數(shù)據(jù)庫(kù)接口??梢允褂萌魏我环NODBC數(shù)據(jù)源,既適合于SQL Server、Oracle,、Access等數(shù)據(jù)庫(kù)應(yīng)用程序,也適合于Excel表格、文本文件,、圖形文件和無(wú)格式的數(shù)據(jù)文件,。ADO是基于OLEDB之上的技術(shù),因此ADO通過(guò)其內(nèi)部的屬性和方法提供統(tǒng)一的數(shù)據(jù)訪問(wèn)接口方法,。
(3)數(shù)據(jù)訪問(wèn)對(duì)象DAO(Data Access Objects):一種面向?qū)ο蟮慕缑娼涌凇Mㄟ^(guò)DAO/JET功能可以訪問(wèn)ISAM數(shù)據(jù)庫(kù),,使用DAO/ODBCDirect功能可以實(shí)現(xiàn)遠(yuǎn)程RDO功能,。使用DAO的程序編碼非常簡(jiǎn)單,,DAO提供豐富的游標(biāo)(Cursor)類型的結(jié)果集和非游標(biāo)(Cursor-Less)類型的結(jié)果集,同DDL(數(shù)據(jù)描述語(yǔ)言)的功能類似,。DAO模型是設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)的對(duì)象類的集合,它提供了完成管理這樣一個(gè)系統(tǒng)所需的全部操作的屬性和方法,包括創(chuàng)建數(shù)據(jù)庫(kù),,定義表,、字段和索引,建立表間的關(guān)系,,定位和查詢數(shù)據(jù)庫(kù)等工具。
(4)數(shù)據(jù)連接性引擎技術(shù)JET(Joint Engine Technology):一種基于工作站通過(guò)DAO的數(shù)據(jù)庫(kù)訪問(wèn)機(jī)制,。雖然可以通過(guò)微軟Access提供的ODBC驅(qū)動(dòng)程序訪問(wèn)JET數(shù)據(jù)庫(kù),但使用這些驅(qū)動(dòng)程序在功能上有所限制,。JET機(jī)制有自己的查詢和結(jié)果集處理功能,,并可對(duì)同種或異種數(shù)據(jù)源作查詢處理。
(5)開放式的數(shù)據(jù)庫(kù)連接ODBC(Open DataBase Connectivity):一種公認(rèn)的關(guān)系數(shù)據(jù)源的接口界面,。它快而輕,并且提供統(tǒng)一接口的界面。ODBC對(duì)任何數(shù)據(jù)源都未作優(yōu)化,。
(6)ODBCDirect:一種基于DAO對(duì)象的新的DAO模式,其方法和屬性與RDO功能相同,。在有DAO代碼存在的場(chǎng)合使用,,可用來(lái)訪問(wèn)遠(yuǎn)程數(shù)據(jù)源,。
(7)OLEDB:一種底層數(shù)據(jù)訪問(wèn)界面接口,是用于第三方驅(qū)動(dòng)程序商家開發(fā)輸出數(shù)據(jù)源到ADO技術(shù)的應(yīng)用程序,或用于C++的開發(fā)者開發(fā)定制的數(shù)據(jù)庫(kù)組件,。OLEDB不能被VB直接調(diào)用,。
(8)遠(yuǎn)程數(shù)據(jù)訪問(wèn)控件RDC(Remote Data Control):一種對(duì)RDO數(shù)據(jù)綁定的控件??梢詫⑻囟ǖ慕Y(jié)果集輸出到數(shù)據(jù)源控件。
(9)遠(yuǎn)程數(shù)據(jù)對(duì)象RDO(Remote Data Objects):遠(yuǎn)程數(shù)據(jù)對(duì)象和集合為使用代碼來(lái)創(chuàng)建和操作一個(gè)遠(yuǎn)程ODBC數(shù)據(jù)庫(kù)系統(tǒng)的各個(gè)部件提供了一個(gè)框架,。對(duì)象和集合都具有描述數(shù)據(jù)庫(kù)的各個(gè)部件特征的屬性以及用來(lái)操作這些部件的方法??梢栽趯?duì)象和集合之間建立關(guān)系,,這些關(guān)系代表了數(shù)據(jù)庫(kù)系統(tǒng)的邏輯結(jié)構(gòu)。RDO是ODBC API的一個(gè)淺層界面接口,是專為訪問(wèn)遠(yuǎn)程ODBC關(guān)系數(shù)據(jù)源而設(shè)計(jì)的,。
(10)VBSQL:Visual Basic結(jié)構(gòu)化查詢語(yǔ)言,是一種基于API的接口方法,,幾乎與C的DB-Library API相同。VBSQL只支持微軟的SQL Server,。VBSQL快而且輕,但不支持對(duì)象界面。
盡管數(shù)據(jù)訪問(wèn)方式有多種,,但是適合WINCC通信的方式只有ODBC和ADO,這里重點(diǎn)介紹ODBC接口訪問(wèn)方式,。
3 實(shí)現(xiàn)方法
ODBC是一種應(yīng)用程序的接口(API),這種接口提供了獨(dú)立于任何數(shù)據(jù)管理系統(tǒng)的應(yīng)用程序編寫能力。ODBC通過(guò)ODBC驅(qū)動(dòng)程序?yàn)椴煌臄?shù)據(jù)庫(kù)供應(yīng)商的一組應(yīng)用程序接口提供了特殊的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),。用戶的應(yīng)用程序使用這組API來(lái)調(diào)度ODBC驅(qū)動(dòng)程序,。然后驅(qū)動(dòng)程序通過(guò)SQL語(yǔ)句與DBMS發(fā)生聯(lián)系,。
下面介紹ODBC數(shù)據(jù)源,。在“我的電腦”中打開“控制面板”中的“管理工具”,,即可見ODBC數(shù)據(jù)源圖標(biāo),。ODBC數(shù)據(jù)源管理器為配置、添加,、刪除各種不同的數(shù)據(jù)源名稱提供了最為簡(jiǎn)潔的方法,。它使用戶可以輕松地完成數(shù)據(jù)源的配置工作,用戶也可以刪除原有的DSN(數(shù)據(jù)源名稱),,或?qū)ο惹芭渲玫臄?shù)據(jù)源進(jìn)行修改,。ODBC數(shù)據(jù)源管理器的具體功能如下[3]。
(1)用戶DSN:ODBC用戶數(shù)據(jù)源存儲(chǔ)了如何與指定數(shù)據(jù)提供者連接的信息,。用戶數(shù)據(jù)源只對(duì)當(dāng)前的用戶可見,,而且只能應(yīng)用在本機(jī)上;
(2)系統(tǒng)DSN: ODBC系統(tǒng)數(shù)據(jù)源存儲(chǔ)了如何與指定數(shù)
據(jù)提供者連接的信息,。系統(tǒng)數(shù)據(jù)源對(duì)當(dāng)前機(jī)器上的所有用戶可見,;
(3)文件DSN: ODBC文件數(shù)據(jù)源允許用戶連接數(shù)據(jù)提供者。文件DSN可以由安裝了相同驅(qū)動(dòng)程序的用戶共享,;
(4)驅(qū)動(dòng)程序: ODBC驅(qū)動(dòng)程序允許那些支持ODBC的程序通過(guò)ODBC數(shù)據(jù)源獲取信息,。如果安裝新的驅(qū)動(dòng)程序,要使用其安裝程序,;
(5)跟蹤:ODBC跟蹤允許創(chuàng)建調(diào)用ODBC驅(qū)動(dòng)程序的日志,,以供技術(shù)人員查看;也可以輔助調(diào)試應(yīng)用程序,。Visual Studio跟蹤啟動(dòng)Microsoft Visual Studio的ODBC跟蹤,;
(6)連接池:連接池允許應(yīng)用程序重新打開連接句柄,,此操作將往返過(guò)程存入服務(wù)器。
建立數(shù)據(jù)源:通過(guò)對(duì)在系統(tǒng)DSN中建立SQL Server數(shù)據(jù)源test,,連接的數(shù)據(jù)庫(kù)為test,,并測(cè)試成功。
查詢數(shù)據(jù)庫(kù):
Dim cn,strConn,sql,rs
Dim view1,view2
Set cn = CreateObject("ADODB.Connection")
Set rs=CreateObject("ADODB.Recordset")
strConn="test"
sql="select * from student order by id "
cn.ConnectionString=strConn
cn.Open
rs.Open sql,cn
view1=rs.fields("id")
view2=rs("name")
rs.movenext
Set rs=Nothing
Set cn=Nothing
以上是一個(gè)在WINCC中訪問(wèn)數(shù)據(jù)庫(kù),、實(shí)現(xiàn)查詢功能的簡(jiǎn)單實(shí)例,。同樣,也可以實(shí)現(xiàn)插入,、刪除,、修改等功能。
以上只是初級(jí)的WINCC與數(shù)據(jù)庫(kù)通信,要想提高效率,,需要進(jìn)行性能調(diào)校,。所謂性能調(diào)校,是指以用戶期望為依據(jù)進(jìn)行調(diào)校目的方法,。然而性能問(wèn)題的癥結(jié)通常不是表象所能顯示出來(lái)的,從不同的方面去看,,往往會(huì)有不同的解釋,。
數(shù)據(jù)庫(kù)性能調(diào)校的步驟流程“DETECT”為:
(1)Discover the problem,發(fā)現(xiàn)問(wèn)題,;
(2)Explore the conditions,,探究原因,為問(wèn)題提供明確的定義與定位,;
(3)Track down possible approaches,,提供可能的解決方案;
(4)Execute the most likely approach,執(zhí)行最有可能的解決方案,;
(5)Check for success(如果需要,,可重復(fù)之前的步驟),確認(rèn)解決方案成功與否;
(6)Tie up loose ends完成收尾工作,。
通過(guò)以上調(diào)校步驟來(lái)對(duì)數(shù)據(jù)庫(kù)性能進(jìn)行優(yōu)化調(diào)校。也可以利用相關(guān)工具進(jìn)行性能調(diào)校,如SQLDiag.exe,、性能監(jiān)視器(Performance Monitor),、事件日志與事件查看器(Events Log)、網(wǎng)絡(luò)監(jiān)視器(Network Monitor),、SQL Profiler,、索引微調(diào)向?qū)В↖ndex Tuning Wizard),、Query Analyzer、DBCC,、Application Center Test和Web Application Stress Tool等,。
通過(guò)對(duì)WINCC與數(shù)據(jù)庫(kù)SQL Server進(jìn)行連接的實(shí)例來(lái)說(shuō)明其調(diào)校性能的步驟,實(shí)現(xiàn)了工控組態(tài)軟件WINCC的數(shù)據(jù)庫(kù)通信方法和采集過(guò)程,;并就其性能方面進(jìn)行了概述,提到了多種性能調(diào)校工具軟件,,對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行監(jiān)控和優(yōu)化性能起了一定作用[4],。
參考文獻(xiàn)
[1] 西門子(中國(guó))自動(dòng)化與驅(qū)動(dòng)集團(tuán).深入淺出西門子WinCC V6. 北京:北京航空航天大學(xué)出版社,,2004.
[2] 牛勇,,袁鵬飛.QL Server編程篇[M].北京:電子工業(yè)出版社, 2005.
[3] 鄭劍峰,董國(guó)平.SQL Server開發(fā)答疑[M].北京:北京:人民郵電出版社,,2006.
[4] 胡百敬.Microsoft SQL Server性能調(diào)校[M].北京:電子工業(yè)出版社,,2005.