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