郭永勇,潘存海,李軍鋒,杜素梅
GUO Yong-yong, PAN Cun-hai, LI Jun-feng, DU Su-mei
(天津科技大學(xué) 機械工程學(xué)院,天津 300222)
在不同廠商生產(chǎn)的設(shè)備和驅(qū)動通信程序之間無法實現(xiàn)互聯(lián)通信的情況下,OPC(OLE for Process Control)應(yīng)運而生,它是OPC基金會制定的一套標(biāo)準(zhǔn)的規(guī)范,利用微軟的Windows視窗中的OLE/COM技術(shù)實現(xiàn)工業(yè)自動化過程控制中的數(shù)據(jù)交換,采用OPC客戶機與OPC服務(wù)器模式通信,從而形成了工業(yè)自動化通信的統(tǒng)一平臺,被廣泛的應(yīng)用于各種自動化的控制和管理系統(tǒng)之間的數(shù)據(jù)通信。
WinCC(Windows Contorl Center)是西門子公司和微軟公司合作開發(fā)用于自動控制領(lǐng)域的人機界面組態(tài)軟件。它功能強大且全面開放,具多個的標(biāo)準(zhǔn)接口,能使用OPC通信通道進行數(shù)據(jù)交換,實現(xiàn)WinCC與其他自動化設(shè)備OPC接口的通信。
本文是為國內(nèi)某企業(yè)開發(fā)專用裝備的一部分。在該自動化生產(chǎn)線系統(tǒng)中,需要管理層與現(xiàn)場層之間實時通信,并實現(xiàn)對生產(chǎn)線的監(jiān)控、數(shù)據(jù)查詢、報表等處理功能。本文構(gòu)建了基于WinCC的監(jiān)控系統(tǒng)。利用VB編寫了OPC客戶機并進行了類模塊的封裝,利用VBS編寫了與WinCC的OPC服務(wù)器之間數(shù)據(jù)交換的腳本文件,實現(xiàn)了與上位機的實時數(shù)據(jù)交換,與DDE技術(shù)相比具有更高的可靠性,高速的數(shù)據(jù)傳輸性能,以及易擴展開發(fā)等優(yōu)點。通過WinCC內(nèi)部對數(shù)據(jù)處理,避免了通過PLC存儲和處理數(shù)據(jù),節(jié)省的PLC內(nèi)存空間,又提高了數(shù)據(jù)的處理速度。
本專用自動化控制裝備主要包括設(shè)備主體、PLC、工控機和上位機等四部分組成。上位機通過WinSocket技術(shù)將相關(guān)信息傳輸?shù)絆PC客戶機,由OPC客機發(fā)送到工控機WinCC監(jiān)控系統(tǒng),經(jīng)過WinCC的數(shù)據(jù)處理,再發(fā)送到PLC控制器,PLC根據(jù)現(xiàn)場I/O模塊所接受到的傳感器信號控制主體設(shè)備的4個伺服電機實現(xiàn)運動控制,并通過硬件向上位機反饋設(shè)備狀態(tài)信息。WinCC監(jiān)控系統(tǒng)收集PLC反饋數(shù)據(jù)信息進行數(shù)據(jù)統(tǒng)計分析和歸檔,提供報表給廠家工師分析。系統(tǒng)結(jié)構(gòu)圖如圖1所示。
本監(jiān)控系統(tǒng)的通信主要包括以太網(wǎng)中與上位機的TCP/IP協(xié)議的通信、WinCC的OPC服務(wù)器通信及與SQL數(shù)據(jù)庫的通信。
在以太網(wǎng)中基于TCP/IP協(xié)議進行通信,TCP/IP協(xié)議的3次握手連接保證了數(shù)據(jù)的安全可靠,無錯誤、無重復(fù)的發(fā)送和高效的錯誤率處理。
圖1 系統(tǒng)結(jié)構(gòu)圖
本監(jiān)控系統(tǒng)中信息的交換采取C/S模型,由上位機建立服務(wù)器,服務(wù)器在一個明確的IP地址監(jiān)聽客戶機的請求。將OPC客戶機與WinSocket客戶機集成,客戶機的重啟后不會影響到上位機的正常運行,在啟動客戶機時由客戶機向服務(wù)器發(fā)送握手信號,服務(wù)器總處于被動狀態(tài),等待客戶機的詢問,服務(wù)器提供IP地址和端口號(0到65535范圍內(nèi))組成。
在WinCC下創(chuàng)建OPC通道,建立OPC Server,采用C/S模式和OPC客戶機進行數(shù)據(jù)交換。編程思路:連接OPCServer.WinCC服務(wù)器,建立OPC組,添加OPC標(biāo)簽,同步讀寫,斷開OPC連接;然后封裝為OPC的類模塊,OPC客戶機程序流程圖如圖2所示。OPC類模塊將OPC定義為面向?qū)ο笠粋€類,在模塊中設(shè)定了OPC客戶機的方法和屬性,包括OPC的服務(wù)器連接、添加OPC標(biāo)簽、同步讀、同步寫、斷開OPC服務(wù)器連接、通信狀態(tài)標(biāo)志6個屬性和方法。其中,OPC的標(biāo)簽名稱必須與WinCC通信變量的名稱一致,區(qū)分大小寫。OPC類模塊便于調(diào)用,易于OPC標(biāo)簽數(shù)目的擴展,避免代碼重復(fù),以減少代碼的編寫工作量,提高程序的綜合性,內(nèi)聚性,使程序執(zhí)行效率更高,有效的降低系統(tǒng)的開發(fā)成本。
在Visual Basic編程軟件中,添加類模塊按照流程圖編寫OPC客戶機代碼,OPC類模塊名字為WinCC_OPC.cls,同步寫代碼如下:
圖2 OPC客戶機程序流程圖
OPC通信的客戶機和服務(wù)器須設(shè)置DCOM權(quán)限,且遠程通信需在同一網(wǎng)段內(nèi),通信時WinCC處于激活狀態(tài)。
將PLC收集的生產(chǎn)數(shù)據(jù)存于WinCC的SQL數(shù)據(jù)庫,使用ADO訪問數(shù)據(jù)庫,為了降低成本,本設(shè)計使用ADO編寫簡潔、可擴展的VBS腳本,連接到與OLE DB兼容的SQL數(shù)據(jù)庫。
數(shù)據(jù)庫訪問主要利用ADO的Connection、Command、Recordset 3個內(nèi)部對象操作來完成。
Connection是用來建立與WinCC的SQL數(shù)據(jù)庫的連接通道。本系統(tǒng)利用其ConnectionString、CursorLocation、Open 3個屬性。
Command是用來對SQL數(shù)據(jù)庫執(zhí)行SQL命令,添加、查詢、刪除和修改記錄等,在監(jiān)控系統(tǒng)主要用作數(shù)據(jù)的統(tǒng)計分析和查詢。
Recordset是用來得到Command執(zhí)行SQL命令后的數(shù)據(jù)集,即得到監(jiān)控系統(tǒng)中數(shù)據(jù)的統(tǒng)計分析和查詢的結(jié)果,最終導(dǎo)入到系統(tǒng)的報表中。
數(shù)據(jù)庫操作部分代碼如下:
系統(tǒng)SQL數(shù)據(jù)庫采用循環(huán)歸檔的方式存儲數(shù)據(jù)保證數(shù)據(jù)表中數(shù)據(jù)在一定大小范圍內(nèi),保證系統(tǒng)數(shù)據(jù)的安全可靠。
監(jiān)控系統(tǒng)主要有登錄界面、自動監(jiān)控、手動輸入、狀態(tài)信息、報警處理、報表查詢、注銷退出7個功能實現(xiàn)。
登錄界面:進入系統(tǒng)的起始界面,點擊登陸(只有登錄后,“啟動系統(tǒng)”按鈕才能操作),出現(xiàn)系統(tǒng)登陸對話框,正確輸入帳號和密碼后系統(tǒng)會根據(jù)登錄的用戶名授予不同的操作權(quán)限。
自動監(jiān)控:登錄監(jiān)控系統(tǒng)后,時默認界面為自動監(jiān)控界面,用于以太網(wǎng)連接數(shù)據(jù),并將以太網(wǎng)中得到的數(shù)據(jù)下載到PLC中自動控制。
手動輸入:用于以太網(wǎng)通信失敗后手動輸入指令內(nèi)容,并下載到PLC中,控制設(shè)置運行。
狀態(tài)信息:用于顯示設(shè)備伺服,繼電器等關(guān)鍵設(shè)備的詳情狀態(tài)信息,實時監(jiān)測PLC設(shè)備信號。
報警處理:顯示報警信息,并記錄報警,以便歷史記錄,采用觸發(fā)式報警與報警歸檔。
報表查詢:將生產(chǎn)詳細信息記錄存儲到SQL數(shù)據(jù)庫,并提供查詢和EXCEl報表。
注銷退出:登錄操作人員的注銷登錄和退出監(jiān)控系統(tǒng)。
WinCC監(jiān)控系統(tǒng)在自動監(jiān)控狀態(tài)下,系統(tǒng)運行的人機界面如圖3所示。
圖3 WinCC監(jiān)控系統(tǒng)現(xiàn)場運行局部圖
監(jiān)控系統(tǒng)以太網(wǎng)WinSocket通信和開發(fā)OPC應(yīng)用程序,并把OPC為封裝一個類模塊,條理清晰,擴展性能好,通信變量可以通過窗口向類模塊傳遞數(shù)組,增加或刪除OPC標(biāo)簽,利用服務(wù)器句柄可以實現(xiàn)指定的變量進行通信,實驗表明OPC通信具有高的傳輸速率,安全可靠。在WinCC內(nèi)部處理通信數(shù)據(jù),減輕了PLC的負擔(dān),提高數(shù)據(jù)處理速度。該方法可廣泛應(yīng)用于自動化通信場合,為監(jiān)控系統(tǒng)信息采集和存儲提供了有效的解決方案。
[1]季立明,王太勇.基于Winsocket和組件技術(shù)的設(shè)備遠程實時監(jiān)測系統(tǒng)[J].工業(yè)控制計算機,2001,14(5):21-22.
[2]林啟寬.用VB開發(fā)WinCC的OPC客戶機[J].工業(yè)控制計算機,2006,19(8):80-81.
[3]甄立東.西門子WinCC V7 基礎(chǔ)與應(yīng)用[M].北京:機械工業(yè)出版社,2011.1.
[4]王磊,吳桐,陳楊軍.WinCC C腳本在數(shù)據(jù)存儲中的應(yīng)用[J].制造業(yè)自動化.2007(06).