孫洪偉,羅 杰
(1.武漢理工大學(xué) 自動(dòng)化學(xué)院,湖北 武漢 430070;2.武漢理工大學(xué) 信息工程學(xué)院,湖北 武漢 430070)
在各種各樣的監(jiān)控系統(tǒng)中,PC機(jī)往往作為系統(tǒng)監(jiān)測管理人員查看現(xiàn)場設(shè)備狀態(tài)和數(shù)據(jù)的主要設(shè)備。對(duì)于歷史數(shù)據(jù)的顯示,在VC[3]平臺(tái)下使用水晶報(bào)表,功能強(qiáng)大而且美觀實(shí)用。
但是VC平臺(tái)下傳統(tǒng)的水晶報(bào)表的應(yīng)用大多是針對(duì)單一數(shù)據(jù)源,僅僅只做到了對(duì)單一數(shù)據(jù)源的顯示,這對(duì)于多數(shù)據(jù)庫的應(yīng)用來說是遠(yuǎn)遠(yuǎn)不夠的。在這里,我們運(yùn)用類似服務(wù)器-客戶端的思想,在需要顯示數(shù)據(jù)時(shí),將對(duì)應(yīng)的數(shù)據(jù)庫“登陸”到水晶報(bào)表中,實(shí)現(xiàn)水晶報(bào)表[2]對(duì)數(shù)據(jù)庫的動(dòng)態(tài)綁定。本文中所述程序依托于鋼板在線板溫檢測系統(tǒng)。
PC機(jī)采集各監(jiān)測點(diǎn)的數(shù)據(jù),經(jīng)過模數(shù)轉(zhuǎn)換和公式處理,將數(shù)據(jù)傳輸?shù)奖O(jiān)控終端。整套系統(tǒng)的拓?fù)鋱D如圖1所示。
圖1 檢測系統(tǒng)拓?fù)鋱DFig.1 Examine system to rush toward diagram
各個(gè)監(jiān)測點(diǎn)之間通過485總線,采用菊花鏈的鏈接方式鏈接起來,通信協(xié)議采用的是ProfiBus總線協(xié)議。而監(jiān)測終端PC機(jī)與這套監(jiān)測系統(tǒng)鏈接的方式是,通過485-232接口,接入整個(gè)監(jiān)測系統(tǒng)中。PC機(jī)獲得各個(gè)監(jiān)測點(diǎn)上傳的數(shù)據(jù)之后,經(jīng)過相應(yīng)的處理,以其實(shí)際表示的意義,即溫度和濕度,在PC機(jī)端顯示出來并存儲(chǔ)到數(shù)據(jù)庫中,并通過查詢模塊可以實(shí)現(xiàn)按時(shí)間和按條件查詢。
VC++[4]為用戶提供了多種數(shù)據(jù)庫訪問技術(shù):ADO(Active Data Objects)應(yīng)用層數(shù)據(jù)接口、ODBC(Open Data Base Connectivity)開放數(shù)據(jù)庫互連技術(shù)、DAO(Data Access Objects)基于對(duì)象的數(shù)據(jù)庫訪問接口。在這里我們采用ADO。ADO是基于全新的OLEDB技術(shù)而設(shè)計(jì)的,是一種基于應(yīng)用程序的數(shù)據(jù)訪問接口,它是DAO/RDO的后繼產(chǎn)物。
文中采用的是Microsoft Access 2000來進(jìn)行數(shù)據(jù)庫[5]和數(shù)據(jù)表的創(chuàng)建。將監(jiān)測點(diǎn)采集的數(shù)據(jù)寫入數(shù)據(jù)庫的具體步驟如下:
創(chuàng)建數(shù)據(jù)庫:由于每天的數(shù)據(jù)都需要單獨(dú)保存在一個(gè)數(shù)據(jù)庫中,所以在數(shù)據(jù)庫創(chuàng)建之前需要生成數(shù)據(jù)庫的保存路徑,并對(duì)數(shù)據(jù)庫是否存在進(jìn)行判斷。
生成數(shù)據(jù)庫的保存路徑:生成路徑之后,根據(jù)路徑生成數(shù)據(jù)庫:
數(shù)據(jù)保存:本系統(tǒng)對(duì)于數(shù)據(jù)的顯示、檢測和保存都是實(shí)時(shí)進(jìn)行的,所以對(duì)于數(shù)據(jù)的保存都是在在收到數(shù)據(jù)之后就進(jìn)行保存:
目前,大多對(duì)于水晶報(bào)表在VC中的應(yīng)用對(duì)數(shù)針對(duì)靜態(tài)數(shù)據(jù)的,每張水晶報(bào)表都是綁定單一的數(shù)據(jù)庫,當(dāng)數(shù)據(jù)庫改變時(shí)對(duì)應(yīng)的水晶報(bào)表就不能顯示了。由于本系統(tǒng)每天都生成一張數(shù)據(jù)庫,所以數(shù)據(jù)庫每天都在改變。針對(duì)這一情況,只能通過動(dòng)態(tài)綁定來實(shí)現(xiàn)。水晶報(bào)表動(dòng)態(tài)綁定數(shù)據(jù)源是這樣來實(shí)現(xiàn)的:與水晶報(bào)表控件值綁定一張事先做好格式的空白報(bào)表模板,如圖2所示,當(dāng)需要顯示數(shù)據(jù)時(shí),在綁定需要的數(shù)據(jù)源。具體實(shí)現(xiàn)代碼[6]如下:
圖2 水晶報(bào)表模板Fig.2 Crystal statement template
圖3 水晶報(bào)表顯示結(jié)果Fig.3 Crystal statement shows a result
在數(shù)據(jù)庫中保存了大量的數(shù)據(jù)之后,需要在水晶報(bào)表中將歷史數(shù)據(jù)顯示出來,并根據(jù)條件進(jìn)行查詢、打印等操作。
在編輯框中輸入查詢的開始時(shí)間、結(jié)束時(shí)間,再通過SQL語句和水晶報(bào)表的公式語句,即可實(shí)現(xiàn)數(shù)據(jù)報(bào)表的動(dòng)態(tài)顯示,真實(shí)再現(xiàn)當(dāng)時(shí)的生產(chǎn)線的工作狀況。如圖4所示。也可以通過條件來實(shí)現(xiàn)查詢功能,如圖5所示。
具體代碼實(shí)現(xiàn)如下:
圖4 時(shí)間查詢界面Fig.4 Time searches interface
圖5 條件查詢界面Fig.5 Condition searches interface
突出顯示主要是將不符合我們要求的數(shù)據(jù)高亮來提示操作人員來注意。這項(xiàng)功能主要是通過水晶報(bào)表自身所帶功能來實(shí)現(xiàn):根據(jù)設(shè)置的條件,將不在范圍內(nèi)的數(shù)據(jù)標(biāo)為紅色來提示操作人員,如圖6所示。
在VC6.0環(huán)境下,通過水晶報(bào)表,很好的實(shí)現(xiàn)了監(jiān)控所得溫度數(shù)據(jù)的歷史數(shù)據(jù)的顯示、查詢等功能。數(shù)據(jù)的實(shí)時(shí)寫入、存儲(chǔ)采用了ADO(ACTIVEX DATA OBJECTS)應(yīng)用層數(shù)據(jù)接口技術(shù),而對(duì)于數(shù)據(jù)的查詢檢索采用SQL結(jié)構(gòu)化查詢語言和水晶報(bào)表自帶的公式語句,存儲(chǔ)內(nèi)存消耗少,顯示快捷、美觀、方便操作,為系統(tǒng)提供了簡潔、高效可靠的人機(jī)交互界面。歷史數(shù)據(jù)的顯示實(shí)現(xiàn)了整個(gè)系統(tǒng)檢測過程的動(dòng)態(tài)再現(xiàn),利于監(jiān)控人員對(duì)生產(chǎn)線工作狀態(tài)的監(jiān)控、判斷和故障檢查。整個(gè)的設(shè)計(jì)思想可以推廣于現(xiàn)代工業(yè)的各種監(jiān)控場合。
圖6 突出顯示設(shè)置界面Fig.6 Outstanding show a constitution of interface
[1]張榮圣,侯鵬志,郭圣路.Crystal Reports 2008水晶報(bào)表從入門到精通[M].北京:電子工業(yè)出版社,2010.
[2]McCoy C,aric C.(美)水晶報(bào)表Crystal Reports 9從入門到精通[M].北京:電子工業(yè)出版社,2003.
[3]伍俊良.VC課程設(shè)計(jì)與系統(tǒng)開發(fā)案例[M].北京:清華大學(xué)出版社,2002.
[4]孫鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2009.
[5]施伯樂,丁寶康,楊衛(wèi)東.數(shù)據(jù)庫教程[M].北京:電子工業(yè)出版社,2004.
[6]宋坤,李偉明,劉銳寧.Visual C++數(shù)據(jù)庫系統(tǒng)開發(fā)案例精選[M].北京:人民郵電出版社,2006.
[7]何志勇,趙瑞國,袁軍社.傳感器數(shù)據(jù)庫管理系統(tǒng)設(shè)計(jì)[J].火箭推進(jìn),2010(6):62-67.
HE Zhi-yong,ZHAO Rui-guo,YUAN Jun-she.Design of database management system for transducer[J].Journal of Rocket Propulsion,2010(6):62-67.