岳宗敏 黃金波 朱玉
摘 要:探討了如何通過OPC來訪問WinCC系統(tǒng)的實(shí)時(shí)數(shù)據(jù)。并根據(jù)串口設(shè)備通訊協(xié)議要求,通過Visual Studio平臺下的C#語言編程,把采集到的實(shí)時(shí)數(shù)據(jù)按通訊協(xié)議組織后通過串口發(fā)送給串口設(shè)備。結(jié)合實(shí)際應(yīng)用給出了具體的實(shí)現(xiàn)步驟。某煤礦水處理系統(tǒng)應(yīng)用結(jié)果表明,系統(tǒng)運(yùn)行穩(wěn)定可靠,效率高,具有很強(qiáng)的實(shí)用性和推廣價(jià)值。
關(guān)鍵字:WinCC 實(shí)時(shí)數(shù)據(jù) OPC 串口通信
中圖分類號:TP273 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2012)12(a)-0-02
隨著企業(yè)信息化進(jìn)程的推進(jìn),無論是哪個(gè)管理相關(guān)部門,都希望從工作的現(xiàn)場得到最新的數(shù)據(jù),并對這些新的數(shù)據(jù)進(jìn)行綜合的分析。然而,不同的控制器來自不同的廠商,通過不同的標(biāo)準(zhǔn),組成各自需要的系統(tǒng),并進(jìn)行控制,各個(gè)控制系統(tǒng)形成了互不相連的自動化孤島,因?yàn)楹芏鄶?shù)據(jù)無法整體的采集到并進(jìn)行整體的分析與研究。從而更無法建立統(tǒng)一的生產(chǎn)過程數(shù)據(jù)平臺,難以實(shí)現(xiàn)管理控制的一體化 [1]。
該文通過OPC來訪問WinCC系統(tǒng)的實(shí)時(shí)數(shù)據(jù)。并根據(jù)串口設(shè)備通訊協(xié)議要求,通過Visual Studio平臺下的C#語言編程,把采集到的實(shí)時(shí)數(shù)據(jù)按通訊協(xié)議組織后通過串口發(fā)送給串口設(shè)備。
1 OPC(OLE for Process Control)技術(shù)介紹
OPC(OLE for Process Control)用于過程控制的對象鏈接嵌入技術(shù),是基于微軟的OLE、COM(組件對象模型)和DCOM(分布式組件對象模型)技術(shù)為基礎(chǔ),采用客戶/服務(wù)器模式,在基于Windows操作平臺的工業(yè)應(yīng)用程序之間提供交互功能和高效信息集成的組件。利用OPC 技術(shù),可以對現(xiàn)場設(shè)備及其驅(qū)動程序進(jìn)行封裝,形成OPC(OLE for Process Control)服務(wù)器,向上與OPC客戶應(yīng)用程序通信以完成數(shù)據(jù)交換,向下則是對設(shè)備數(shù)據(jù)進(jìn)行采集。因此,它的出現(xiàn)為基于Windows 的應(yīng)用程序和現(xiàn)場過程控制之間做好了鋪墊。這種既開放又高效的通信機(jī)制提供了一種從數(shù)據(jù)源提取數(shù)據(jù)并且傳輸?shù)綉?yīng)用程序的標(biāo)準(zhǔn)途徑,它能夠有效地整合各類控制器和控制系統(tǒng),眾多不同的廠商生產(chǎn)的都能用統(tǒng)一的開口進(jìn)行傳輸與控制,很容易解決由不同類型自動化設(shè)備構(gòu)成的大中型系統(tǒng)中的數(shù)據(jù)交換和傳輸問題[2]
2 OPC(OLE for Process Control) 客戶機(jī)應(yīng)用程序開發(fā)
2.1 OPC開發(fā)工具包
模塊化開發(fā)工具包提供了軟件設(shè)計(jì)的基本工具。OPC工具包由Delphi語言編寫,以標(biāo)準(zhǔn)動態(tài)庫(dl1)形式提供二次開發(fā)接口,完全封裝了COM技術(shù)實(shí)現(xiàn)細(xì)節(jié),降低用戶端程序開發(fā)的復(fù)雜程度。用戶可以通過調(diào)用工具包所提供的動態(tài)庫函數(shù),完成客戶機(jī)應(yīng)用程序的開發(fā)。且工具包還支持多種語言的開發(fā),如:VC、C#、VB、BC和Delphi等。因?yàn)榭紤]開發(fā)的周期與速度,本系統(tǒng)選用C#進(jìn)行二次開發(fā)。
2.2 OPC服務(wù)器簡介
OPC數(shù)據(jù)存取規(guī)范規(guī)定的基本對象有三類:OPC服務(wù)器(OPC Server)、OPC項(xiàng)對象(OPC Item)和OPC組對象(OPC Group)。OPC服務(wù)器維護(hù)有關(guān)服務(wù)器的信息并用作OPC組對象的容器,OPC組對象中可以定義一個(gè)OPC或多個(gè)對象。OPC項(xiàng)對象代表了與服務(wù)器中的數(shù)據(jù)的連接。而OPC組對象提供包容OPC項(xiàng)對象機(jī)制,并管理OPC項(xiàng)對象,提供了客戶程序組織數(shù)據(jù)的手段??蛻舫绦?qū)PC項(xiàng)的操作都是通過包容此項(xiàng)的OPC組對象來進(jìn)行的。每個(gè)OPC項(xiàng)對象都三個(gè)屬性:品質(zhì)(Quality)、值(Value)和時(shí)間戳(Time Stamp)。人們想要就是這些的點(diǎn),即PLC的I/O點(diǎn)、儀表的數(shù)值等[3]
2.3 OPC客戶機(jī)的開發(fā)步驟
從OPC的工作機(jī)制可以知道,OPC客戶端的開發(fā)必須按下面的步驟進(jìn)行。
(1)對DCOM進(jìn)行初始化設(shè)置,保證OPC服務(wù)器端的回調(diào)函數(shù)不會被堵塞;
(2) 創(chuàng)建OPC服務(wù)器,并連接;
(3) 為OPC服務(wù)器創(chuàng)建OPC組對象;
(4) 為OPC組對象創(chuàng)建多個(gè)OPC項(xiàng)對象;
(5) 實(shí)現(xiàn)對OPC項(xiàng)對象數(shù)據(jù)的讀寫操作;
(6)在客戶端工作結(jié)束時(shí),清除OPC服務(wù)器的所有組對象及其項(xiàng)對象,斷開與服務(wù)器的連接,釋放資源。
3 串口通信技術(shù)介紹
3.1 串口通信簡介與通信協(xié)議
串行通訊是計(jì)算機(jī)與其他設(shè)備進(jìn)行交換數(shù)據(jù)的橋梁之一。在工業(yè)監(jiān)控、數(shù)據(jù)采集和實(shí)時(shí)監(jiān)控系統(tǒng)中應(yīng)用廣泛。因?yàn)樗哂惺褂梅椒ê啽悖瑪?shù)據(jù)傳輸可靠,靈活性強(qiáng)等優(yōu)點(diǎn)。
串口通信的協(xié)議標(biāo)準(zhǔn)目前應(yīng)用最廣泛的是RS一232標(biāo)準(zhǔn),RS一232標(biāo)準(zhǔn)已被內(nèi)置于從微控制器到主機(jī)的多種類型的計(jì)算機(jī)及其相連接的設(shè)備中,在工控系統(tǒng)及硬件設(shè)計(jì)中有著廣泛的應(yīng)用。RS一232對電器特性、邏輯電平和各種信號線功能都作了
規(guī)定[4]。
3.2 發(fā)送數(shù)據(jù)報(bào)文
在VC#環(huán)境下,添加串口控件,按協(xié)議初始化串口,開串口后,添加OnComm()中的處理代碼。按照串口設(shè)備通信協(xié)議根據(jù)實(shí)時(shí)讀取到的WINCC項(xiàng)數(shù)據(jù)組織報(bào)文,每發(fā)送一組報(bào)文就引發(fā)以下程序。
Byte[] yxx = new byte[9];
for(int i=0;i<8;i++) yxx[i] = System.Convert.ToByte(yxss[i],10);
給每一位賦值其中yxss(i)為串口設(shè)備通信協(xié)議報(bào)文格式對
應(yīng)值。
Byte intResult1
for (int i = 0;i < 8;i++)
intResult1 = System.Convert.ToByte(intResult1 ^ System.Convert.ToByte(yxx[i]));
yxx[8] = System.Convert.ToByte(intResult1);給校驗(yàn)位賦值
if (!mycom1.IsOpen)
mycom1.Open();打開串口 mycom1.DiscardInBuffer();清除接收緩沖區(qū)
mycom1.Write(yxx,0,9);發(fā)送報(bào)文。
4 實(shí)例應(yīng)用
某煤礦水處理系統(tǒng)采用PLC可編程邏輯控制器,對整個(gè)水處理過程進(jìn)行全自動化控制,但須要把整個(gè)系統(tǒng)監(jiān)控的實(shí)時(shí)數(shù)據(jù)及相對應(yīng)的開關(guān)狀態(tài)發(fā)送到模擬屏上供管理人員方便查看,監(jiān)督,
決策。
4.1 系統(tǒng)分析
系統(tǒng)主要分為三個(gè)部分,第一個(gè)部分是整個(gè)水處理系統(tǒng)的數(shù)據(jù)實(shí)時(shí)采集,實(shí)時(shí)數(shù)據(jù)采集遵循OPC工業(yè)標(biāo)準(zhǔn),規(guī)范實(shí)時(shí)數(shù)據(jù)獲取,對各現(xiàn)場設(shè)備、位號進(jìn)行統(tǒng)一編號,避免獲取數(shù)據(jù)沖突,同時(shí)對模擬量,開關(guān)量信息區(qū)別對待。第二個(gè)部分是數(shù)據(jù)的處理,首先對采集到的實(shí)時(shí)數(shù)據(jù)進(jìn)行分類、截位、正化處理,然后根據(jù)串口通信協(xié)議和模擬屏報(bào)文協(xié)議要求,分類組織遙測報(bào)文與遙信報(bào)文。
模擬屏報(bào)文格式如圖1所示:
字頭 命令 字節(jié)長 序號H 序號L 數(shù)據(jù)… …….. 校驗(yàn)碼
…………字節(jié)長…………………
……………………………校驗(yàn)碼長………………………...
圖1
第三個(gè)部分是數(shù)據(jù)發(fā)送與現(xiàn)實(shí),利用串口通信把組織好的報(bào)文發(fā)送給模擬屏,根據(jù)相應(yīng)地址顯示在對應(yīng)的位置上。實(shí)現(xiàn)整個(gè)系統(tǒng)功能。
4.2 系統(tǒng)實(shí)現(xiàn)
系統(tǒng)在Microsoft Visual Studio 2008 開發(fā)平臺,利用C#語言開發(fā)完成。系統(tǒng)通過OPC接口從WINCC讀取實(shí)時(shí)數(shù)據(jù)并存入內(nèi)部變量內(nèi),通過處理把實(shí)時(shí)數(shù)據(jù)編制成調(diào)度盤能夠識別的報(bào)文格式,然后進(jìn)行串口通信。建立串口連接前,系統(tǒng)串口參數(shù)設(shè)置與計(jì)算機(jī)參數(shù)設(shè)置必須一致,才能保證通信數(shù)據(jù)正常傳輸。系統(tǒng)界面圖如圖2所示:
圖2
5 結(jié)語
本系統(tǒng)經(jīng)多次試驗(yàn),穩(wěn)定可靠,已正常運(yùn)行一年有余。對WICC實(shí)時(shí)數(shù)據(jù)的讀取并通過串口通信發(fā)送給其他設(shè)備提供很好實(shí)例。有很高的使用價(jià)值和很廣闊的推廣市場。
參考文獻(xiàn)
[1] 趙紅,韓建國.流程工業(yè)CIMS現(xiàn)場實(shí)時(shí)數(shù)據(jù)傳輸?shù)腛PC解決方案[J].北京化工大學(xué)學(xué)報(bào),2001,28(3):61-62.
[2] 張俊彪,王鴻輝,何長安.基于OPC Server的PC與S7-300/400的通信[J].電力自動化設(shè)備,2007(4):83-84.
[3] 花新峰,負(fù)衛(wèi)國.Delphi 環(huán)境下使用定制接口開發(fā)OPC數(shù)據(jù)訪問客戶程序[J].自動化博覽,2005(S1):91一97.
[4] 李現(xiàn)勇.Visual C++串口通信與工程實(shí)踐[M].北京:人民郵電出版社,2005.