孫洪偉,羅 杰
(1.武漢理工大學 自動化學院,湖北 武漢 430070;2.武漢理工大學 信息工程學院,湖北 武漢 430070)
在各種各樣的監控系統中,PC機往往作為系統監測管理人員查看現場設備狀態和數據的主要設備。對于歷史數據的顯示,在VC[3]平臺下使用水晶報表,功能強大而且美觀實用。
但是VC平臺下傳統的水晶報表的應用大多是針對單一數據源,僅僅只做到了對單一數據源的顯示,這對于多數據庫的應用來說是遠遠不夠的。在這里,我們運用類似服務器-客戶端的思想,在需要顯示數據時,將對應的數據庫“登陸”到水晶報表中,實現水晶報表[2]對數據庫的動態綁定。本文中所述程序依托于鋼板在線板溫檢測系統。
PC機采集各監測點的數據,經過模數轉換和公式處理,將數據傳輸到監控終端。整套系統的拓撲圖如圖1所示。

圖1 檢測系統拓撲圖Fig.1 Examine system to rush toward diagram
各個監測點之間通過485總線,采用菊花鏈的鏈接方式鏈接起來,通信協議采用的是ProfiBus總線協議。而監測終端PC機與這套監測系統鏈接的方式是,通過485-232接口,接入整個監測系統中。PC機獲得各個監測點上傳的數據之后,經過相應的處理,以其實際表示的意義,即溫度和濕度,在PC機端顯示出來并存儲到數據庫中,并通過查詢模塊可以實現按時間和按條件查詢。
VC++[4]為用戶提供了多種數據庫訪問技術:ADO(Active Data Objects)應用層數據接口、ODBC(Open Data Base Connectivity)開放數據庫互連技術、DAO(Data Access Objects)基于對象的數據庫訪問接口。在這里我們采用ADO。ADO是基于全新的OLEDB技術而設計的,是一種基于應用程序的數據訪問接口,它是DAO/RDO的后繼產物。
文中采用的是Microsoft Access 2000來進行數據庫[5]和數據表的創建。將監測點采集的數據寫入數據庫的具體步驟如下:
創建數據庫:由于每天的數據都需要單獨保存在一個數據庫中,所以在數據庫創建之前需要生成數據庫的保存路徑,并對數據庫是否存在進行判斷。
生成數據庫的保存路徑:生成路徑之后,根據路徑生成數據庫:
數據保存:本系統對于數據的顯示、檢測和保存都是實時進行的,所以對于數據的保存都是在在收到數據之后就進行保存:
目前,大多對于水晶報表在VC中的應用對數針對靜態數據的,每張水晶報表都是綁定單一的數據庫,當數據庫改變時對應的水晶報表就不能顯示了。由于本系統每天都生成一張數據庫,所以數據庫每天都在改變。針對這一情況,只能通過動態綁定來實現。水晶報表動態綁定數據源是這樣來實現的:與水晶報表控件值綁定一張事先做好格式的空白報表模板,如圖2所示,當需要顯示數據時,在綁定需要的數據源。具體實現代碼[6]如下:


圖2 水晶報表模板Fig.2 Crystal statement template

圖3 水晶報表顯示結果Fig.3 Crystal statement shows a result
在數據庫中保存了大量的數據之后,需要在水晶報表中將歷史數據顯示出來,并根據條件進行查詢、打印等操作。
在編輯框中輸入查詢的開始時間、結束時間,再通過SQL語句和水晶報表的公式語句,即可實現數據報表的動態顯示,真實再現當時的生產線的工作狀況。如圖4所示。也可以通過條件來實現查詢功能,如圖5所示。
具體代碼實現如下:


圖4 時間查詢界面Fig.4 Time searches interface


圖5 條件查詢界面Fig.5 Condition searches interface

突出顯示主要是將不符合我們要求的數據高亮來提示操作人員來注意。這項功能主要是通過水晶報表自身所帶功能來實現:根據設置的條件,將不在范圍內的數據標為紅色來提示操作人員,如圖6所示。
在VC6.0環境下,通過水晶報表,很好的實現了監控所得溫度數據的歷史數據的顯示、查詢等功能。數據的實時寫入、存儲采用了ADO(ACTIVEX DATA OBJECTS)應用層數據接口技術,而對于數據的查詢檢索采用SQL結構化查詢語言和水晶報表自帶的公式語句,存儲內存消耗少,顯示快捷、美觀、方便操作,為系統提供了簡潔、高效可靠的人機交互界面。歷史數據的顯示實現了整個系統檢測過程的動態再現,利于監控人員對生產線工作狀態的監控、判斷和故障檢查。整個的設計思想可以推廣于現代工業的各種監控場合。

圖6 突出顯示設置界面Fig.6 Outstanding show a constitution of interface
[1]張榮圣,侯鵬志,郭圣路.Crystal Reports 2008水晶報表從入門到精通[M].北京:電子工業出版社,2010.
[2]McCoy C,aric C.(美)水晶報表Crystal Reports 9從入門到精通[M].北京:電子工業出版社,2003.
[3]伍俊良.VC課程設計與系統開發案例[M].北京:清華大學出版社,2002.
[4]孫鑫,余安萍.VC++深入詳解[M].北京:電子工業出版社,2009.
[5]施伯樂,丁寶康,楊衛東.數據庫教程[M].北京:電子工業出版社,2004.
[6]宋坤,李偉明,劉銳寧.Visual C++數據庫系統開發案例精選[M].北京:人民郵電出版社,2006.
[7]何志勇,趙瑞國,袁軍社.傳感器數據庫管理系統設計[J].火箭推進,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.