胡浩民,王澤杰
HU Hao-min,WANG Ze-jie
(上海工程技術大學 電子電氣工程學院,上海 201620)
SCADA(Supervisory Control And Data Acquisition,監控與數據采集)系統是以計算機為基礎的生產過程控制與調度自動化系統,它可以對現場的運行設備進行監視和控制,以實現數據采集、設備控制、測量、參數調節以及各類信號報警等各項功能[1]。系統具有實時、多任務、開放式體系結構以及分布式功能設計等特點,已在電力系統、樓宇自動化、生產線管理等領域使用。SCADA包含三個部分:分布式的數據采集系統(下位機);過程監控與管理系統(上位機);以及數據通信網絡。可編程控制器PLC是廣泛采用的下位機設備;組態軟件則是上位機的核心組成部分。
由于上位機采集數據具有全面性和完整性,監控中心的控制管理也具有全局性,能更好地實現整個系統的合理、優化運行[2]。但是在某些應用領域,通過組態軟件把PLC獲取的數據采集到中央控制室往往并不能滿足需求。例如,希望將設備運作狀態發送到定制的LED、數碼管等顯示設備,這就需要把數據根據特定協議重新組成數據包進行發送。針對這些特殊的應用,目前已有不少解決方案,本文將比較這些方案的不足之處,并提出多通道協同模型以提高通信性能。
1.1 系統結構
SCADA系統中,組態應用作為數據采集、處理、轉發中心,在上位機中處于核心位置;它與各種控制、檢測設備(如現場總線上的PLC、智能儀表等)共同構成快速響應控制中心(如圖1所示)。通過組態應用,操作人員可以完成如現場數據及流程畫面的查看;歷史生產報表的打印;過程報警的獲得,以及生產過程參數和狀態的修改等任務。但有時需要對組態應用中的數據進行二次利用,如前所述,把數據實時地組成數據包發送到定制的專用監控設備,這就需要有相應的應用程序從組態應用取得數據。
組態軟件提供了相應的通信接口,但選擇何種通信方法,以及采用怎樣的通信模型與算法,將會在很大程度上影響應用的實時性。

圖1 系統結構
1.2 通信方法與存在問題
與組態軟件通信方法常用有:歸檔數據庫訪問、腳本通信、動態數據交換(Dynamic Data Exchange,DDE)、以及OPC(OLE for Process Control)接口通信等。
歸檔數據庫是組態軟件將采集的數據作為歷史記錄進行周期性地存儲。由于采集周期和歸檔周期可以不同,且歸檔周期是采集周期的整數倍,因此數個過程值才產生一個歸檔值[3]。這會影響過程值的真實性,所以歸檔數據庫常用于為報表系統提供數據源,而對于轉發到專用監控設備的特殊應用,則難以滿足實時性需求。
腳本語言是很多組態軟件提供的功能。在組態系統中,通過腳本編程讀取過程值,并周期性地寫到共享文件;應用程序對共享文件進行周期性地讀操作。這種通過共享文件的讀寫實現數據交互的通信方式過于頻繁地訪問外存,效率比較低,而且不利于設備的穩定。
動態數據交換DDE是一種基于Windows消息傳遞而建立的進程間通信技術,DDE客戶端通過服務名和主題名,建立起與DDE服務器的連接,從而形成雙向的數據連接通道。但是這種方式通信效率不高,一般適合于少量數據的傳輸。DDE技術已趨于淘汰,實現大批量數據的通信不僅造成資源消耗大,而且效率很低[4]。
OPC規范以組件對象模型和分布式組件對象模型(COM/DCOM)技術為基礎,采用客戶、服務器模式,定義了一組COM對象及其接口規范[5]。這種客戶/服務器模式與前三種通信方法相比,具有更好的可靠性和更高的穩定性。但即使采用OPC技術,如果采用的通信模型不同,效率也會有很大差異。比如單線程輪詢方式簡單易實現,但效率低下,實時性難以保證;多通道協同通信模型就是為提高通信效率,又合理利用系統資源而設計的一種通信方法。

圖2 模型原理
2.1 設計原理
在自動化控制領域,采集上百個點的過程數據是比較常見的。如果以輪詢方式采集數據,即使使用可靠性與穩定性比較好的OPC技術,也會使得系統效率低下。以圖1所示的監控系統結構為例,以輪詢方式從組態應用逐項獲取每個標簽值,然后組成數據包進行發送,這樣會嚴重影響實時性。尤其當采集的標簽量比較多的情況,刷新的周期會相當長。如果采用簡單的并發模式,為每個標簽創建一個組態服務的OPC連接,又會極大地浪費系統資源。
針對以上情況,設計了多通道協同通信模型(如圖2所示)。模型首先建立若干個與組態系統OPC服務器建立連接的通道,并將要通信的標簽分配到通道中。每個通道只為其中的標簽服務,通過訪問通道獲取標簽對應的過程值。
在具體實現上,每個通道可以由一個工作者進程/線程進行維護(以下稱“通道維護者”)。通道維護者從通道讀取標簽值,對比上一次讀取的數據,如果發生變化,說明監控儀表設備的數據需要刷新,通道維護者根據相應協議組成數據包,并通過映射關系放到緩沖列表,同時置發送標記為“需要發送”狀態。通道之間由于沒有競爭的資源,可以完全并發處理。這樣有利于提高數據采集的實時性。
“數據發送者”也可以由工作者進程/線程實現,用于訪問緩沖列表中的每個數據項。通過判斷數據包發送標記是否為“需要發送”狀態,決定是否發送數據。如果需要發送,則發送數據包,并重置發送標記為“已發送”狀態。因此“發送標記”成為了通道維護者和數據發送者的臨界資源,可以使用信號量來實現對臨界資源的互斥操作。
2.2 算法描述
OPC技術的實現由OPC服務器和OPC客戶端應用兩部分完成。其中,服務器實現現場設備的數據采集,并通過標準的OPC接口供OPC客戶端訪問。OPC服務器對象被分為3層結構:服務器對象(Sever)、組(Group)和項(Item)[6]。
通道維護者和數據發送者對臨界資源(發送標記)的互斥訪問由信號量和PV原語操作來完成。OPC標簽項的所有操作封裝成COpcTagItem類;通道維護者封裝成CChannelWorker類;數據發送者封裝成CSendWorker類。對圖2所示的模型用類C++描述如下:
緩沖列表BufferList中的每個對象為COpcTagItem類型,其中包含了模型中提到的標簽ID、名稱、采集的數據、數據包、發送標記等信息:

除以上成員變量之外,該類還有如連接通道的方法ConnectChannel();從通道獲取標簽值的方法GetTagItemValue()等。信號量對象Smph的初值為1。
通道維護者類CChannelWorker繼承了線程類TThread[7],包含了ChannelID(通道ID)、OpcChannel(Opc通道指針,指針指向實現OPC通信功能的COpcComm類對象)等數據成員。以及用于啟用通道的方法Startup();關閉通道的方法Shutdown();為通道分配標簽的方法AssignTags()。Execute()完成通道維護的主要功能,其中的算法描述如下:


從算法可知,通道維護者和數據發送者通過對緩沖列表中每個OPC標簽項的信號量成員Smph進行PV操作,實現兩者之間的協同。同時,多個通道維護者之間又是一種可以完全并行處理的協同關系,這將有效提高數據的采集與發送的通信效率。
已將OPC多通道協同通信模型,應用到污水處理、輪胎熱裂解、變電站、造船基地給排水等自動化監控領域。圖3所示是某污水處理廠流程模擬圖(部分)。以氧化溝系統為例,需要監控點就有28處(包括曝氣機、攪拌機、推進器狀態,污泥濃度計MLSS30X、溶解氧探頭DO30X值等)。整個污水處理系統還包括了:污水提升泵站、旋流沉砂池、離子除臭系統、污泥脫水間、除磷劑投加系統、二沉池、污泥泵房、清水池及貯泥池等若干部分,要監控的設備多達上百個。
確保所有設備監控數據的準確性與實時性是自動化控制的重要組成部分。實踐表明,采用1.2所述的“歸檔數據庫訪問”、“腳本通信”、“動態數據交換”這幾種通信方法,效果不理想,使用“OPC接口通信”,效率高于前三者,而在此基礎上采用多通道協同通信模型,通信效率得到了明顯提高。

圖3 污水處理流程(部分)
多通道協同通信模型是對通信因子負載平衡的一種抽象。通過多通道,使得對組態OPC服務的連接數量維持合理的水平,起到既實現并發處理,提高速度;又合理使用資源的作用。根據該模型設計的算法與實現的程序已應用于污水處理、橡膠熱裂解、變配電所等自動化控制領域。實踐應用表明,該模型有效地提高了與組態軟件的通信速度,能滿足工業的實時性需求。
[1]王振明.SCADA監控與數據采集軟件系統的設計與開發[M].北京:機械工業出版社,2009:1-2.
[2]王華忠.監控與數據采集(SCADA)系統及其應用[M].北京:電子工業出版社,2010:5-7.
[3]西門子(中國)有限公司自動化與驅動集團.深入淺出--西門子WinCC V6(第2版)[M].北京:北京航空航天大學出版社,2005:69-70.
[4]董超.OPC技術在異構控制網絡互聯中的研究與應用[J].自動化儀表,2009,30(12).
[5]王小輝.OPC在智能樓宇系統應用中的研究[D].湖北:武漢理工大學,2007.
[6]劉克勤.基于OPC的動態數據交換技術在工控系統集成中的應用研究[J].重慶工學院學報,2006,20,(2):106-109.
[7]Borland/Inprise公司.C++ Builder 5 開發人員指南[M].北京:機械工業出版社,2000:105-111.