摘 要:文章簡要介紹了OPC數據訪問方式,KEPServerEX第三方OPC服務器,以及利用KEPServerEX解決工業自動化中不同廠家設備間的信息交互。詳細介紹了采用KEPServerEX做?;癄t信息采集的系統架構和配置。
關鍵詞:KEPServerEX;OPC;應用
在工業自動化系統中,會共存很多系統和設備,這些系統和設備往往來自不同廠家,各有不同。早期的系統間數據交換和通信,往往需要不同廠家開發各自獨立的通訊程序,隨著工業的發展,大型工業系統中不同設備的數量非常眾多,這種開發方法費時費力,編程困難,不便于維護,眾多通訊程序間的交互也帶來了可靠性的降低。OPC就是為了解決這種問題而提出來的,它使不同供應廠商的設備和應用程序之間的軟件接口標準化,使其間的數據交換更加簡單化,使得開發人員能抽出更多的精力投入應用程序的開發中。實際運用中,SIEMENS的S7系列PLC與上位機通過KEPServerEX等第三方OPC服務器通信,具備了可靠性高,編程簡單,連接方便,通用性好,便于維護等特點,可滿足各種自動控制需求。
1 KEPServerEX OPC服務器簡介
Kepserverex是第三方OPC服務器,為連接、管理、監控和控制各種自動化設備和軟件應用提供了靈活的和可擴展的解決方案。支持OPC、專有的通信協議、API以及各種自動化系統接口。
2 OPC簡介
OPC(OLE for process control)是基于COM(Component Object Model)技術,作為工業標準定義的特殊的COM接口。由OPC基金會管理。
3 OPC數據訪問方式
3.1 同步訪問
OPC應用程序將要求發送給OPC服務器后,不能進行其他處理。OPC應用程序在結果被返回前一直處于等待狀態。
3.2 異步訪問
OPC應用程序將要求發送給OPC服務器后,可進行其他處理。OPC服務器完成數據訪問后,觸發異步完成事件,將結果返回給OPC應用程序。
3.3 訂閱方式
服務器實時更新OPC服務器的數據緩沖器數值,發現數值有變化,以數據變化事件(DataChange)通知OPC應用程序。
4 實現方法
4.1 方案概述
示例系統為基于OPC服務的自動化系統,下位機為SIEMENS S7400 PLC,上位機操作系統為WINDOWS SERVER 2003,數據庫為ORACLE 10g,鑒于下位機品牌選型的擴展,選用Kepserverex OPC 服務器。通過Kepserverex OPC服務器直接從不同的S7400 DB塊中采集30個爐段的設定爐溫、實際爐溫,爐內實際鋼板號,鋼板位置,鋼板正火、回火狀態等,考慮實際生產需要和系統負荷,設定不同的采樣存儲頻率。數據采集成功后直接存入ORACLE數據庫中,交由上位機服務器上C#編寫的后臺服務做處理,形成爐溫報表數據,爐內跟蹤數據。數據通過通訊程序發送給三級,由三級最終形成爐溫報表、出入爐實績。
4.2 OPC數據訪問方式選擇
根據現場實際生產需要以及OPC三種通訊方式的特點,系統要求實時響應,最終選定異步訪問(本例由于不涉及寫數據,選用了Kepserverex 的AsyncRead、AsyncReadComplete方法)與訂閱方式(DataChange)相結合的方式。
4.3 具體實現
(1)根據采樣頻率及PLC地址不同分組(OPCGruops:OPC組集合對象)示例系統主要采集30段爐溫和爐內跟蹤數據,生產要求的采樣頻率各不相同,故分成兩組數據。FURNACETEMP組和L1FURNACE組。分別代表爐溫和爐內跟蹤。
(2)根據實際情況設置每個GROUP(OPCGroup:OPC組對象),主要是采樣PLC地址、PLC中CPU的數量等,與具體PLC關聯,為采集數據做準備。
(3)設置GROUP中每個TAG(OPCItem)的屬性(DB塊地址、數據類型、讀取方式-只讀/可讀寫),與具體DB塊關聯,開始采集數據。
(4)設置完通過OPC QUICK CLENT觀察效果。
(5)采集到數據后,用DataLogger Configurator將其存進ORACLE數據庫。對應OPCGROUP分組,這里也分兩個組分別存入不同的ORACLE數據庫表。
(6)設置數據組的存儲觸發器,改為定時觸發,定時存數據到ORACLE數據庫。
(7)ORACLE數據庫表設計如下:
FURNACETEMP表:對應30組設定爐溫和30組實際爐溫。每隔30分鐘記錄一次爐溫數據。用于發送給三級系統。
L1FURNACE表:對應L1中爐內數據,用于后臺C#服務處理,最終形成實際的爐內跟蹤隊列。
CDCHARGE表:由后臺C#服務處理完成后,存入CDCHARGE表,形成最終的爐內跟蹤隊列數據。用于發送給三級系統。
其余表:用于與三級通訊程序。
(8)定時刪除表數據。
為保證數據庫的健壯,必須根據實際情況,定時刪除表中數據。本示例中根據實際情況,選擇7天為一個周期,超過7天的數據就將其刪除。
(9)后臺C#服務。
后臺C#服務主要用于處理通過KEPServerEX接收的L1爐內數據,通過處理,形成用戶所需要的真實的爐內跟蹤數據,存在數據庫中,并形成入爐出爐鋼板數據發送給三級MES。
基本思想:實時采集L1爐內數據,將其存在OldList
(10)通過與三級間通訊程序,將數據發送給三級,完成所有工作。
(11)至此我們通過KEPServerEX、ORACLE、C#等手段建立了一條從L1到L2最終到L3的數據通路。通過這條通路,我們實現了數據的通訊,可滿足在工業自動化過程中的自動控制。通過KEPServerEX的AsyncWrite、AsyncWriteComplete方法我們還可以用類似的方式實現將數據由三級一路下發給PLC,實現PLC控制,在此不再敖述。
4.4 實現效果
本系統運行以來,一直穩定,可靠。依靠該系統,可實現以下功能:
(1)采集現場30段設定爐溫數據、30段實際爐溫數據。
(2)采集現場爐內數據,用于最終的爐內跟蹤。
(3)形成用戶所需要的報表、趨勢圖。
自投用以來,通過該系統穩定可靠的表現,滿足了工業運行的需要。