1 引言
山東招遠招金集團是采、選、氰、冶綜合配套的中型國家二級企業(yè)和國家金、銀冶煉加工定點企業(yè)。計算機和自動化技術在招遠礦冶過程中的應用尤其令人矚目。其現(xiàn)有氰化處理能力已達到易選冶精礦400噸/日,復雜精礦100噸/日。本系統(tǒng)是一個大型的氰化車間,要采集數(shù)據(jù)的地點分布在整個廠區(qū),而且數(shù)量也很多,在數(shù)據(jù)采集和傳輸方面需解決分布廣,數(shù)量多的問題。為了解決這個問題,在傳統(tǒng)的DCS系統(tǒng)上引進了現(xiàn)場總線技術,提出了基于現(xiàn)場總線PROFIBUS的DCS控制系統(tǒng)。
現(xiàn)場總線技術是當今工業(yè)自動化領域技術發(fā)展的熱點,適用于現(xiàn)場儀表、控制系統(tǒng)和控制室之間的一種全分散、全數(shù)字化、智能、雙向、互聯(lián)、多點、多站的通訊系統(tǒng)。DCS技術是計算機技術、自動控制技術、通信技術和CRT顯示技術競相發(fā)展并緊密結合的產物,而通信技術在集散控制系統(tǒng)中占有重要地位。DCS是用分散的過程控制單元實現(xiàn)控制過程對象的目的,利用集中監(jiān)視和操作管理單元來達到綜合信息全面管理的目的。將過程控制單元(現(xiàn)場控制站)、監(jiān)視操作單元(操作單元)和系統(tǒng)管理單元(工程師站)通過通訊網絡構成一個完整的系統(tǒng),從而實現(xiàn)分散控制集中管理的目的。
2 系統(tǒng)介紹
氰化工藝系統(tǒng)主要包括加料、磨礦、堿浸壓濾、浸出、置換、浮選前壓濾、綜合回收、浮選尾礦壓濾等幾個主要工段,最終把金、銀、銅、鉛等分離出來;尾礦渣回收,用來提取其他非金屬(硫等)。
本系統(tǒng)設有兩個中央控制室,每個控制室CPU主站選用Siemens的Simatic S7-400的CPU414-2DP,每臺CPU都有一個CP443-5通訊處理器,在正常情況下,CP443-5通訊處理器可以分擔CPU-414-2DP的通訊任務,在非正常情況下,實現(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)場傳感器的輸出信號由各站信號模板采集、轉化為相應的數(shù)字信號然后通過通訊模塊送到400PLC主站,400PLC主站把各站送來的數(shù)據(jù)按要求進行各種運算、處理后通過MPI網絡傳到服務器??蛻魴C和服務器之間通過OPC方式進行數(shù)據(jù)的傳遞。
3 OPC技術在本系統(tǒng)中的應用[1]
3.1 OPC概念意義
由于計算機和工控軟硬件產品開發(fā)的漸進性與生命周期,今天的工控系統(tǒng)已經形成多廠商產品共存的異構環(huán)境。由于開發(fā)商的不同和設備、軟件的不同,目前的各種自動化系統(tǒng)都設計了各自專用的接口,這樣不同的開發(fā)商設計生產的產品就不能實現(xiàn)互相通信。而對集成大型自動化系統(tǒng)來說,在硬、軟件組件的選擇上受到很大的限制,不能利用現(xiàn)成的硬、軟件資源,浪費了大量的勞動卻不能保證所集成系統(tǒng)的質量。隨著技術的發(fā)展,自動化系統(tǒng)要求實現(xiàn)大范圍的信息共享及實時監(jiān)控,因而對工業(yè)控制系統(tǒng)的開放性、快速性、安全性提出了越來越高的要求。正是這種應用需求的強烈驅使,由基金會OPC國際組織(OLE for Process Control)提出一種專門適用于工業(yè)控制過程的標準。OPC提供了訪問工業(yè)控制中的站端數(shù)據(jù)的一種通用方式。按此標準設計自動化系統(tǒng),可使不同廠家的產品實現(xiàn)通用化,使系統(tǒng)能夠實現(xiàn)即插即用和無縫連接。
3.2 OPC技術原理
OPC是為了解決應用軟件和各種設備驅動程序的通訊而產生的一項工業(yè)技術規(guī)范和標準。它采用客戶/服務器體系,基于Microsoft的OLE/COM和DCOM(Distributed Component Object Model)技術,為硬件廠商和軟件開發(fā)者提供了一套標準的接口。OPC規(guī)范了接口函數(shù),不管現(xiàn)場設備以何種形式存在,客戶都以統(tǒng)一的方式去訪問,從而保證軟件對客戶的透明性。OPC是一種標準接口,它能被連接到I/O裝置、PLC(Prog- rammable Logic Control)、現(xiàn)場總線、組態(tài)軟件等,該技術提供一種即插即用的硬、軟件組件,用戶很容易將它們集成為完整的自動化系統(tǒng)。利用OPC技術開發(fā)標準的OPC服務器來代替過去專用的I/O設備驅動器軟件,并將各種應用設計成OPC的客戶端,這樣在OPC客戶和OPC服務器之間就可進行通信和互操作,OPC硬件和軟件制造商就能夠在互聯(lián)問題上花費很少的時間而將大量的精力放在應用問題上,從而減少大量的勞動。
OPC可以充當現(xiàn)場設備、數(shù)據(jù)傳輸和向上層的應用程序的接口。當作為下層現(xiàn)場設備的標準接口時它代替?zhèn)鹘y(tǒng)的“I/O驅動器”來完成與現(xiàn)場設備的通信。當OPC服務器向上層應用程序提供標準接口時,使上層的應用程序能夠取到OPC服務器中的數(shù)據(jù),從而向上實現(xiàn)互聯(lián),如圖1所示。

圖1 采用OPC前(1)后(2)的通信狀況
(1) 優(yōu)越性
基于先進的COM技術的OPC技術在過程控制中廣泛使用是順理成章的事情。
●系統(tǒng)開放
采用OPC的系統(tǒng),是完全開放的系統(tǒng)。盡管各個廠家的硬件設備和系統(tǒng)有所不同,但只要采用統(tǒng)一的OPC接口,就可容易的接入,因此用OPC構成的系統(tǒng)是完全開放的系統(tǒng);
●成本低
一是硬件可以選擇價廉物美的產品,二是軟件開發(fā)費用大幅度降低。三是人員的培訓期短,費用低;
●構成容易使用靈活
用戶可以根據(jù)自己的情況組成理想的系統(tǒng),既便于組成新的系統(tǒng),也便于原有系統(tǒng)的改造;
●即插即用
即插即用在設備制造廠和監(jiān)控系統(tǒng)的銷售商都支持OPC的場合。若用OPC構成一個監(jiān)控系統(tǒng)的話,可以根據(jù)項目自身的特點選用最佳的設備、遠程終端和監(jiān)控組態(tài)軟件,構成最合適的系統(tǒng)。圖2是采用OPC接口的系統(tǒng)結構。
圖2 采用OPC接口的系統(tǒng)結構
(2) OPC服務器的組成
OPC服務器由3類對象組成,相當于3種層次上的接口:服務器(server)、組(group)和數(shù)據(jù)項(item)。
服務器對象包含服務器的所有信息,同時也是組對象的容器。一個服務器對應于一個OPC Server,即一種設備的驅動程序。在一個Server中,可以有若干個組。
組對象包含本組的所有信息,同時包含并管理OPC數(shù)據(jù)項。OPC組對象為客戶提供了組織數(shù)據(jù)的一種方法。組是應用程序組織數(shù)據(jù)的一個單位??蛻艨蓪ζ溥M行讀寫,還可設置客戶端的數(shù)據(jù)更新速率。當服務器緩沖區(qū)內數(shù)據(jù)發(fā)生改變時,OPC Server將向客戶發(fā)出通知,客戶得到通知后再進行必要的處理,而無需浪費大量的時間進行查詢。OPC規(guī)范定義了2種組對象:公共組(或稱全局組,public)和局部組(或稱局域組、私有組,local)。公共組由多個客戶共有,局部組只隸屬于一個OPC客戶。
數(shù)據(jù)項是讀寫數(shù)據(jù)的最小邏輯單位,一個數(shù)據(jù)項與一個具體的位號相連。數(shù)據(jù)項不能獨立于組存在,必須隸屬于某一個組。組與項的關系如圖所示。在每個組對象中,可以加入多個OPC數(shù)據(jù)項(Item)。
OPC數(shù)據(jù)項是服務器端定義的對象,通常指向設備的一個寄存器單元。OPC客戶對設備寄存器的操作都是通過其數(shù)據(jù)項來完成的。通過定義數(shù)據(jù)項,OPC規(guī)范盡可能地隱藏了設備的特殊信息,也使OPC服務器的通用性大大增強。OPC數(shù)據(jù)項并不提供對外接口,客戶不能直接對其進行操作,所有操作都是通過組對象進行的。
應用程序作為OPC接口的Client方,硬件驅動程序作為OPC接口中的Server方。每一個OPC Client應用程序都可以連接若干個OPC Server,每一個硬件驅動程序可以為若干個應用程序提供數(shù)據(jù)。
(3) OPC的報警(alarm)和事件(event)
報警和事件處理機制增強了OPC客戶處理異常的能力。服務器在工作過程中可能出現(xiàn)異常,此時,OPC客戶可通過報警和事件處理接口得到通知,并能通過該接口獲得服務器的當前狀態(tài)。在很多場合,報警和事件的含義并不加以區(qū)分,兩者也經?;Q使用。從嚴格意義上講,兩者含義略有差別。
依據(jù)OPC規(guī)范,報警是一種異常狀態(tài),是OPC服務器或服務器的一個對象可能出現(xiàn)的所有狀態(tài)中的一種特殊情況。例如,服務器上標記為FC101的一個單元可能有如下狀態(tài):高出警戒、嚴重高出警戒、正常、低于警戒、嚴重低于警戒。除了正常狀態(tài)外,其他狀態(tài)都視為報警狀態(tài)。
事件則是一種可以檢測到的出現(xiàn)的情況,這種情況或來自OPC客戶,或來自OPC服務器,也可能來自OPC服務器所代表的設備,通常都有一定的物理意義。事件可能與服務器或服務器的一個對象的狀態(tài)有關,也可能毫無關系。如高出警戒和正常狀態(tài)的轉換事件和服務器的某個對象的狀態(tài)有關,而操作設備、改變系統(tǒng)配置以及出現(xiàn)系統(tǒng)錯誤等事件和對象狀態(tài)就無任何關系。
(4) OPC的接口方式
OPC規(guī)范提供了2套接口方案,即COM接口和自動化接口。COM接口效率高,通過該接口,客戶能夠發(fā)揮OPC服務器的最佳性能,采用C++語言的客戶一般采用COM接口方案;自動化接口使解釋性語言和宏語言訪問OPC服務器成為可能,采用VB語言的客戶一般采用自動化接口。自動化接口使解釋性語言和宏語言編寫客戶應用程序就很簡單,然而自動化運行時需進行類型檢查,這一點則大大犧牲了程序的運行速度。
(5) OPC的數(shù)據(jù)訪問方式
OPC服務器本身就是一個可執(zhí)行程序,該程序以設定的速率不斷地同物理設備進行數(shù)據(jù)交互。服務器內有一個數(shù)據(jù)緩沖區(qū),其中存有最新的數(shù)據(jù)值:數(shù)據(jù)質量戳和時間戳。時間戳表明服務器最近一次從設備讀取數(shù)據(jù)的時間。服務器對設備寄存器的讀取是不斷進行的,時間戳也在不斷更新。即使數(shù)據(jù)值和質量戳都沒有發(fā)生變化,時間戳也會進行更新。
客戶既可從服務器緩沖區(qū)讀取數(shù)據(jù),又可直接從設備讀取數(shù)據(jù),從設備直接讀取數(shù)據(jù)速度會慢一些。一般只有在故障診斷或極特殊的情況下才會采用。
4 OPC技術在本系統(tǒng)中的應用
4.1 OPC應用設計
WinCC是西門子公司在自動化領域采用先進的技術與微軟公司在共同開發(fā)的居于世界領先地位的工控綜合軟件平臺。它集成的OPC服務器使得過程數(shù)據(jù)可由其它應用程序(OPC客戶機)訪問。
統(tǒng)計辦公室的客戶機,通過廠區(qū)的局域網與服務器相連。本項目在客戶機上開發(fā)一個簡單的WinCC應用程序,由于接下來用VB開發(fā)的應用程序中也要求顯示監(jiān)控畫面,所以我們就沒有在該客戶機上的WinCC應用程序中建立監(jiān)控畫面,而僅僅只是利用WinCC內置的OPC進行數(shù)據(jù)的傳遞,把服務器上的實時數(shù)據(jù)讀到該客戶機上,方便VB應用程序的讀取。由于通訊程序是WinCC內部集成的,所以省去了很多編程工作,極大的推動了工程的進展。具體的操作:在WinCC Explorer窗口中,右擊Tag Management選擇Add New Driver,在彈出的對話框中選擇OPC.CHN打開,在Tag Management目錄下就會添加OPC目錄。打開OPC目錄,下面會出現(xiàn)OPC GROUPS,右擊它選擇System Parameter,彈出OPC Item Managr對話框,點擊computer按鈕在彈出的對話框中輸入服務器的計算機名,完成搜索,在服務器上打開的文件夾中,選擇要讀取的變量,完成OPC連接工作,配置如圖3所示。
圖3 OPC連接
工程開始時,我們也想省去這個中間環(huán)節(jié),不借助WinCC的內置OPC功能,而直接編寫一個VB通訊程序,實現(xiàn)客戶機與服務器的通訊。但是通過對該系統(tǒng)一段時間的使用和觀察,我們發(fā)現(xiàn)實際和理論之間確實存在著差距,在通訊程序運行過程中,總會出現(xiàn)一些我們理論上沒有考慮周全的問題,使得通訊程序頻頻出錯,造成很多數(shù)據(jù)的缺失,導致系統(tǒng)運行的不穩(wěn)定。下面對方案的采納和改進作一下具體的說明。
初期,在客戶機與服務器的通訊方面,我們曾在Visual Basic的環(huán)境下開發(fā)了一個OPC客戶端應用程序,利用該程序與服務器進行通訊,但是運行不久后,客戶機出現(xiàn)死機的問題,通過日志文件的監(jiān)測,發(fā)現(xiàn)死機時的服務器狀態(tài)為ServerState =2,OPCFailed表示OPC服務器由于異常而停止,出現(xiàn)該錯誤的原因是,客戶端程序中沒有實現(xiàn)較為完善的容錯和故障診斷的功能,當服務器出現(xiàn)短暫錯誤時,造成OPC連接中斷,此時客戶機不能及時的實現(xiàn)故障診斷,造成死機。
為了解決這一問題,提出第二種方案:即在客戶端程序中加入診斷程序,通過不斷連接服務器從而不斷檢測Sverstate參數(shù)來判斷服務器是否出現(xiàn)故障,若服務器狀態(tài)不正常,于是重新啟動該系統(tǒng)軟件,從而實現(xiàn)故障的診斷和處理。但是運行數(shù)周后,發(fā)現(xiàn)服務器資源被大量的消耗,經過查閱資料與反復試驗發(fā)現(xiàn)這種現(xiàn)象是由于客戶機與服務器頻繁的連接與斷開而引發(fā),從而造成服務器資源被大量的消耗。于是提出了第三種方案。
第三種方案將OPC通訊分為兩部分來做(如圖4所示),第一部分也就是最重要的部分是客戶機與服務器的通訊,這部分通訊我們利用了WinCC內部集成的OPC接口,也就是說在客戶機上開發(fā)了一個小型的WinCC客戶端應用程序,利用WinCC內部集成的OPC接口進行服務器和客戶機之間數(shù)據(jù)的傳輸,把服務器上的數(shù)據(jù)傳輸入WinCC客戶端應用程序中的標簽內,這是考慮到了其內部集成的接口的穩(wěn)定性與較完善的故障診斷與處理,這種方式可以應對服務器所出現(xiàn)的各種情況,徹底避免死機情況。第二部分是Visual Basic 和 客戶機上的WinCC進行通訊,這一部分的通訊我們是利用了自己開發(fā)的一個OPC客戶端應用程序來實現(xiàn)的,這個客戶端程序是在Visual Basic6.0的開發(fā)環(huán)境下進行開發(fā)的,其作用就是把WinCC客戶端應用程序中的標簽內的數(shù)據(jù)通過OPC接口傳輸入該系統(tǒng)軟件的界面上及數(shù)據(jù)庫內,以便進行整個系統(tǒng)的開發(fā)。

圖4 OPC通訊
WinCC在安裝時提供了OPC的客戶端控件:Siemens OPC DAAutomation 2.0(SOPCDAAuto.dll),這個控件就是我們在VB中要用到的控件,我們也可以使用通用的OPC客戶端控件:OPC Automation 2.0[6][7]。OPC連接部分的程序設計思路。
4.2 監(jiān)測評估程序基本功能
系統(tǒng)要完成三部分的監(jiān)測與管理的功能。監(jiān)測部分要完成70多個量的實時監(jiān)測與累計,并顯示出各個瞬時量的實時曲線;管理部分要完成統(tǒng)計計算,統(tǒng)計報表,成本核算,數(shù)據(jù)分析,錯誤列表,數(shù)據(jù)備份,參數(shù)設置,導入Excel表等幾大功能。要具備完善的數(shù)據(jù)匯總功能還要具有較完善的查詢功能及數(shù)據(jù)庫的維護功能,在此基礎上,進行大量數(shù)據(jù)分析和網絡數(shù)據(jù)庫查詢的設計。
系統(tǒng)完成如下功能:通過OPC客戶端程序與本機上的WinCC客戶端進行通訊,每當服務器上的數(shù)據(jù)有變化時,客戶端的WinCC上的數(shù)據(jù)也隨之發(fā)生變化,相應的管理軟件上的數(shù)據(jù)也發(fā)生變化,從而進行實時的監(jiān)測。每四分鐘把所有的瞬時量讀入4min數(shù)據(jù)庫中,用來劃出時實曲線,每半小時把所有量(包括瞬時量和累計量)讀入半小時數(shù)據(jù)庫,通過統(tǒng)計計算生成8小時數(shù)據(jù)庫和天數(shù)據(jù)庫。之所以要生成這兩個中間數(shù)據(jù)庫,是因為要對每個班次進行考核和滿足日后的日查詢功能。生產車間共分為甲、乙、丙3個班次,每個班次工作8小時,所以建立了8小時數(shù)據(jù)庫;在今后的查詢功能中都是以日查詢?yōu)榛A的,所以又建立了24小時數(shù)據(jù)庫。通過這兩個中間數(shù)據(jù)庫,可對各個部門的數(shù)據(jù)按要求顯示報表,計算各個部門的成本或消耗,并按條件選擇進行數(shù)據(jù)計算,以供用戶對各個部門生產狀況進行分析比較,并可以以棒圖和餅圖兩種方式形象的顯示。在數(shù)據(jù)采集的過程中,各個監(jiān)測量越限錯誤狀態(tài)也被實時的寫入錯誤列表,并可按選擇的條件進行錯誤列表的查詢。當進入新的一年時,可執(zhí)行備份功能將不需要分析的數(shù)據(jù)備份至備份庫中。為了方便對數(shù)據(jù)進行進一步的處理分析,還可將各個部門的數(shù)據(jù)按要求與EXCEL表鏈接,生成EXCEL表格式的文件。
5 項目中的技術難點
統(tǒng)計辦公室要對各個部門進行月結考核,需要記錄車間多個指標以及數(shù)據(jù)的變化并進行相應的數(shù)據(jù)處理,同時需要計算生產成本并打印詳細月報表等。由于WinCC自身的很多性能特點,滿足這么多細致的要求,工作量十分大。所以考慮到在統(tǒng)計報表及訪問數(shù)據(jù)庫方面Visual Basic 6.0具有強大的數(shù)據(jù)操作功能,該系統(tǒng)采用VB6.0結合Access數(shù)據(jù)庫進行開發(fā)。在通訊方面客戶機與服務器的通訊采用了服務器上的WinCC.Client與WinCC.Server上的WinCC內部集成的OPC互相通訊的方式,而客戶機上的Visual Basic 6.0與本機上的WinCC.Client的通訊則是通過在VB中開發(fā)OPC客戶端程序實現(xiàn)的。這樣做的目的是為了更好的利用WinCC內部集成的OPC來進行比較復雜的通訊,只在簡單部分使用VB的OPC客戶端應用程序。
6 結束語
本系統(tǒng)現(xiàn)已投入運行,且運行情況良好。系統(tǒng)對工藝流程和相關設備進行了改造,使重金屬的提取比例提高,使磨礦分級、氰化浸出、污水排放等工藝指標達到較高水平,不但為企業(yè)創(chuàng)造更大的經濟效益而且減少了環(huán)境污染,同時也改善了工人的工作環(huán)境降低了工作強度。本系統(tǒng)的開放性和可擴展性也很好的適應了車間改良的需求,可根據(jù)用戶的要求方便的鏈接多個從站,受到了用戶的好評。