郭永勇,潘存海,李軍鋒,杜素梅
GUO Yong-yong, PAN Cun-hai, LI Jun-feng, DU Su-mei
(天津科技大學 機械工程學院,天津 300222)
在不同廠商生產的設備和驅動通信程序之間無法實現互聯通信的情況下,OPC(OLE for Process Control)應運而生,它是OPC基金會制定的一套標準的規范,利用微軟的Windows視窗中的OLE/COM技術實現工業自動化過程控制中的數據交換,采用OPC客戶機與OPC服務器模式通信,從而形成了工業自動化通信的統一平臺,被廣泛的應用于各種自動化的控制和管理系統之間的數據通信。
WinCC(Windows Contorl Center)是西門子公司和微軟公司合作開發用于自動控制領域的人機界面組態軟件。它功能強大且全面開放,具多個的標準接口,能使用OPC通信通道進行數據交換,實現WinCC與其他自動化設備OPC接口的通信。
本文是為國內某企業開發專用裝備的一部分。在該自動化生產線系統中,需要管理層與現場層之間實時通信,并實現對生產線的監控、數據查詢、報表等處理功能。本文構建了基于WinCC的監控系統。利用VB編寫了OPC客戶機并進行了類模塊的封裝,利用VBS編寫了與WinCC的OPC服務器之間數據交換的腳本文件,實現了與上位機的實時數據交換,與DDE技術相比具有更高的可靠性,高速的數據傳輸性能,以及易擴展開發等優點。通過WinCC內部對數據處理,避免了通過PLC存儲和處理數據,節省的PLC內存空間,又提高了數據的處理速度。
本專用自動化控制裝備主要包括設備主體、PLC、工控機和上位機等四部分組成。上位機通過WinSocket技術將相關信息傳輸到OPC客戶機,由OPC客機發送到工控機WinCC監控系統,經過WinCC的數據處理,再發送到PLC控制器,PLC根據現場I/O模塊所接受到的傳感器信號控制主體設備的4個伺服電機實現運動控制,并通過硬件向上位機反饋設備狀態信息。WinCC監控系統收集PLC反饋數據信息進行數據統計分析和歸檔,提供報表給廠家工師分析。系統結構圖如圖1所示。
本監控系統的通信主要包括以太網中與上位機的TCP/IP協議的通信、WinCC的OPC服務器通信及與SQL數據庫的通信。
在以太網中基于TCP/IP協議進行通信,TCP/IP協議的3次握手連接保證了數據的安全可靠,無錯誤、無重復的發送和高效的錯誤率處理。

圖1 系統結構圖
本監控系統中信息的交換采取C/S模型,由上位機建立服務器,服務器在一個明確的IP地址監聽客戶機的請求。將OPC客戶機與WinSocket客戶機集成,客戶機的重啟后不會影響到上位機的正常運行,在啟動客戶機時由客戶機向服務器發送握手信號,服務器總處于被動狀態,等待客戶機的詢問,服務器提供IP地址和端口號(0到65535范圍內)組成。
在WinCC下創建OPC通道,建立OPC Server,采用C/S模式和OPC客戶機進行數據交換。編程思路:連接OPCServer.WinCC服務器,建立OPC組,添加OPC標簽,同步讀寫,斷開OPC連接;然后封裝為OPC的類模塊,OPC客戶機程序流程圖如圖2所示。OPC類模塊將OPC定義為面向對象一個類,在模塊中設定了OPC客戶機的方法和屬性,包括OPC的服務器連接、添加OPC標簽、同步讀、同步寫、斷開OPC服務器連接、通信狀態標志6個屬性和方法。其中,OPC的標簽名稱必須與WinCC通信變量的名稱一致,區分大小寫。OPC類模塊便于調用,易于OPC標簽數目的擴展,避免代碼重復,以減少代碼的編寫工作量,提高程序的綜合性,內聚性,使程序執行效率更高,有效的降低系統的開發成本。
在Visual Basic編程軟件中,添加類模塊按照流程圖編寫OPC客戶機代碼,OPC類模塊名字為WinCC_OPC.cls,同步寫代碼如下:



圖2 OPC客戶機程序流程圖
OPC通信的客戶機和服務器須設置DCOM權限,且遠程通信需在同一網段內,通信時WinCC處于激活狀態。
將PLC收集的生產數據存于WinCC的SQL數據庫,使用ADO訪問數據庫,為了降低成本,本設計使用ADO編寫簡潔、可擴展的VBS腳本,連接到與OLE DB兼容的SQL數據庫。
數據庫訪問主要利用ADO的Connection、Command、Recordset 3個內部對象操作來完成。
Connection是用來建立與WinCC的SQL數據庫的連接通道。本系統利用其ConnectionString、CursorLocation、Open 3個屬性。
Command是用來對SQL數據庫執行SQL命令,添加、查詢、刪除和修改記錄等,在監控系統主要用作數據的統計分析和查詢。
Recordset是用來得到Command執行SQL命令后的數據集,即得到監控系統中數據的統計分析和查詢的結果,最終導入到系統的報表中。
數據庫操作部分代碼如下:

系統SQL數據庫采用循環歸檔的方式存儲數據保證數據表中數據在一定大小范圍內,保證系統數據的安全可靠。
監控系統主要有登錄界面、自動監控、手動輸入、狀態信息、報警處理、報表查詢、注銷退出7個功能實現。
登錄界面:進入系統的起始界面,點擊登陸(只有登錄后,“啟動系統”按鈕才能操作),出現系統登陸對話框,正確輸入帳號和密碼后系統會根據登錄的用戶名授予不同的操作權限。
自動監控:登錄監控系統后,時默認界面為自動監控界面,用于以太網連接數據,并將以太網中得到的數據下載到PLC中自動控制。
手動輸入:用于以太網通信失敗后手動輸入指令內容,并下載到PLC中,控制設置運行。
狀態信息:用于顯示設備伺服,繼電器等關鍵設備的詳情狀態信息,實時監測PLC設備信號。
報警處理:顯示報警信息,并記錄報警,以便歷史記錄,采用觸發式報警與報警歸檔。
報表查詢:將生產詳細信息記錄存儲到SQL數據庫,并提供查詢和EXCEl報表。
注銷退出:登錄操作人員的注銷登錄和退出監控系統。
WinCC監控系統在自動監控狀態下,系統運行的人機界面如圖3所示。

圖3 WinCC監控系統現場運行局部圖
監控系統以太網WinSocket通信和開發OPC應用程序,并把OPC為封裝一個類模塊,條理清晰,擴展性能好,通信變量可以通過窗口向類模塊傳遞數組,增加或刪除OPC標簽,利用服務器句柄可以實現指定的變量進行通信,實驗表明OPC通信具有高的傳輸速率,安全可靠。在WinCC內部處理通信數據,減輕了PLC的負擔,提高數據處理速度。該方法可廣泛應用于自動化通信場合,為監控系統信息采集和存儲提供了有效的解決方案。
[1]季立明,王太勇.基于Winsocket和組件技術的設備遠程實時監測系統[J].工業控制計算機,2001,14(5):21-22.
[2]林啟寬.用VB開發WinCC的OPC客戶機[J].工業控制計算機,2006,19(8):80-81.
[3]甄立東.西門子WinCC V7 基礎與應用[M].北京:機械工業出版社,2011.1.
[4]王磊,吳桐,陳楊軍.WinCC C腳本在數據存儲中的應用[J].制造業自動化.2007(06).