1 引言
山東招遠招金集團是采、選、氰、冶綜合配套的中型國家二級企業(yè)和國家金、銀冶煉加工定點企業(yè)。計算機和自動化技術(shù)在招遠礦冶過程中的應(yīng)用尤其令人矚目。其現(xiàn)有氰化處理能力已達到易選冶精礦400噸/日,復(fù)雜精礦100噸/日。本系統(tǒng)是一個大型的氰化車間,要采集數(shù)據(jù)的地點分布在整個廠區(qū),而且數(shù)量也很多,在數(shù)據(jù)采集和傳輸方面需解決分布廣,數(shù)量多的問題。為了解決這個問題,在傳統(tǒng)的DCS系統(tǒng)上引進了現(xiàn)場總線技術(shù),提出了基于現(xiàn)場總線PROFIBUS的DCS控制系統(tǒng)。
現(xiàn)場總線技術(shù)是當(dāng)今工業(yè)自動化領(lǐng)域技術(shù)發(fā)展的熱點,適用于現(xiàn)場儀表、控制系統(tǒng)和控制室之間的一種全分散、全數(shù)字化、智能、雙向、互聯(lián)、多點、多站的通訊系統(tǒng)。DCS技術(shù)是計算機技術(shù)、自動控制技術(shù)、通信技術(shù)和CRT顯示技術(shù)競相發(fā)展并緊密結(jié)合的產(chǎn)物,而通信技術(shù)在集散控制系統(tǒng)中占有重要地位。DCS是用分散的過程控制單元實現(xiàn)控制過程對象的目的,利用集中監(jiān)視和操作管理單元來達到綜合信息全面管理的目的。將過程控制單元(現(xiàn)場控制站)、監(jiān)視操作單元(操作單元)和系統(tǒng)管理單元(工程師站)通過通訊網(wǎng)絡(luò)構(gòu)成一個完整的系統(tǒng),從而實現(xiàn)分散控制集中管理的目的。
2 系統(tǒng)介紹
氰化工藝系統(tǒng)主要包括加料、磨礦、堿浸壓濾、浸出、置換、浮選前壓濾、綜合回收、浮選尾礦壓濾等幾個主要工段,最終把金、銀、銅、鉛等分離出來;尾礦渣回收,用來提取其他非金屬(硫等)。
本系統(tǒng)設(shè)有兩個中央控制室,每個控制室CPU主站選用Siemens的Simatic S7-400的CPU414-2DP,每臺CPU都有一個CP443-5通訊處理器,在正常情況下,CP443-5通訊處理器可以分擔(dān)CPU-414-2DP的通訊任務(wù),在非正常情況下,實現(xiàn)了系統(tǒng)的軟冗余。上位機采用Simatic WinCC6.0作為上位監(jiān)控軟件。1#控制室400PLC主站配置6個ET200M子站。2#控制室400PLC主站配置2個ET200M子站。CPU414-2DP集成MPI通訊口和Profibus-DP通訊口,各子站與400PLC主站采用Profibus-DP[5]方式相連;同時400PLC主站通過MPI接口與上位機實現(xiàn)通訊?,F(xiàn)場傳感器的輸出信號由各站信號模板采集、轉(zhuǎn)化為相應(yīng)的數(shù)字信號然后通過通訊模塊送到400PLC主站,400PLC主站把各站送來的數(shù)據(jù)按要求進行各種運算、處理后通過MPI網(wǎng)絡(luò)傳到服務(wù)器??蛻魴C和服務(wù)器之間通過OPC方式進行數(shù)據(jù)的傳遞。
3 OPC技術(shù)在本系統(tǒng)中的應(yīng)用[1]
3.1 OPC概念意義
由于計算機和工控軟硬件產(chǎn)品開發(fā)的漸進性與生命周期,今天的工控系統(tǒng)已經(jīng)形成多廠商產(chǎn)品共存的異構(gòu)環(huán)境。由于開發(fā)商的不同和設(shè)備、軟件的不同,目前的各種自動化系統(tǒng)都設(shè)計了各自專用的接口,這樣不同的開發(fā)商設(shè)計生產(chǎn)的產(chǎn)品就不能實現(xiàn)互相通信。而對集成大型自動化系統(tǒng)來說,在硬、軟件組件的選擇上受到很大的限制,不能利用現(xiàn)成的硬、軟件資源,浪費了大量的勞動卻不能保證所集成系統(tǒng)的質(zhì)量。隨著技術(shù)的發(fā)展,自動化系統(tǒng)要求實現(xiàn)大范圍的信息共享及實時監(jiān)控,因而對工業(yè)控制系統(tǒng)的開放性、快速性、安全性提出了越來越高的要求。正是這種應(yīng)用需求的強烈驅(qū)使,由基金會OPC國際組織(OLE for Process Control)提出一種專門適用于工業(yè)控制過程的標(biāo)準(zhǔn)。OPC提供了訪問工業(yè)控制中的站端數(shù)據(jù)的一種通用方式。按此標(biāo)準(zhǔn)設(shè)計自動化系統(tǒng),可使不同廠家的產(chǎn)品實現(xiàn)通用化,使系統(tǒng)能夠?qū)崿F(xiàn)即插即用和無縫連接。
3.2 OPC技術(shù)原理
OPC是為了解決應(yīng)用軟件和各種設(shè)備驅(qū)動程序的通訊而產(chǎn)生的一項工業(yè)技術(shù)規(guī)范和標(biāo)準(zhǔn)。它采用客戶/服務(wù)器體系,基于Microsoft的OLE/COM和DCOM(Distributed Component Object Model)技術(shù),為硬件廠商和軟件開發(fā)者提供了一套標(biāo)準(zhǔn)的接口。OPC規(guī)范了接口函數(shù),不管現(xiàn)場設(shè)備以何種形式存在,客戶都以統(tǒng)一的方式去訪問,從而保證軟件對客戶的透明性。OPC是一種標(biāo)準(zhǔn)接口,它能被連接到I/O裝置、PLC(Prog- rammable Logic Control)、現(xiàn)場總線、組態(tài)軟件等,該技術(shù)提供一種即插即用的硬、軟件組件,用戶很容易將它們集成為完整的自動化系統(tǒng)。利用OPC技術(shù)開發(fā)標(biāo)準(zhǔn)的OPC服務(wù)器來代替過去專用的I/O設(shè)備驅(qū)動器軟件,并將各種應(yīng)用設(shè)計成OPC的客戶端,這樣在OPC客戶和OPC服務(wù)器之間就可進行通信和互操作,OPC硬件和軟件制造商就能夠在互聯(lián)問題上花費很少的時間而將大量的精力放在應(yīng)用問題上,從而減少大量的勞動。
OPC可以充當(dāng)現(xiàn)場設(shè)備、數(shù)據(jù)傳輸和向上層的應(yīng)用程序的接口。當(dāng)作為下層現(xiàn)場設(shè)備的標(biāo)準(zhǔn)接口時它代替?zhèn)鹘y(tǒng)的“I/O驅(qū)動器”來完成與現(xiàn)場設(shè)備的通信。當(dāng)OPC服務(wù)器向上層應(yīng)用程序提供標(biāo)準(zhǔn)接口時,使上層的應(yīng)用程序能夠取到OPC服務(wù)器中的數(shù)據(jù),從而向上實現(xiàn)互聯(lián),如圖1所示。
圖1 采用OPC前(1)后(2)的通信狀況
(1) 優(yōu)越性
基于先進的COM技術(shù)的OPC技術(shù)在過程控制中廣泛使用是順理成章的事情。
●系統(tǒng)開放
采用OPC的系統(tǒng),是完全開放的系統(tǒng)。盡管各個廠家的硬件設(shè)備和系統(tǒng)有所不同,但只要采用統(tǒng)一的OPC接口,就可容易的接入,因此用OPC構(gòu)成的系統(tǒng)是完全開放的系統(tǒng);
●成本低
一是硬件可以選擇價廉物美的產(chǎn)品,二是軟件開發(fā)費用大幅度降低。三是人員的培訓(xùn)期短,費用低;
●構(gòu)成容易使用靈活
用戶可以根據(jù)自己的情況組成理想的系統(tǒng),既便于組成新的系統(tǒng),也便于原有系統(tǒng)的改造;
●即插即用
即插即用在設(shè)備制造廠和監(jiān)控系統(tǒng)的銷售商都支持OPC的場合。若用OPC構(gòu)成一個監(jiān)控系統(tǒng)的話,可以根據(jù)項目自身的特點選用最佳的設(shè)備、遠程終端和監(jiān)控組態(tài)軟件,構(gòu)成最合適的系統(tǒng)。圖2是采用OPC接口的系統(tǒng)結(jié)構(gòu)。
圖2 采用OPC接口的系統(tǒng)結(jié)構(gòu)
(2) OPC服務(wù)器的組成
OPC服務(wù)器由3類對象組成,相當(dāng)于3種層次上的接口:服務(wù)器(server)、組(group)和數(shù)據(jù)項(item)。
服務(wù)器對象包含服務(wù)器的所有信息,同時也是組對象的容器。一個服務(wù)器對應(yīng)于一個OPC Server,即一種設(shè)備的驅(qū)動程序。在一個Server中,可以有若干個組。
組對象包含本組的所有信息,同時包含并管理OPC數(shù)據(jù)項。OPC組對象為客戶提供了組織數(shù)據(jù)的一種方法。組是應(yīng)用程序組織數(shù)據(jù)的一個單位??蛻艨蓪ζ溥M行讀寫,還可設(shè)置客戶端的數(shù)據(jù)更新速率。當(dāng)服務(wù)器緩沖區(qū)內(nèi)數(shù)據(jù)發(fā)生改變時,OPC Server將向客戶發(fā)出通知,客戶得到通知后再進行必要的處理,而無需浪費大量的時間進行查詢。OPC規(guī)范定義了2種組對象:公共組(或稱全局組,public)和局部組(或稱局域組、私有組,local)。公共組由多個客戶共有,局部組只隸屬于一個OPC客戶。
數(shù)據(jù)項是讀寫數(shù)據(jù)的最小邏輯單位,一個數(shù)據(jù)項與一個具體的位號相連。數(shù)據(jù)項不能獨立于組存在,必須隸屬于某一個組。組與項的關(guān)系如圖所示。在每個組對象中,可以加入多個OPC數(shù)據(jù)項(Item)。
OPC數(shù)據(jù)項是服務(wù)器端定義的對象,通常指向設(shè)備的一個寄存器單元。OPC客戶對設(shè)備寄存器的操作都是通過其數(shù)據(jù)項來完成的。通過定義數(shù)據(jù)項,OPC規(guī)范盡可能地隱藏了設(shè)備的特殊信息,也使OPC服務(wù)器的通用性大大增強。OPC數(shù)據(jù)項并不提供對外接口,客戶不能直接對其進行操作,所有操作都是通過組對象進行的。
應(yīng)用程序作為OPC接口的Client方,硬件驅(qū)動程序作為OPC接口中的Server方。每一個OPC Client應(yīng)用程序都可以連接若干個OPC Server,每一個硬件驅(qū)動程序可以為若干個應(yīng)用程序提供數(shù)據(jù)。
(3) OPC的報警(alarm)和事件(event)
報警和事件處理機制增強了OPC客戶處理異常的能力。服務(wù)器在工作過程中可能出現(xiàn)異常,此時,OPC客戶可通過報警和事件處理接口得到通知,并能通過該接口獲得服務(wù)器的當(dāng)前狀態(tài)。在很多場合,報警和事件的含義并不加以區(qū)分,兩者也經(jīng)?;Q使用。從嚴(yán)格意義上講,兩者含義略有差別。
依據(jù)OPC規(guī)范,報警是一種異常狀態(tài),是OPC服務(wù)器或服務(wù)器的一個對象可能出現(xiàn)的所有狀態(tài)中的一種特殊情況。例如,服務(wù)器上標(biāo)記為FC101的一個單元可能有如下狀態(tài):高出警戒、嚴(yán)重高出警戒、正常、低于警戒、嚴(yán)重低于警戒。除了正常狀態(tài)外,其他狀態(tài)都視為報警狀態(tài)。
事件則是一種可以檢測到的出現(xiàn)的情況,這種情況或來自O(shè)PC客戶,或來自O(shè)PC服務(wù)器,也可能來自O(shè)PC服務(wù)器所代表的設(shè)備,通常都有一定的物理意義。事件可能與服務(wù)器或服務(wù)器的一個對象的狀態(tài)有關(guān),也可能毫無關(guān)系。如高出警戒和正常狀態(tài)的轉(zhuǎn)換事件和服務(wù)器的某個對象的狀態(tài)有關(guān),而操作設(shè)備、改變系統(tǒng)配置以及出現(xiàn)系統(tǒng)錯誤等事件和對象狀態(tài)就無任何關(guān)系。
(4) OPC的接口方式
OPC規(guī)范提供了2套接口方案,即COM接口和自動化接口。COM接口效率高,通過該接口,客戶能夠發(fā)揮OPC服務(wù)器的最佳性能,采用C++語言的客戶一般采用COM接口方案;自動化接口使解釋性語言和宏語言訪問OPC服務(wù)器成為可能,采用VB語言的客戶一般采用自動化接口。自動化接口使解釋性語言和宏語言編寫客戶應(yīng)用程序就很簡單,然而自動化運行時需進行類型檢查,這一點則大大犧牲了程序的運行速度。
(5) OPC的數(shù)據(jù)訪問方式
OPC服務(wù)器本身就是一個可執(zhí)行程序,該程序以設(shè)定的速率不斷地同物理設(shè)備進行數(shù)據(jù)交互。服務(wù)器內(nèi)有一個數(shù)據(jù)緩沖區(qū),其中存有最新的數(shù)據(jù)值:數(shù)據(jù)質(zhì)量戳和時間戳。時間戳表明服務(wù)器最近一次從設(shè)備讀取數(shù)據(jù)的時間。服務(wù)器對設(shè)備寄存器的讀取是不斷進行的,時間戳也在不斷更新。即使數(shù)據(jù)值和質(zhì)量戳都沒有發(fā)生變化,時間戳也會進行更新。
客戶既可從服務(wù)器緩沖區(qū)讀取數(shù)據(jù),又可直接從設(shè)備讀取數(shù)據(jù),從設(shè)備直接讀取數(shù)據(jù)速度會慢一些。一般只有在故障診斷或極特殊的情況下才會采用。
4 OPC技術(shù)在本系統(tǒng)中的應(yīng)用
4.1 OPC應(yīng)用設(shè)計
WinCC是西門子公司在自動化領(lǐng)域采用先進的技術(shù)與微軟公司在共同開發(fā)的居于世界領(lǐng)先地位的工控綜合軟件平臺。它集成的OPC服務(wù)器使得過程數(shù)據(jù)可由其它應(yīng)用程序(OPC客戶機)訪問。
統(tǒng)計辦公室的客戶機,通過廠區(qū)的局域網(wǎng)與服務(wù)器相連。本項目在客戶機上開發(fā)一個簡單的WinCC應(yīng)用程序,由于接下來用VB開發(fā)的應(yīng)用程序中也要求顯示監(jiān)控畫面,所以我們就沒有在該客戶機上的WinCC應(yīng)用程序中建立監(jiān)控畫面,而僅僅只是利用WinCC內(nèi)置的OPC進行數(shù)據(jù)的傳遞,把服務(wù)器上的實時數(shù)據(jù)讀到該客戶機上,方便VB應(yīng)用程序的讀取。由于通訊程序是WinCC內(nèi)部集成的,所以省去了很多編程工作,極大的推動了工程的進展。具體的操作:在WinCC Explorer窗口中,右擊Tag Management選擇Add New Driver,在彈出的對話框中選擇OPC.CHN打開,在Tag Management目錄下就會添加OPC目錄。打開OPC目錄,下面會出現(xiàn)OPC GROUPS,右擊它選擇System Parameter,彈出OPC Item Managr對話框,點擊computer按鈕在彈出的對話框中輸入服務(wù)器的計算機名,完成搜索,在服務(wù)器上打開的文件夾中,選擇要讀取的變量,完成OPC連接工作,配置如圖3所示。
圖3 OPC連接
工程開始時,我們也想省去這個中間環(huán)節(jié),不借助WinCC的內(nèi)置OPC功能,而直接編寫一個VB通訊程序,實現(xiàn)客戶機與服務(wù)器的通訊。但是通過對該系統(tǒng)一段時間的使用和觀察,我們發(fā)現(xiàn)實際和理論之間確實存在著差距,在通訊程序運行過程中,總會出現(xiàn)一些我們理論上沒有考慮周全的問題,使得通訊程序頻頻出錯,造成很多數(shù)據(jù)的缺失,導(dǎo)致系統(tǒng)運行的不穩(wěn)定。下面對方案的采納和改進作一下具體的說明。
初期,在客戶機與服務(wù)器的通訊方面,我們曾在Visual Basic的環(huán)境下開發(fā)了一個OPC客戶端應(yīng)用程序,利用該程序與服務(wù)器進行通訊,但是運行不久后,客戶機出現(xiàn)死機的問題,通過日志文件的監(jiān)測,發(fā)現(xiàn)死機時的服務(wù)器狀態(tài)為ServerState =2,OPCFailed表示OPC服務(wù)器由于異常而停止,出現(xiàn)該錯誤的原因是,客戶端程序中沒有實現(xiàn)較為完善的容錯和故障診斷的功能,當(dāng)服務(wù)器出現(xiàn)短暫錯誤時,造成OPC連接中斷,此時客戶機不能及時的實現(xiàn)故障診斷,造成死機。
為了解決這一問題,提出第二種方案:即在客戶端程序中加入診斷程序,通過不斷連接服務(wù)器從而不斷檢測Sverstate參數(shù)來判斷服務(wù)器是否出現(xiàn)故障,若服務(wù)器狀態(tài)不正常,于是重新啟動該系統(tǒng)軟件,從而實現(xiàn)故障的診斷和處理。但是運行數(shù)周后,發(fā)現(xiàn)服務(wù)器資源被大量的消耗,經(jīng)過查閱資料與反復(fù)試驗發(fā)現(xiàn)這種現(xiàn)象是由于客戶機與服務(wù)器頻繁的連接與斷開而引發(fā),從而造成服務(wù)器資源被大量的消耗。于是提出了第三種方案。
第三種方案將OPC通訊分為兩部分來做(如圖4所示),第一部分也就是最重要的部分是客戶機與服務(wù)器的通訊,這部分通訊我們利用了WinCC內(nèi)部集成的OPC接口,也就是說在客戶機上開發(fā)了一個小型的WinCC客戶端應(yīng)用程序,利用WinCC內(nèi)部集成的OPC接口進行服務(wù)器和客戶機之間數(shù)據(jù)的傳輸,把服務(wù)器上的數(shù)據(jù)傳輸入WinCC客戶端應(yīng)用程序中的標(biāo)簽內(nèi),這是考慮到了其內(nèi)部集成的接口的穩(wěn)定性與較完善的故障診斷與處理,這種方式可以應(yīng)對服務(wù)器所出現(xiàn)的各種情況,徹底避免死機情況。第二部分是Visual Basic 和 客戶機上的WinCC進行通訊,這一部分的通訊我們是利用了自己開發(fā)的一個OPC客戶端應(yīng)用程序來實現(xiàn)的,這個客戶端程序是在Visual Basic6.0的開發(fā)環(huán)境下進行開發(fā)的,其作用就是把WinCC客戶端應(yīng)用程序中的標(biāo)簽內(nèi)的數(shù)據(jù)通過OPC接口傳輸入該系統(tǒng)軟件的界面上及數(shù)據(jù)庫內(nèi),以便進行整個系統(tǒng)的開發(fā)。
圖4 OPC通訊
WinCC在安裝時提供了OPC的客戶端控件:Siemens OPC DAAutomation 2.0(SOPCDAAuto.dll),這個控件就是我們在VB中要用到的控件,我們也可以使用通用的OPC客戶端控件:OPC Automation 2.0[6][7]。OPC連接部分的程序設(shè)計思路。
4.2 監(jiān)測評估程序基本功能
系統(tǒng)要完成三部分的監(jiān)測與管理的功能。監(jiān)測部分要完成70多個量的實時監(jiān)測與累計,并顯示出各個瞬時量的實時曲線;管理部分要完成統(tǒng)計計算,統(tǒng)計報表,成本核算,數(shù)據(jù)分析,錯誤列表,數(shù)據(jù)備份,參數(shù)設(shè)置,導(dǎo)入Excel表等幾大功能。要具備完善的數(shù)據(jù)匯總功能還要具有較完善的查詢功能及數(shù)據(jù)庫的維護功能,在此基礎(chǔ)上,進行大量數(shù)據(jù)分析和網(wǎng)絡(luò)數(shù)據(jù)庫查詢的設(shè)計。
系統(tǒng)完成如下功能:通過OPC客戶端程序與本機上的WinCC客戶端進行通訊,每當(dāng)服務(wù)器上的數(shù)據(jù)有變化時,客戶端的WinCC上的數(shù)據(jù)也隨之發(fā)生變化,相應(yīng)的管理軟件上的數(shù)據(jù)也發(fā)生變化,從而進行實時的監(jiān)測。每四分鐘把所有的瞬時量讀入4min數(shù)據(jù)庫中,用來劃出時實曲線,每半小時把所有量(包括瞬時量和累計量)讀入半小時數(shù)據(jù)庫,通過統(tǒng)計計算生成8小時數(shù)據(jù)庫和天數(shù)據(jù)庫。之所以要生成這兩個中間數(shù)據(jù)庫,是因為要對每個班次進行考核和滿足日后的日查詢功能。生產(chǎn)車間共分為甲、乙、丙3個班次,每個班次工作8小時,所以建立了8小時數(shù)據(jù)庫;在今后的查詢功能中都是以日查詢?yōu)榛A(chǔ)的,所以又建立了24小時數(shù)據(jù)庫。通過這兩個中間數(shù)據(jù)庫,可對各個部門的數(shù)據(jù)按要求顯示報表,計算各個部門的成本或消耗,并按條件選擇進行數(shù)據(jù)計算,以供用戶對各個部門生產(chǎn)狀況進行分析比較,并可以以棒圖和餅圖兩種方式形象的顯示。在數(shù)據(jù)采集的過程中,各個監(jiān)測量越限錯誤狀態(tài)也被實時的寫入錯誤列表,并可按選擇的條件進行錯誤列表的查詢。當(dāng)進入新的一年時,可執(zhí)行備份功能將不需要分析的數(shù)據(jù)備份至備份庫中。為了方便對數(shù)據(jù)進行進一步的處理分析,還可將各個部門的數(shù)據(jù)按要求與EXCEL表鏈接,生成EXCEL表格式的文件。
5 項目中的技術(shù)難點
統(tǒng)計辦公室要對各個部門進行月結(jié)考核,需要記錄車間多個指標(biāo)以及數(shù)據(jù)的變化并進行相應(yīng)的數(shù)據(jù)處理,同時需要計算生產(chǎn)成本并打印詳細(xì)月報表等。由于WinCC自身的很多性能特點,滿足這么多細(xì)致的要求,工作量十分大。所以考慮到在統(tǒng)計報表及訪問數(shù)據(jù)庫方面Visual Basic 6.0具有強大的數(shù)據(jù)操作功能,該系統(tǒng)采用VB6.0結(jié)合Access數(shù)據(jù)庫進行開發(fā)。在通訊方面客戶機與服務(wù)器的通訊采用了服務(wù)器上的WinCC.Client與WinCC.Server上的WinCC內(nèi)部集成的OPC互相通訊的方式,而客戶機上的Visual Basic 6.0與本機上的WinCC.Client的通訊則是通過在VB中開發(fā)OPC客戶端程序?qū)崿F(xiàn)的。這樣做的目的是為了更好的利用WinCC內(nèi)部集成的OPC來進行比較復(fù)雜的通訊,只在簡單部分使用VB的OPC客戶端應(yīng)用程序。
6 結(jié)束語
本系統(tǒng)現(xiàn)已投入運行,且運行情況良好。系統(tǒng)對工藝流程和相關(guān)設(shè)備進行了改造,使重金屬的提取比例提高,使磨礦分級、氰化浸出、污水排放等工藝指標(biāo)達到較高水平,不但為企業(yè)創(chuàng)造更大的經(jīng)濟效益而且減少了環(huán)境污染,同時也改善了工人的工作環(huán)境降低了工作強度。本系統(tǒng)的開放性和可擴展性也很好的適應(yīng)了車間改良的需求,可根據(jù)用戶的要求方便的鏈接多個從站,受到了用戶的好評。