任玉輝 鄒修鐵
摘 要:目前,DCS系統(tǒng)已經在工業(yè)控制領域被廣泛應用,大大提高了工業(yè)控制的自動化水平,但是DCS系統(tǒng)給出的是實時數(shù)據(jù),如何快速及時地采集這些實時數(shù)據(jù)將其存儲,形成歷史數(shù)據(jù)并作為管理人員進行考核評比的標準,成為擺在管理人員面前的一個問題。通過OPC技術與DCS系統(tǒng)通訊實現(xiàn)數(shù)據(jù)采集,使用數(shù)據(jù)庫完成對數(shù)據(jù)的存儲,開發(fā)報表系統(tǒng)能夠很好的解決這一問題?;诖?,本文結合OPC通訊技術,詳細介紹了某燒結廠報表系統(tǒng)的開發(fā)與應用過程。
關鍵詞:OPC;燒結;報表
1.引言
隨著燒結工業(yè)生產規(guī)模的擴大和對產品質量的要求的不斷提高,如何高效準確的完成對燒結過程的管理考核,成為了擺在管理人員面前的一個問題。目前,各個燒結廠管理人員只能通過定時的人工抄寫各項指標值,再一項一項的錄入到EXCEL表格中,通過一系列的計算,形成生產報表,完成考核。這種方式不僅繁瑣,而且很大程度上依賴人工操作,缺乏可靠性和準確性。因此,開發(fā)能夠與DCS系統(tǒng)通訊高效準確地生成生產管理報表的報表系統(tǒng)就顯得尤為重要。
本文提出的基于OPC通訊技術的報表管理系統(tǒng)是根據(jù)某燒結廠的需求完成開發(fā)的。系統(tǒng)的數(shù)據(jù)處理層通過采集模塊完成對DCS系統(tǒng)指定數(shù)據(jù)的采集,并將數(shù)據(jù)存儲在數(shù)據(jù)庫服務器中,數(shù)據(jù)庫服務器完成對歷史的數(shù)據(jù)的抽取挖掘,形成報表所需要的數(shù)據(jù),系統(tǒng)客戶端通過與數(shù)據(jù)庫服務器通訊,生成所需要的報表。
2.相關技術介紹
系統(tǒng)是基于OPC通訊技術來完成開發(fā)的。OPC(OLE for Process Control, 用于過程控制的OLE)是一個工業(yè)標準,它基于微軟的OLE(現(xiàn)在的Active X)、COM (部件對象模型)和DCOM (分布式部件對象模型)技術,包括一整套接口、屬性和方法的標準集,用于過程控制和制造業(yè)自動化系統(tǒng)。
OPC數(shù)據(jù)訪問主要由服務器對象、組對象、和項對象組成:
(1) OPC Server(服務器):OPC啟動服務器,獲得其它對象和服務的起始類,并用于返回OPC Group類對象,可以動態(tài)創(chuàng)建和釋放組對象;
(2) OPC Group(組):存儲由若干OPC Item組成的Group信息,并用于返回OPC Item類對象。
(3) OPC Item(項):存儲具體Item 的定義、數(shù)據(jù)值、狀態(tài)值等信息。每個OPC項代表了OPC服務器到數(shù)據(jù)源的一個物理連接。數(shù)據(jù)項是讀寫數(shù)據(jù)的最小邏輯單位。OPC項不可以由OPC客戶直接操作,所有對OPC項的操作都是通過包含該項的OPC組進行的。
OPC服務器對象和組對象是聚合關系,即OPC服務器對象產生OPC組對象后,將組對象的指針傳遞給客戶,由客戶之間操作對象。這樣既提高了數(shù)據(jù)存取的速度,也易于功能擴展,體現(xiàn)了組件軟件的重用性。
3.系統(tǒng)的開發(fā)與應用
系統(tǒng)以VS2005為開發(fā)平臺,ORACLE作為數(shù)據(jù)庫服務器,采用了基于三層結構的多層架構開發(fā)模式,結合OPC通訊技術完成與DCS系統(tǒng)的通訊。系統(tǒng)結構圖如圖3-1所示:
3-1系統(tǒng)結構圖
3.1 數(shù)據(jù)采集模塊
為了增強系統(tǒng)的實用性,在實現(xiàn)數(shù)據(jù)采集模塊的過程中將OPCServer和OPC項的信息存儲在數(shù)據(jù)庫中,用戶可以根據(jù)自己的需要,把OPCServer對象信息和OPC項對象信息配置在數(shù)據(jù)庫中,這樣處理后,用戶可以根據(jù)自己的需要,配置OPC項對象,避免了加載不需要的項對象而造成的系統(tǒng)資源的浪費。
實現(xiàn)此OPC客戶端主要通過以下幾個步驟:
(1) 導入OPC自動化接口服務。將OPCAutomation.dll添加到項目引用中;
(2) 連接OPC服務器。OPC提供的連接服務器的接口需要兩個參數(shù):OPC服務器名和OPC服務器IP地址;
(3) 添加組。
(4)添加數(shù)據(jù)項。
(5) 讀取OPC數(shù)據(jù)。在客戶端有兩種方式獲得服務器端的數(shù)據(jù)。一種是定時的主動去讀取服務器上的值,另一種是同通過組對象的DataChange事件觸發(fā)來獲得,當服務器上的數(shù)據(jù)發(fā)生變化時,會觸發(fā)DataChange事件,本項目中是采用主動讀取的方式來獲得數(shù)據(jù)的;
在每次關閉數(shù)據(jù)采集模塊的時候,要釋放OPCServer對象的組對象和項對象。因為每臺OPCServer對連接點數(shù)是有限制的,如果不釋放這些對象,會使連接點數(shù)積累而達到限制值。
3.2 數(shù)據(jù)庫設計
系統(tǒng)采用ORACLE 數(shù)據(jù)庫作為數(shù)據(jù)庫服務器,數(shù)據(jù)庫設計主要分為三個部分:
(1) 數(shù)據(jù)表部分
數(shù)據(jù)表分為系統(tǒng)表、數(shù)據(jù)抽取表、報表數(shù)據(jù)表三部分,其中系統(tǒng)表記錄整個系統(tǒng)的相關信息,包括OPC配置信息表、OPC點信息表、數(shù)據(jù)總表、系統(tǒng)日志信息表等;數(shù)據(jù)抽取表分為小時數(shù)據(jù)抽取表、班數(shù)據(jù)抽取表,小時數(shù)據(jù)抽取表將數(shù)據(jù)總表中的數(shù)據(jù)每小時做一次平均、求和等處理后逐條記錄,數(shù)據(jù)抽取表主要為日報表提供數(shù)據(jù)來源,班數(shù)據(jù)抽取表將小時數(shù)據(jù)表的數(shù)據(jù)每班做一次平均、求和等處理后逐條記錄,為月報表、年報表提供數(shù)據(jù)來源;報表數(shù)據(jù)表是按照客戶端所需報表的格式定義的數(shù)據(jù)表,將客戶端報表的數(shù)據(jù)項與報表數(shù)據(jù)表對應的字段進行綁定,最終生成所需要的數(shù)據(jù)報表。
(2) 作業(yè)部分
數(shù)據(jù)庫服務器中的作業(yè)按照指定的周期完成指定的命令,主要完成數(shù)據(jù)的定時抽取。如(1)中的小時數(shù)據(jù)抽取表、班數(shù)據(jù)抽取表都是依靠作業(yè)來定時完成的。
(3) 存儲過程部分
在生成報表的時候,需要對基礎數(shù)據(jù)進行平均、求和、求最值以及類似作業(yè)率、一級品率等相關計算,這些操作都是通過編寫存儲過程來完成的,通過存儲過程處理形成最終的數(shù)據(jù)寫入到對應的報表數(shù)據(jù)表中,采用存儲過程完成這些計算速度更快性能更好,系統(tǒng)在客戶端直接調用存儲過程,形成最終的數(shù)據(jù)報表。
3.2客戶端開發(fā)
系統(tǒng)的客戶端是采用多層架構設計模式來實現(xiàn)的,實現(xiàn)動態(tài)創(chuàng)建不同的數(shù)據(jù)層對象接口。整個架構包括UI(表示層)、 BLL(業(yè)務邏輯層)、DAL(數(shù)據(jù)庫訪問層)、Model(模塊層)四個軟件層次模塊。
各部分的具體功能如下:
(1)UI:表現(xiàn)層。人機交互界面,調用業(yè)務邏輯層的接口。
(2)BLL:業(yè)務邏輯層組件。調用接口實現(xiàn)數(shù)據(jù)層的訪問。
(3) DAL:數(shù)據(jù)訪問層,實現(xiàn)BLL中的接口,完成與數(shù)據(jù)庫的數(shù)據(jù)操作。
(4)Model: 業(yè)務實體模型。數(shù)據(jù)庫是關系型,不是面向對象的,要實現(xiàn)面向對象那就得把平面的表結合業(yè)務規(guī)則抽象成類。此層在各個層間傳遞參數(shù)。
4 結論
本文提出的報表管理系統(tǒng)是在Visual C#環(huán)境下,結合OPC通訊技術,數(shù)據(jù)庫技術完成開發(fā)的。系統(tǒng)在上海某燒結廠運行使用,系統(tǒng)運行正常穩(wěn)定,可以快速準確的生成生產報表,大大提高了管理者的工作效率,達到預期目的,有較大應用價值。