張宏坡,康龍云
(1. 華南理工大學 電力學院 新能源研究中心,廣州 510640;2. 華南理工大學 廣東省綠色能源技術重點實驗室,廣州 510640)
隨著過程控制的自動化程度的日益提高,PLC在工業控制系統領域的地位舉足輕重。工業控制系統中的一般典型應用是,將PLC作為下位控制機實現生產制造過程的自動化控制,配以PC機作為上位管理機進行工業流程監視、模式控制等。其中,PC與PLC的數據傳遞是上位機管理系統實現的關鍵。直到OPC技術的不斷發展和普及,才使得二者之間的通訊變得簡單和高效。OPC技術已成為工業過程控制的通信標準,規范了過程控制和自動化軟件與工業現場設備之間的接口,極大的提高了系統開發的效率。
本文以某物流傳輸PLC控制系統為例,介紹在以太網方式通訊下,開發基于OPC技術的西門子PLC上位機管理系統各個環節的設計和實現方法。
OPC是Object Linking and Embedding(OLE)for Process Control的縮寫,它是微軟公司的對象鏈接和嵌入技術在過程控制方面的應用。OPC以OLE/COM/DCOM技術為基礎,采用客戶/服務器模式,為工業自動化軟件面向對象的開發提供了統一的標準,這個標準定義了應用Microsoft操作系統在基于PC的客戶機之間交換自動化實時數據的方法, 主要包括數據存取、報警及時間處理及歷史數據存取三部分。利用OPC的系統,由按照應用程序(客戶程序)的要求提供數據收集服務的OPC服務器,使用OPC服務器所必需的OPC接口,以及接受服務的OPC應用程序所構成[1]。OPC服務器是按照各個供應廠商的硬件所開發的,使之可以吸收各個供應廠商硬件和系統的差異,從而實現不依存于硬件的系統構成。同時利用一種通用的數據類型,可以不依存于硬件中固有數據類型,按照應用程序要求提供的數據格式。OPC主要包含兩種接口:CUSTOM標準接口和OLE自動化標準接口。OPC接口訪問方式如圖1所示[2]。

圖1 OPC接口訪問方式
該物流傳輸控制系統由上位控制機、上位查詢機、PLC控制器和傳輸自動化設備系統等部分組成。系統的結構圖如圖2所示。

圖2 物流管理系統結構圖
上位機管理系統通過實時讀取和寫入PLC運行參數,實現系統操作所涉及的所有按鈕控制、工程參數設定、系統狀態實時顯示、系統數據管理等。其中PLC控制器、PLC遠程模塊和物流傳輸設備系統之間的連接采用PROFIBUS現場總線方式,PLC與上位機的通訊通過ETHERNET方式實現。
此系統所采用的主控PLC為SIEMENS的S7-300系列的CPU317-2PN/DP控制器。用于ETHERNET通訊的OPC服務器由SIMATIC NET軟件組態實現。通過 Visual Studio C#高級程序語言編程實現上位機客戶端的開發。
系統所用的OPC服務器通過SIMATIC NET組態實現,SIMATIC NET是SIEMENS在工業控制層面上提供的一個開放的、多元的通訊系統。通過它能將工業現場的PLC、主機、工作站和個人電腦聯網通訊[3]。
系統服務器組態所用軟件:SIMATIC NET PC SOFTWARE V6.2、STEP7 V5.4+SP3、SOFTNET S7 IE授權和通信協議TCP/IP;硬件:CS7 300 CPU315-2DP和普通網卡。
OPC服務器與PLC S7連接通訊的組態操作過程如下:
1)配置PC站的硬件機架
在Station Configuration Editor配置窗口中,為1號插槽和3號插槽分別添加OPC SERVER和IE GENERAL,并設置網卡的IP Address為本機的IP地址。
2)配置控制臺(Configuration Console)的使用與設置
在配置控制臺中需確認以太網卡的模式為Configuration mode,插槽號(Index)指向步驟1)網卡所在插槽。并Access Points設定窗口中,將S7 ONLINE 指向 PC internal(local),為 PC 站下載做準備。
3)在STEP 7中組態PC Station
在SIMATIC Manager中插入一個與步驟1)中PC站名字相同的PC Station,同樣是在相同插槽中插入OPC SERVER和IE GENERAL。在網卡上添加以太網連接,并同樣設定網卡IP為本機地址。
在保存和編譯無誤后,進入NetPro配置窗口,在IE GENERAL上添加S7 Connection連接,設定連接對象的IP為PLC的IP地址。保存編譯無誤后即可進行下載。
4)數據通訊的測試-OPC Scout
在OPC Scout中進行OPC Server和PLC的數據通訊測試。
至此,OPC服務器組態完成。
OPC應用程序首先應該生成OPC服務器支持的OPC對象,然后就可以使用OPC對象支持的屬性和方法,對其進行簡單的操作[1]。OPC的數據訪問方法主要有同步訪問和異步訪問兩種。實例客戶端程序通過OPC自動化接口采用C#編程實現,數據寫入采用同步方式,數據讀取采用異步方式和訂閱方式。訂閱方式嚴格意義上屬于異步方式,它在數據請求后立即返回,當OPC服務器的Group組在組內有數據發生改變時,自動根據更新周期刷新相應的客戶端數據。OPC數據訪問對象由如圖3所示的分層結構組成。

圖3 OPC數據訪問對象的分層結構
OPC客戶端程序的設計開發實現程序如下。
2.3.1 應用OPC組件
在COM組件中添加用于通訊的OPC Automation 2.0組件后,在程序中引用命名空間:
Using OPCSiemensDAAutomation;
2.3.2 建立連接及對象
建立OPC鏈接之前應先建立OPC數據對象,包括組對象和項,并添加相應項的句柄,用于數據讀寫。本例OPC服務器為OPC.SimaticNet,使用服務器名和其IP地址調用連接函數實現OPC服務器的連接。關鍵編程實現如下:
MyOpcServer=new OPCServer ();
MyOpcServer.Connect ("OPC.SimaticNet",
"192.168.0.101"); //服務器名和地址
MyOpcGroup=MyOpcServer.OPCGroups.Add
("MyGroup1"); // 添加組對象
MyOpcItem1=MyOpcGroup.OPCItems.AddItem
("S7: [S7 connection_1] DB10, INT0",1); //添
加Item對象
SerHandle [0] =MyOpcItem1.ServerHandle; //
Item句柄
2.3.3 同步寫數據
Private void SyncWrite (object sender, EventArgs e)
{
……
MyOpcItem1.Write (Txt_W1.Text);
…
}
2.3.4 異步讀數據
在異步操作情況下,需要定義按照特定接口的相應異步事件,訂閱方式如下:
MyOpcGroup.DataChange+=new
DIOPCGroupEvent_DataChangeEventHandler
(MyOpcGroup_DataChange);
Void MyOpcGroup_DataChange (int
TransactionID, int NumItems, ref Array
ClientHaref Array ItemValues, ref Array
Qualities, ref Array TimeStamps)
定義完所需的異步事件函數和返回函數后,就可以根據相應的事件函數和返回函數進行對應的異步方式和訂閱方式的數據訪問了。
2.3.5 釋放對象及斷開連接
OPC客戶端連接后占用服務器的資源,所以長時間不用OPC數據讀寫時,要及時斷開OPC連接以釋放資源。
if (MyOpcItem != null)
MyOpcItem = null;
if (MyOpcGroup != null)
MyOpcGroup = null;
MyOpcServer.Disconnect ();
OPC技術依賴于微軟的COM和DCOM在自動化的硬件與軟件之間進行數據交換。對于遠程訪問OPC服務器的客戶端,都必須正確的設置DCOM,才能夠實現OPC數據的遠程傳遞[4]。
本例系統通過簡單有效的DCOM通訊配置建立起了可靠的OPC遠程訪問,具體的配置步驟如下:
1)移除Windows安全。
2)建立相互能識別的用戶賬號。
為了使計算機能正確的識別用戶賬號,必須保證用戶賬戶在OPC客戶機和OPC服務器上都能夠被識別。
3)配置系統寬泛的DCOM設置。
通過系統的寬泛的DCOM設置來規約各個用戶的訪問和控制權限。系統的寬泛的DCOM設置影響著Windows的DCOM應用,包括OPC的應用。由于OPC客戶沒有自己的DCOM的設置,受缺省DCOM的配置的影響,因此需要作必要的如COM安全屬性方面的修改。
4)配置Server特殊的DCOM設置。
針對本例的OPC服務器,通過Identity標簽對遠程訪問用戶進行身份安全設置。
5)恢復Windows安全。
至此,便可以進行OPC數據的遠程訪問了。
對于規模較小的自動化控制系統,可以優先考慮將OPC Client應用程序和OPC Server運行在同一計算機上,只進行本地OPC服務器的訪問,這樣不僅可以不用進行遠程訪問DCOM設置,減少工作量,還避免了開放過多的服務器訪問權限,提高了系統的安全和穩定性。
在本例PLC控制系統中,通過上述服務器組態、客戶端應用訪問程序的編寫以及遠程訪問的端口配置,建立起了上位機與PLC的數據通訊。再進行相應的系統界面設計以及倉庫數據庫管理系統的開發,完成整個上位機管理系統的實現。
OPC是為了不同供應廠商的設備和應用程序之間的軟件接口標準化,使其間的數據交換更加簡單化的目的而提出的,是適用于很多系統場合的具有高度柔軟性的接口標準,為工業自動化控制的發展提供了活力。本文介紹了開發基于OPC技術的PLC上位機管理系統的實現過程,具體詳細的說明了開發過程中OPC服務器組態、OPC客戶端程序實現以及OPC遠程訪問DCOM設置的方法以及注意事項,可以作為其他工業控制應用系統的參考。用上述方法開發的本例物流傳輸PLC控制系統經實際測試,運行穩定、可靠性高,效果良好,已投入正常使用。
[1] 日本OPC基金會. OPC(中國)促進委員會, 譯. OPC應用程序入門[Z]. 北京: OPC中國基金會, 2002.
[2] 西門子(中國)自動化與驅動集團. 如何在C#中實現OPC數據訪問[Z]. 北京: 2009.
[3] 西門子(中國)自動化與驅動集團. 通過ETHERNET建立SIMATIC NET OPC服務器與PLC的S7連接[Z]. 北京:2005.
[4] 西門子(中國)自動化與驅動集團. 如何配置OPC DCOM[Z]. 北京: 2006.