2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  本 科 生 畢 業(yè) 設(shè) 計</p><p><b> ?。ㄉ暾垖W(xué)士學(xué)位)</b></p><p>  論文題目基于Modbus通信協(xié)議的智能儀表OPC服務(wù)器的開發(fā)</p><p>  作者姓名 程 龍 </p><p>  所學(xué)專業(yè)名稱

2、 自 動 化 </p><p>  指導(dǎo)教師 汪 先 兵 </p><p>  2012年5月20日</p><p>  學(xué) 生: (簽字)</p><p>  學(xué) 號:20

3、08210263</p><p>  論文答辯日期:2012年5月26日</p><p>  指 導(dǎo) 教 師 : (簽字)</p><p><b>  目 錄</b></p><p><b>  摘要1</b></p><p>  A

4、bstract1</p><p><b>  1 緒論2</b></p><p>  1.1 課題的選題背景及意義2</p><p>  1.2 OPC技術(shù)國內(nèi)外發(fā)展現(xiàn)狀3</p><p>  1.3 本課題主要研究內(nèi)容3</p><p>  2 Modbus總線技術(shù)4</p&g

5、t;<p>  2.1 現(xiàn)場總線技術(shù)4</p><p>  2.2 Modbus技術(shù)歷史4</p><p>  2.3 Modbus通信協(xié)議4</p><p>  2.3.1 Modbus數(shù)據(jù)模型4</p><p>  2.3.2 Modbus地址參數(shù)表及通信結(jié)構(gòu)5</p><p>  2.3.

6、3 Modbus 兼容分類5</p><p>  3 OPC技術(shù)規(guī)范6</p><p>  3.1 OPC技術(shù)歷史6</p><p>  3.2 OPC技術(shù)規(guī)范6</p><p>  3.3 COM技術(shù)7</p><p>  3.4 OPC服務(wù)器數(shù)據(jù)訪問方式8</p><p>  3

7、.4.1 同步數(shù)據(jù)訪問8</p><p>  3.4.2 異步數(shù)據(jù)訪問9</p><p>  4 Modbus OPC數(shù)據(jù)訪問服務(wù)器的實現(xiàn)9</p><p>  4.1 OPC服務(wù)器要求分析9</p><p>  4.1.1 OPC服務(wù)器結(jié)構(gòu)框架9</p><p>  4.1.2 OPC服務(wù)器需要實現(xiàn)的功能

8、11</p><p>  4.2 OPC服務(wù)器開發(fā)步驟12</p><p>  4.3 服務(wù)器組和項屬性實現(xiàn)12</p><p>  4.4 服務(wù)器與客戶端傳送機(jī)制13</p><p>  4.4.1 服務(wù)器與客戶端異步通報方式傳送機(jī)制13</p><p>  4.4.2 服務(wù)器與客戶端連接點(diǎn)方式傳送機(jī)制14

9、</p><p>  4.5 OPC對象和接口15</p><p>  5 OPC服務(wù)器的實驗測試15</p><p><b>  結(jié)論18</b></p><p><b>  參考文獻(xiàn)18</b></p><p>  附錄1 OPC組件的部分實現(xiàn)代碼19</

10、p><p>  附錄2 實驗設(shè)備及運(yùn)行環(huán)境21</p><p><b>  致謝22</b></p><p>  基于Modbus通信協(xié)議的智能儀表OPC服務(wù)器的開發(fā)</p><p>  摘要: OPC(OLE for Process Control)是過程控制軟硬件與基于Windows平臺的應(yīng)用程序之間的通信通道,它已

11、經(jīng)成為現(xiàn)代工業(yè)自動化控制領(lǐng)域的標(biāo)準(zhǔn),被廣大廠商和用戶所接受。Modbus通信協(xié)議是監(jiān)控系統(tǒng)自動化設(shè)備的通信標(biāo)準(zhǔn),可將Modbus報文信息傳輸于Internet中。隨著Modbus技術(shù)和OPC技術(shù)的發(fā)展,以及它們在工業(yè)領(lǐng)域中發(fā)揮的作用日益增加,研究基于Modbus的OPC數(shù)據(jù)訪問服務(wù)器成為了一個重要課題。</p><p>  本課題在Modbus協(xié)議和OPC規(guī)范基礎(chǔ)上,詳細(xì)介紹了基于Modbus通信協(xié)議的OPC服務(wù)

12、器的原理和開發(fā)過程。具體論述了OPC技術(shù)優(yōu)點(diǎn);OPC傳輸?shù)娜N方法---同步訪問、異步訪問、訂閱實現(xiàn)過程中的關(guān)鍵技術(shù);以及服務(wù)器實現(xiàn)過程中的關(guān)鍵技術(shù)。</p><p>  關(guān)鍵詞:Modbus通信協(xié)議;OPC數(shù)據(jù)服務(wù)器;COM;智能儀表</p><p>  OPC Server Development of Intelligent Instrument based on the Modbu

13、s Communication Protocol</p><p>  Abstract: OPC (OLE for Process Control) is a process control hardware and software based on Windows platform between the application program and the communication channel, i

14、t has become a modern industrial automation and control standards, by the vast number of manufacturers and users to accept. The communication protocol of Modbus is monitoring system automation equipment, communications s

15、tandards, the Modbus can be message transmission in Internet. With the Modbus technology and OPC technology</p><p>  This topic in the Modbus agreement and the OPC standard foundation, described in detail ba

16、sed on the communication protocol of Modbus OPC server principle and development process. Discusses the advantages of OPC technology; OPC transmission for three methods - synchronous access, asynchronous access, subscrib

17、e to realize the key technology in the process of server; and the realization of the key technology.</p><p>  Key words: Communication protocol of Modbus; OPC server; COM; Intelligent instrument</p>&

18、lt;p><b>  1 緒論</b></p><p>  1.1 課題的選題背景及意義</p><p>  計算機(jī)在當(dāng)今工業(yè)自動化控制領(lǐng)域中發(fā)揮著日益不可替代的作用,工業(yè)控制領(lǐng)域中各種智能儀表都提供了和計算機(jī)的通信協(xié)議[1~3]。微電子技術(shù)和計算機(jī)技術(shù)的不斷發(fā)展,引起了儀表結(jié)構(gòu)的根本性變革,以微型計算機(jī)(單片機(jī))為主體,將計算機(jī)技術(shù)和檢測技術(shù)有機(jī)的結(jié)合,組成新

19、一代“智能化儀表”,在測量過程自動化、測量數(shù)據(jù)處理及功能多樣化方面與傳統(tǒng)儀表的常規(guī)測量電路相比較,取得了巨大進(jìn)展。智能儀表不僅能解決傳統(tǒng)儀表不易或不能解決的問題,還能簡化儀表電路,提高儀表的可靠性,更容易實現(xiàn)高精度、高性能、多功能的目的。隨著科學(xué)技術(shù)的進(jìn)一步發(fā)展,儀表的智能化程度將越來越高。智能儀表和智能傳感器一般是用在現(xiàn)場總線系統(tǒng)中,這種儀表和傳感器內(nèi)部嵌入的有通信模塊和控制模塊,可以完成數(shù)據(jù)采集,數(shù)據(jù)處理和數(shù)據(jù)通信功能。使計算機(jī)控制

20、系統(tǒng)成為最為方便的自動控制方法。但是在OPC出現(xiàn)之前,工業(yè)領(lǐng)域中用到的很多現(xiàn)場設(shè)備都存在上層軟件和下層硬件不一致性的問題[4~5],對于不同廠商開發(fā)的不同設(shè)備都必須開發(fā)對應(yīng)的驅(qū)動程序如圖1-1,這樣造成了極大的資源浪費(fèi)和設(shè)備運(yùn)用的局限性。而OPC出現(xiàn)之后的狀況則完全改變?nèi)鐖D1-2。OPC采用客戶機(jī)-服務(wù)器</p><p>  圖1-1 OPC技術(shù)出現(xiàn)之前</p><p>  圖1-2 OP

21、C技術(shù)出現(xiàn)之后</p><p>  1.2 OPC技術(shù)國內(nèi)外發(fā)展現(xiàn)狀</p><p>  OPC是OPC基金會組織制定的一套工業(yè)控制領(lǐng)域的開放式標(biāo)準(zhǔn)。它的本質(zhì)是采用了Microsoft公司的OLE/COM和DCOM技術(shù),它包括自動化應(yīng)用中使用的有一整套接口、屬性和方法的標(biāo)準(zhǔn)[9]。OPC規(guī)范定義了一個工業(yè)標(biāo)準(zhǔn)接口,這個標(biāo)準(zhǔn)使得COM技術(shù)使用于過程控制和制造自動化等應(yīng)用領(lǐng)域。OPC建立在OL

22、E規(guī)范之上,它為工業(yè)控制領(lǐng)域提供了一種公用的數(shù)據(jù)訪問機(jī)制,具有語言無關(guān)性、代碼重用性和易于集成性等優(yōu)點(diǎn)[10]。它使廠商不必再為不同的應(yīng)用需求開發(fā)不同的驅(qū)動程序,避免了控制系統(tǒng)中同一設(shè)備的不同驅(qū)動程序同時訪問設(shè)備時造成的沖突問題。OPC規(guī)范以O(shè)LE/DCOM為基礎(chǔ),而OLE/DCOM支持TCP/IP等網(wǎng)絡(luò)協(xié)議,所以可以將各個子系統(tǒng)分開,分布于網(wǎng)絡(luò)的不同節(jié)點(diǎn)上。OPC保證了軟件對客戶的透明性,使得用戶完全從低層的開發(fā)中脫離出來。不管過程中

23、采用什么軟件或設(shè)備,OPC為它們提供了公共的接口和以下多種訪問機(jī)制:(1)客戶端和服務(wù)器位于同一臺計算機(jī)上;(2)客戶端和服務(wù)器位于不同的計算機(jī)上;(3)單個客戶端和多個服務(wù)器通信;(4)多個客戶端和單個服務(wù)器通信;(5)多個客戶端和多個服務(wù)器通信[11]。</p><p>  國外OPC發(fā)展迅速,應(yīng)用也很廣泛,眾多的廠家研發(fā)生產(chǎn)了種類眾多的OPC產(chǎn)品,OPC基金會從成立開始會員逐年增加,到目前為止在全球范圍內(nèi)已

24、有300多家公司加入了這個國際標(biāo)準(zhǔn)組織。同時由控制設(shè)備廠商和控制軟件供應(yīng)商提供的OPC產(chǎn)品也日益增加,目前已有600種以上的OPC服務(wù)器產(chǎn)品和OPC應(yīng)用程序產(chǎn)品出現(xiàn)在由OPC基金會發(fā)行的OPC產(chǎn)品目錄上,促成OPC成為工業(yè)控制過程國際標(biāo)準(zhǔn)的地位。不過在國內(nèi)OPC產(chǎn)品開發(fā)目前幾乎還是空白,只有少數(shù)自動化軟件和大型硬件廠商實現(xiàn)了OPC客戶或OPC服務(wù)器功能,市場開拓還處于概念宣傳階段。由于歐美的OPC服務(wù)器價格比較昂貴,國內(nèi)也只有極少數(shù)的大

25、型自動化工程購買并應(yīng)用了OPC產(chǎn)品[12~13]。由于OPC標(biāo)準(zhǔn)的技術(shù)優(yōu)勢和發(fā)展前景,國內(nèi)的眾多自動化公司已經(jīng)開始積極探索OPC技術(shù)的應(yīng)用開發(fā)。</p><p>  1.3 本課題主要研究內(nèi)容</p><p>  本課題主要研究的是Modbus通信協(xié)議和OPC服務(wù)器的相關(guān)內(nèi)容。首先詳細(xì)論述了Modbus協(xié)議的主要內(nèi)容、歷史和現(xiàn)場總線技術(shù),介紹了Modbus數(shù)據(jù)模型、地址參數(shù)表、通信結(jié)構(gòu)及兼

26、容分類。接著分析了OPC的發(fā)展現(xiàn)狀、COM技術(shù)、接口技術(shù),討論了OPC服務(wù)器的同步數(shù)據(jù)訪問和異步數(shù)據(jù)訪問方式,在此基礎(chǔ)上對基于Modbus的OPC服務(wù)器的開發(fā)進(jìn)行了深入的研究。研究重點(diǎn)是基于Modbus的OPC服務(wù)器的設(shè)計和實現(xiàn)。</p><p>  各章節(jié)主要內(nèi)容如下:</p><p>  第一章:介紹選題背景和意義以及OPC的發(fā)展現(xiàn)狀;</p><p>  第二

27、章:Modbus通信協(xié)議的技術(shù)歷史和基本內(nèi)容;</p><p>  第三章:OPC服務(wù)器的技術(shù)規(guī)范和數(shù)據(jù)訪問方式;</p><p>  第四章:詳細(xì)論述基于Modbus的OPC服務(wù)器的設(shè)計實現(xiàn);</p><p>  第五章:服務(wù)器的實驗測試。</p><p>  2 Modbus總線技術(shù)</p><p>  2.1 現(xiàn)

28、場總線技術(shù)</p><p>  現(xiàn)場總線技術(shù)是用于過程自動化、制造自動化等領(lǐng)域的現(xiàn)場智能設(shè)備相互通信的網(wǎng)絡(luò),它作為工業(yè)數(shù)字通信網(wǎng)絡(luò)基礎(chǔ),溝通了生產(chǎn)過程現(xiàn)場及控制設(shè)備之間及其與更高控制管理層次之間的聯(lián)系。它不僅是一個基層網(wǎng)絡(luò),而且還是一種開放式、新型全分布控制系統(tǒng)。這項以智能控制、數(shù)字通信等技術(shù)為主要內(nèi)容的綜合技術(shù),已經(jīng)受到世界范圍的關(guān)注,成為自動化技術(shù)發(fā)展的焦點(diǎn),并將導(dǎo)致自動化系統(tǒng)結(jié)構(gòu)與設(shè)備的深刻變革。</

29、p><p>  2.2 Modbus技術(shù)歷史</p><p>  Modbus是由Modicon公司在1978年發(fā)明的,它拉開了工業(yè)網(wǎng)絡(luò)的序幕,是一個跨時代、里程碑式的網(wǎng)絡(luò)協(xié)議,他是第一個真正永業(yè)工業(yè)現(xiàn)場的總線協(xié)議,全球有超過800萬個安裝的節(jié)點(diǎn),可見其普及的程度相當(dāng)高,已經(jīng)成為事實上的協(xié)議標(biāo)準(zhǔn)。它有以下三點(diǎn)成功之處:</p><p> ?。?)開放性:用戶可以放心的免

30、費(fèi)使用Modbus協(xié)議,不用繳納費(fèi)用,不會構(gòu)成侵權(quán);</p><p> ?。?)支持多種電氣接口:RS232,RS422、RS485等,可在雙絞線、光纜、無線射頻等介質(zhì)上傳送;</p><p> ?。?)簡單易懂:其格式幀是最為簡單緊湊的協(xié)議,廠商開發(fā)簡單,用戶使用也方便。</p><p>  2.3 Modbus通信協(xié)議</p><p> 

31、 Modbus是電子控制器應(yīng)用上的通用語言,通過此協(xié)議控制器之間、控制器通過網(wǎng)絡(luò)和其他控制器之間可以通信。它主要針對單主站和多從站之間的通信規(guī)則作出約定,規(guī)定數(shù)據(jù)傳輸以幀為單位,將報文作為一幀數(shù)據(jù),報文是由發(fā)送數(shù)據(jù)、發(fā)送地址、控制信息、校驗信息按一定格式組成的數(shù)據(jù)單元。主站發(fā)送報文后,所有從站都會接收到報文,但只有主站發(fā)送的報文中包含尋址的從站才能執(zhí)行報文操作,接著將操作結(jié)果返回給主站,如果主站發(fā)送了錯誤報文,從站會發(fā)送錯誤報告返回給主

32、站。若主站未收到應(yīng)答信息或者響應(yīng)報文,會再次發(fā)送報文給從站。Modbus通信協(xié)議有兩種模式分別為ASCⅡ和RTU,數(shù)據(jù)量小的常用ASCⅡ模式,通信數(shù)據(jù)量大而且是二進(jìn)制時候用RTU規(guī)約。</p><p>  2.3.1 Modbus數(shù)據(jù)模型</p><p>  Modbus通信協(xié)議中,一般采用面向連接的方法,聯(lián)網(wǎng)時經(jīng)過建立連接、通信、釋放鏈接三個步驟。在Modbus變量中可通過明確的“變成路

33、徑”性能獲得,這種性能要求雙方按照通信協(xié)議直到連接終止。“讀寫通用寄存器”功能碼定義可指定一個32位寄存器地址,用戶寄存器起始地址是十進(jìn)制數(shù)表示的1,而不是像很多其他程序一樣從0開始。</p><p>  Modbus的數(shù)據(jù)模型主要基于以下四個表:</p><p>  輸入開關(guān)量 單個位,由I/O系統(tǒng)提供……只讀;</p><p>  輸出開關(guān)量 單個位,通過應(yīng)

34、用程序可變……讀寫;</p><p>  輸入寄存器 16位量,由I/O體統(tǒng)提供……只讀;</p><p>  輸出寄存器 16位量,通過應(yīng)用程序可變……讀寫。</p><p>  2.3.2 Modbus地址參數(shù)表及通信結(jié)構(gòu)</p><p>  Modbus數(shù)據(jù)模型的基礎(chǔ)是一系列區(qū)別不同類型參數(shù)的地址參數(shù)表,主要由以下四個參數(shù)表:<

35、;/p><p>  開關(guān)量型輸入:來自I/O系統(tǒng)的只讀型1位布爾型數(shù)據(jù),地址范圍10001-1FFFF;</p><p>  開關(guān)量型輸出:應(yīng)用程序控制變化的可讀可寫型布爾型數(shù)據(jù),地址范圍00001-0FFFF;</p><p>  輸入寄存器:來自I/O系統(tǒng)的只讀型16位數(shù)據(jù),地址范圍30001-3FFFF;</p><p>  輸出寄存器:由

36、應(yīng)用程序控制變化的可讀可寫型16位數(shù)據(jù),地址范圍40001-4FFFF。</p><p>  Modbus通信結(jié)構(gòu)如圖2-1:</p><p>  圖2-1 Modbus通信結(jié)構(gòu)圖</p><p>  2.3.3 Modbus兼容分類</p><p>  Modbus采用兼容分類來避免與已有的系統(tǒng)發(fā)生沖突,它定義了0級和1級類,表示已經(jīng)實現(xiàn)的

37、應(yīng)用的交易模式,達(dá)到兼容舊系統(tǒng)的目的。2級類代表一些特殊的功能應(yīng)用,此外還通過分類來識別一些已經(jīng)存在但不易解釋實現(xiàn)的交易。</p><p>  0級是所有服務(wù)器和客戶端都必須實現(xiàn)的最小功能集。</p><p>  讀多個寄存器(功能03)</p><p>  寫多個寄存器(功能16)</p><p>  1級是常用的附加功能,這些功能被客戶端

38、解釋為輸入輸出的開關(guān)量和模擬量。</p><p><b>  讀線圈(功能01)</b></p><p>  讀離散量輸入(功能02)</p><p>  讀輸入寄存器(功能04)</p><p><b>  寫線圈(功能05)</b></p><p>  寫單個寄存器(功能

39、06)</p><p>  讀異常狀態(tài)(功能07)</p><p>  2級是一組常規(guī)應(yīng)用于人機(jī)接口程序和監(jiān)控程序中的數(shù)據(jù)傳輸功能。</p><p>  寫多個線圈(功能15)</p><p>  讀文件記錄(功能20)</p><p>  寫文件記錄(功能21)</p><p>  另外,如果

40、過程發(fā)生狀況,則由從機(jī)返回一組例外碼,所有例外通過給請求的函數(shù)碼加0x80來發(fā)送信號,就是將最高位置一。例外響應(yīng)包括不合法的函數(shù),不合法的數(shù)據(jù)值,不合法的數(shù)據(jù)地址,不合法的響應(yīng)長度,從機(jī)設(shè)備忙,無用的確認(rèn),存儲奇偶錯誤,網(wǎng)關(guān)路徑難以獲得,網(wǎng)關(guān)目標(biāo)設(shè)備不能響應(yīng)等。</p><p>  Modbus報文格式如圖2-2所示。</p><p>  圖2-2 Modbus報文格式</p>

41、<p><b>  3 OPC技術(shù)規(guī)范</b></p><p>  3.1 OPC技術(shù)歷史</p><p>  早期的OPC規(guī)范是由5家工業(yè)軟件制造商組成的OPC小組在1995年開發(fā)的,在1996年8月完成了OPC數(shù)據(jù)訪問標(biāo)準(zhǔn)版本1.0。OPC基金會在1996年9月24日在美國達(dá)拉斯舉行了第一次理事會,并在同年10月7日芝加哥的第一次全體大會上宣告成立。

42、現(xiàn)在的OPC基金會的理事會是由Fisher-Rosement,Honeywell,Interllution,Rockwell,Software,National Instrument以及歐洲代表的Siemens和遠(yuǎn)東代表的東芝組成的。在日本為響應(yīng)以美國中心的標(biāo)準(zhǔn)活動,于1996年6月開始基金會成立的準(zhǔn)備,于1996年10月17日正式成立了日本的OPC基金會。與此同時歐洲也成立了自己的OPC基金會。中國也由5家公司作為發(fā)起人于2001年1

43、2月成立了中國OPC促進(jìn)會。</p><p>  3.2 OPC技術(shù)規(guī)范</p><p>  OPC基金會制定了各種OPC規(guī)范,并且不斷地進(jìn)行升級和更新以便于適應(yīng)日益變化發(fā)展的工業(yè)自動化領(lǐng)域。在設(shè)計OPC服務(wù)器或者相應(yīng)程序時要按照規(guī)范去操作,以保證設(shè)備和程序的相互兼容性。</p><p>  OPC規(guī)范包含以下幾個方面:</p><p>  

44、(1)OPC數(shù)據(jù)存取規(guī)范即數(shù)據(jù)訪問標(biāo)準(zhǔn);</p><p>  (2)OPC報警與事件規(guī)范即報警和事件的標(biāo)準(zhǔn);</p><p> ?。?)OPC歷史數(shù)據(jù)存取規(guī)范即歷史數(shù)據(jù)訪問標(biāo)準(zhǔn);</p><p> ?。?)OPC批處理規(guī)范即批處理的標(biāo)準(zhǔn);</p><p> ?。?)OPC安全規(guī)范即安全性的標(biāo)準(zhǔn);</p><p> ?。?/p>

45、6)OPC數(shù)據(jù)交換規(guī)范即服務(wù)器間數(shù)據(jù)交換的標(biāo)準(zhǔn);</p><p> ?。?)OPC_XML規(guī)范即過程數(shù)據(jù)的XML標(biāo)準(zhǔn)。</p><p><b>  3.3 COM技術(shù)</b></p><p>  COM是微軟公司倡導(dǎo)的一個制定軟件的方法,在COM的構(gòu)架下可以開發(fā)出各式各樣的功能專一的組件,然后按照需要將他們結(jié)合起來,構(gòu)成復(fù)雜的應(yīng)用系統(tǒng)。它可以隨

46、時為系統(tǒng)升級,只需將原系統(tǒng)中的組件用新的更換掉。一個組件也可以在多個應(yīng)用系統(tǒng)中重復(fù)利用,還可以很方便的將應(yīng)用系統(tǒng)至于網(wǎng)絡(luò)之中。</p><p>  COM的體系結(jié)構(gòu)有COM的核心、統(tǒng)一數(shù)據(jù)傳輸、智能命名和持久存儲。其中COM核心包括服務(wù)控制管理員、接口基、接口代理和COM庫。其定義了COM對象與客戶如何通過二進(jìn)制標(biāo)準(zhǔn)接口進(jìn)行交互的標(biāo)準(zhǔn)。COM本身預(yù)定義了一套通用接口,用來建立基于客戶服務(wù)器結(jié)構(gòu)的COM應(yīng)用。接口是

47、用于部件對象間作用的二進(jìn)制標(biāo)準(zhǔn),每個接口都包含了一系列函數(shù),這些函數(shù)規(guī)定實現(xiàn)接口的對象和用戶使用這些對象所遵循的協(xié)議,包含接口名、函數(shù)名、參數(shù)名及其類型。</p><p>  下面簡單介紹一下COM組件、COM對象和COM接口。COM組件在windows平臺上可以是DLL文件或者EXE文件,組件為COM對象提供了活動空間,一個組件程序可以包含多個COM對象,COM對象用接口的方式提供服務(wù),一個COM對象可以擁有多

48、個COM接口。</p><p>  COM支持的是面向?qū)ο蟮慕M件模型,COM組件提供給客戶端的是以對象形式封閉起來的實體。客戶端和COM組件程序交換數(shù)據(jù)的實體是COM對象,它無需在乎組件模塊的名稱和位置,但要知道和自己交互的COM對象是哪個,客戶程序通過一個COM對象的全局標(biāo)識符來創(chuàng)建和初始化對象,并不直接訪問COM組件。</p><p>  COM接口都是從IUnknown接口派生的,C

49、OM接口實現(xiàn)了二進(jìn)制的內(nèi)存結(jié)構(gòu)??蛻舫绦蛴弥赶蚪涌跀?shù)據(jù)結(jié)構(gòu)的指針來調(diào)用接口函數(shù),接口指針又指向另一個指針,這個指針指向虛函數(shù)表,虛函數(shù)表里面一項由4個字節(jié)長的函數(shù)指針組成,每一個接口的vtable是確定的,COM接口vtable的前三個指針是QueryInterface、AddRef、Release函數(shù)實現(xiàn)的地址,函數(shù)指針和對象的具體實現(xiàn)連接??蛻糁灰@得了指針就可以調(diào)用到對象的實際功能。圖3-1是接口的二進(jìn)制內(nèi)存結(jié)構(gòu):</p&g

50、t;<p>  圖3-1 COM接口二進(jìn)制內(nèi)存結(jié)構(gòu)</p><p>  COM規(guī)范用128位全局唯一標(biāo)識符GUID來標(biāo)識COM對象和COM接口,標(biāo)識的COM對象為CLSID,標(biāo)識的COM接口為IID??蛻舫绦蛲ㄟ^指定的CLSID進(jìn)行對象的創(chuàng)建和初始化工作,客戶程序要使用COM對象的接口,它必須知道該接口的IID和接口成員函數(shù)。</p><p>  3.4 OPC服務(wù)器數(shù)據(jù)訪問

51、方式</p><p>  OPC數(shù)據(jù)訪問有兩種方式:同步訪問和異步訪問,下面分別介紹。</p><p>  3.4.1 同步數(shù)據(jù)訪問</p><p>  圖3-2 同步數(shù)據(jù)訪問過程</p><p>  同步數(shù)據(jù)訪問過程如圖3-2所示,OPC服務(wù)器按照OPC客戶端的要求把得到的數(shù)據(jù)訪問結(jié)果作為方法參數(shù)返還給OPC客戶端,OPC客戶端在結(jié)果被返還

52、之前必須處于等待狀態(tài)。小批量的數(shù)據(jù)訪問使用這個方法比較便捷,對于大批量的數(shù)據(jù),就很占用OPC客戶端的時間。在OPC數(shù)據(jù)存取規(guī)范中,同步數(shù)據(jù)訪問方法是用IOPCSyncIO接口來實現(xiàn),IOPCSyncIO接口有兩個函數(shù):Read和Write。根據(jù)OPC數(shù)據(jù)訪問標(biāo)準(zhǔn),不同的數(shù)據(jù)讀取方式所需要的數(shù)據(jù)源有兩種:從服務(wù)器數(shù)據(jù)緩沖區(qū)讀??;二是從硬件設(shè)備直接讀取。Read同步數(shù)據(jù)讀取可以從數(shù)據(jù)緩沖區(qū)讀取或者硬件設(shè)備直接讀取,從數(shù)據(jù)緩沖區(qū)讀取數(shù)據(jù)時受組

53、和項狀態(tài)的影響,Write同步寫操作是直接向設(shè)備寫數(shù)據(jù)。</p><p>  3.4.2 異步數(shù)據(jù)訪問</p><p>  圖3-3 異步數(shù)據(jù)訪問過程</p><p>  異步數(shù)據(jù)訪問過程如圖3-3所示,OPC服務(wù)器接收到OPC客戶端要求后,檢查了參數(shù)中的項的服務(wù)器句柄是否有效,然后將方法返回,OPC應(yīng)用程序進(jìn)行處理。當(dāng)OPC服務(wù)器完成數(shù)據(jù)訪問時,觸發(fā)OPC應(yīng)用程序

54、異步訪問的完成,將數(shù)據(jù)結(jié)果返回給OPC應(yīng)用程序。</p><p>  4 Modbus OPC數(shù)據(jù)訪問服務(wù)器的實現(xiàn)</p><p>  4.1 OPC服務(wù)器要求分析</p><p>  本節(jié)主要介紹OPC服務(wù)器設(shè)計實現(xiàn)的主要功能和設(shè)計環(huán)境以及總體框架,初步構(gòu)建起OPC服務(wù)器設(shè)計的基礎(chǔ)。</p><p>  4.1.1 OPC服務(wù)器結(jié)構(gòu)框架&l

55、t;/p><p>  對于現(xiàn)代化生產(chǎn)來說,利用計算機(jī)監(jiān)控系統(tǒng)實時監(jiān)控現(xiàn)場設(shè)備的運(yùn)行狀態(tài)和數(shù)據(jù)對提高生產(chǎn)效率有非常大的幫助,上傳來的數(shù)據(jù)可以作為參考來更改現(xiàn)場設(shè)備的運(yùn)行參數(shù)也可快速的查找現(xiàn)場設(shè)備的故障原因,而OPC服務(wù)器就可以辦得到這些。</p><p>  基于Modbus的智能儀表OPC服務(wù)器可以實現(xiàn)向下和Modbus從設(shè)備的通信,向上可以將實時數(shù)據(jù)傳輸?shù)絆PC客戶端。其結(jié)構(gòu)如下圖4-1所示

56、:</p><p>  圖4-1 OPC服務(wù)器結(jié)構(gòu)框架</p><p>  從現(xiàn)場設(shè)備讀取回來的數(shù)據(jù)通過Modbus協(xié)議工業(yè)以太網(wǎng)以數(shù)據(jù)幀的形式傳到OPC服務(wù)器,經(jīng)過服務(wù)器的處理再通過OPC接口上傳到OPC客戶端,這樣就完成了遠(yuǎn)程監(jiān)控現(xiàn)場設(shè)備運(yùn)作狀態(tài)的過程。</p><p>  現(xiàn)在簡介一下OPC服務(wù)器關(guān)鍵模塊管理模塊的設(shè)計理念。管理模塊主要處理通道的定義、標(biāo)簽組、

57、標(biāo)簽和邏輯設(shè)備的定義、物理設(shè)備向通道和邏輯設(shè)備的映射、物理設(shè)備數(shù)據(jù)點(diǎn)與OPC Item的映射關(guān)系等方面的設(shè)備和數(shù)據(jù)點(diǎn)的管理功能。OPC服務(wù)器接口接收到客戶端的請求后也必須利用管理模塊提供請求的OPC Item對應(yīng)的物理設(shè)備數(shù)據(jù)點(diǎn)的信息。其數(shù)據(jù)點(diǎn)監(jiān)視功能使通信模塊在客戶端界面上實現(xiàn)對設(shè)備數(shù)據(jù)點(diǎn)的讀寫。</p><p>  如圖4-2所示,它包含通道定義、Modbus從設(shè)備映射、數(shù)據(jù)點(diǎn)映射、模擬變量變換和數(shù)據(jù)點(diǎn)在線監(jiān)

58、視五個模塊。</p><p>  圖4-2 管理模塊結(jié)構(gòu)</p><p>  通道定義模塊是與遠(yuǎn)程Modbus服務(wù)器的連接屬性的設(shè)置。通道由IP地址、IP端口和連接超時值組成。對于每一個IP地址、IP端口必須定義唯一一個通道,這樣連接到網(wǎng)絡(luò)上的設(shè)備就可以利用這些信息連接到確定的唯一的OPC服務(wù)器的物理設(shè)備。</p><p>  Modbus從設(shè)備映射模塊主要功能是將

59、物理設(shè)備的信息映射到相應(yīng)的邏輯設(shè)備和通道之中。</p><p>  數(shù)據(jù)點(diǎn)映射模塊將設(shè)備數(shù)據(jù)點(diǎn)直接映射為管理模塊的標(biāo)簽,而標(biāo)簽包含有的信息有:設(shè)備數(shù)據(jù)點(diǎn)具體的地址、儲存區(qū)類型、數(shù)據(jù)類型和讀取權(quán)限。OPC項代表了到數(shù)據(jù)源的連接,相當(dāng)于一個指針,指向它所對應(yīng)的標(biāo)簽,通過標(biāo)簽的信息完成連接。</p><p>  物理設(shè)備中的模擬變量是以整數(shù)或者浮點(diǎn)數(shù)的形式讀出的,可是這些值只是存儲區(qū)內(nèi)的一個相對

60、量,模擬變量模塊可以將它們經(jīng)過比例變換成為有意義的物理值,還需要定義物理單位、死區(qū)、上溢下溢范圍等信息。</p><p>  數(shù)據(jù)點(diǎn)在線監(jiān)視模塊提供了設(shè)備數(shù)據(jù)點(diǎn)的讀取功能,讓服務(wù)器用戶界面可以實現(xiàn)數(shù)據(jù)點(diǎn)數(shù)值的在線讀取和寫入。</p><p>  4.1.2 OPC服務(wù)器需要實現(xiàn)的功能</p><p>  在OPC規(guī)范中可以總結(jié)出OPC服務(wù)器應(yīng)該實現(xiàn)的幾項基本功能,O

61、PC服務(wù)器要與客戶端實現(xiàn)連接,數(shù)據(jù)傳輸必須要有這些功能。首先OPC服務(wù)器要在客戶端需要的時候提供本地連接,以便于客戶端需要連接OPC服務(wù)器的時候,OPC服務(wù)器能夠被找到,能夠給客戶端提供必要的接口。同時需要OPC服務(wù)器支持Modbus通信協(xié)議,不需要任何額外的驅(qū)動程序,在和Modbus從設(shè)備通信的時候不需要為每個通信設(shè)備提供不同的驅(qū)動程序;然后OPC服務(wù)器需要提供IOPCServer、IOPCItemMgt、IOPCCGroupStat

62、eMgt、IOPCSyncIO等接口的實現(xiàn),只有實現(xiàn)了這些接口,客戶端才能夠通過該接口實現(xiàn)添加刪除服務(wù)器的組對象,對組對象進(jìn)行管理。而且無論是本機(jī)還是遠(yuǎn)程客戶端都能訪問服務(wù)器,支持了遠(yuǎn)程啟動,即使服務(wù)器不在運(yùn)行狀態(tài),只要有客戶端訪問服務(wù)器,服務(wù)器能夠自行啟動。</p><p>  下面是OPC服務(wù)器的幾個基本概念:</p><p>  (1)設(shè)備:指連接到OPC服務(wù)器的硬件設(shè)施(如PLC)

63、,對于Modbus OPC服務(wù)器來說,設(shè)備是指Modicon或者其他第三方Modbus兼容硬件。設(shè)備包含事務(wù)處理超時時間、連接類型等信息;</p><p>  (2)通道:通道為OPC服務(wù)器提供連接到硬件設(shè)備的物理連接的信息;</p><p>  (3)標(biāo)簽組:提供一種將標(biāo)簽成組的方法,用于生成地址空間的。標(biāo)簽組可以讓瀏覽標(biāo)簽的客戶端分層次的仔細(xì)查看標(biāo)簽;</p><p

64、> ?。?)標(biāo)簽:標(biāo)簽用于在OPC服務(wù)器中映射目標(biāo)硬件數(shù)據(jù)點(diǎn)。它的名稱可以取代PLC的以數(shù)字表示的寄存器。</p><p>  4.2 OPC服務(wù)器開發(fā)步驟</p><p> ?。?)定義OPC數(shù)據(jù)服務(wù)器的名稱和類標(biāo)識,然后根據(jù)規(guī)范對各個接口ID進(jìn)行定義;</p><p> ?。?)實現(xiàn)OPC數(shù)據(jù)服務(wù)器類廠對象,創(chuàng)建OPC服務(wù)器對象;</p>&

65、lt;p> ?。?)設(shè)計OPC對象。首先通過繼承IUnknown類派生出OPCServer,OPCGroup和OPCItem 3個類,分別對應(yīng)OPC服務(wù)器對象,組對象和項對象,并重載IUnknown類中的接口查詢和引用計數(shù)函數(shù)。然后將OPC基金會網(wǎng)站上提供的相應(yīng)的頭文件添加到工程中,通過繼承這些接口派生出新的接口類實現(xiàn)每個接口的成員函數(shù)。在OPCServer和OPCGroup類中增加指向相應(yīng)接口類的指針成員變量,接著修改接口查詢函

66、數(shù)。當(dāng)客戶程序查詢某一接口時,實例化接口類,并返回接口指針變量,客戶程序再通過該接口指針進(jìn)一步調(diào)用接口成員函數(shù);</p><p>  (4)數(shù)據(jù)存儲區(qū)的設(shè)計。由于OPC服務(wù)器要對底層硬件進(jìn)行讀寫操作,又要通過OPC接口與客戶程序進(jìn)行交互,所以對數(shù)據(jù)存儲區(qū)的操作需要采用多線程模型,以保證數(shù)據(jù)存取的效率。為避免不同線程同時對數(shù)據(jù)區(qū)中的數(shù)據(jù)進(jìn)行操作,須考慮對臨界區(qū)的互斥控制;</p><p> 

67、?。?)界面設(shè)計??梢栽O(shè)計類似Windows中資源管理器的用戶界面,將各數(shù)據(jù)項用樹型結(jié)構(gòu)表示然后設(shè)計數(shù)據(jù)項和硬件的設(shè)置界面,并與數(shù)據(jù)存儲區(qū)和硬件接口聯(lián)系起來,實現(xiàn)相應(yīng)的組態(tài)功能。在OPC服務(wù)器程序關(guān)閉時,需要將數(shù)據(jù)項的屬性以及硬件設(shè)置參數(shù)作為組態(tài)文件保存起來,而在程序運(yùn)行時能自動調(diào)入組態(tài)文件完成初始設(shè)置;</p><p> ?。?)根據(jù)硬件的種類和特性,自行開發(fā)驅(qū)動程序,或者調(diào)用硬件廠商提供的I/ODLL實現(xiàn)對現(xiàn)

68、場設(shè)備進(jìn)行設(shè)置以及數(shù)據(jù)存取的功能;</p><p> ?。?)獲取OPC標(biāo)準(zhǔn)組件并在服務(wù)器上注冊,然后利用OPC客戶端程序連接OPC服務(wù)器進(jìn)行測試。</p><p>  4.3 服務(wù)器組和項屬性實現(xiàn)</p><p>  每個組有兩個I/O接口:同步和異步接口。每個接口有讀、寫兩種函數(shù)。同步函數(shù)在執(zhí)行I/O操作時,會阻塞當(dāng)前進(jìn)程。同步讀函數(shù)可以指定是讀緩存還是讀設(shè)備,

69、過程如下:讀緩存用于服務(wù)器立即得到最近的數(shù)據(jù),而不執(zhí)行一個較慢的I/O操作。如果項是不活動的,則返回一個壞的品質(zhì)。讀設(shè)備強(qiáng)迫服務(wù)器從所連的設(shè)備讀取數(shù)據(jù)。因為這種方法較慢,它通常作診斷用。</p><p>  同步寫函數(shù)總是把數(shù)據(jù)寫到設(shè)備上,返回完成狀態(tài)給OPC客戶。同步讀寫函數(shù)獨(dú)立于數(shù)據(jù)連接通知。異步函數(shù)包括讀、寫、刷新和取消。像同步讀寫函數(shù)一樣,異步讀寫函數(shù)也可以操作多個項不同的是異步函數(shù)請求動作,并且立即返回

70、。一個獨(dú)立的線程按照先后順序處理這些操作,操作結(jié)果按請求登記順序通過連接點(diǎn)通知OPC客戶。讀函數(shù)引起所有的請求數(shù)據(jù)返回,這個函數(shù)是獨(dú)立于變化驅(qū)動通知的。異步寫函數(shù)通過連接點(diǎn)返回給OPC客戶的是I/O函數(shù)操作完后的狀態(tài)。異步刷新函數(shù)僅僅影響變化驅(qū)動通知,刷新函數(shù)本質(zhì)上強(qiáng)行更新指定項,而不管最近的改變是否通知了OPC客戶。返回給OPC客戶的是最近的值。品質(zhì)是OPC數(shù)據(jù)必要的選項,服務(wù)器用品質(zhì)來表示數(shù)據(jù)不可靠或壞的。</p>&

71、lt;p>  句柄是組和項的一個屬性。組和項都有客戶句柄和服務(wù)器句柄,客戶句柄被OPC客戶分配與一個對象關(guān)聯(lián),服務(wù)器在相關(guān)操作中返回這個句柄,通過句柄來識別這個對象。例如,當(dāng)數(shù)據(jù)返回時,組的句柄在結(jié)構(gòu)的頭部,項的句柄與數(shù)據(jù)相關(guān)。OPC客戶通過這種風(fēng)格來分配句柄使自己工作更有效率。句柄是一個普通的數(shù)據(jù)結(jié)構(gòu)、一個索引或偏移量,服務(wù)器通過句柄來聯(lián)系項。OPC客戶在任何操作中,通過傳送句柄來向服務(wù)器表示項。服務(wù)器也采用 OPC客戶一樣的方

72、法來分配句柄。</p><p>  4.4 服務(wù)器與客戶端傳送機(jī)制</p><p>  OPC規(guī)范發(fā)展到目前為止,針對服務(wù)器與客戶端的數(shù)據(jù)傳送共提出了兩種方法,分別是異步數(shù)據(jù)通報和連接點(diǎn)方式。其中異步數(shù)據(jù)通報方式應(yīng)用于符合OPC規(guī)范1.0版本要求的服務(wù)器中,連接點(diǎn)方式用于符合OPC規(guī)范2.0版本要求的服務(wù)器中。OPC服務(wù)器與客戶端數(shù)據(jù)傳送機(jī)制是整個OPC服務(wù)器開發(fā)過程中的關(guān)鍵技術(shù),下面對這

73、兩種數(shù)據(jù)傳遞方式分別進(jìn)行討論。</p><p>  4.4.1 服務(wù)器與客戶端異步通報方式傳送機(jī)制</p><p>  通過異步通報方式傳送數(shù)據(jù)時,客戶端需要實現(xiàn)IAdviseSink接口,服務(wù)器端需要實現(xiàn)IDataObject接口。IAdviseSink接口和IDataObject接口都由COM庫定義。</p><p>  IAdviseSink接口用于接收異步通

74、報。異步報有3種類型:復(fù)合文檔、數(shù)據(jù)變化和視區(qū)變化IAdviseSink的實現(xiàn)者可以根據(jù)實際需要讓IAdvieSink接收一種或多種類型的異步通報,IAdvieSink的每一種方法是對應(yīng)于一種特定通報的回函數(shù)。當(dāng)觸發(fā)異步通報發(fā)送的條件滿足后,發(fā)送報的程序調(diào)用合適的IAdviseSink方法。IDataObject接口它用于處理數(shù)據(jù)變化通報,因而只實現(xiàn)了IDataObject的DAdvise方法和DUnadvise方法。DAdvise函數(shù)

75、用于建立雙向通信機(jī)制,客戶程序調(diào)用此函數(shù),以便在客戶程序的通報接收器和對象之間建立一個通報連接,以后當(dāng)對象中的據(jù)發(fā)生變化時,它可以通知客戶程序的接收器DUnadvise函數(shù)用于取消通報連接。</p><p>  下面簡單介紹下一步操作流程:在OPC中,數(shù)據(jù)傳輸是以組為單位進(jìn)行的在實現(xiàn)異步操作前,客戶和服務(wù)器之間必須以組為單位建立連接,這個連接是由客戶調(diào)用服務(wù)器的IDataObject接口中的 DAdvise函數(shù)建

76、立的。建立好后,在服務(wù)器方將保存客戶的IAdviseSink接口當(dāng)需要傳輸數(shù)據(jù)時,就使用客戶方的IAdviseSin接口向客戶傳輸數(shù)據(jù)。具體的連接流程:</p><p> ?。?)OPC客戶調(diào)用CoCreateInstance函數(shù)創(chuàng)建服務(wù)器對象,獲得其接口指針,客戶就可以利用該指針直接調(diào)用接口成員函數(shù)。在服務(wù)器端為客戶生成一個OPCServer對象;</p><p>  (2)用戶調(diào)用服務(wù)

77、器實現(xiàn)的IOPCServer::Ad2dGroup()函數(shù)添加組;</p><p> ?。?)客戶調(diào)用服務(wù)器實現(xiàn)的IOPCSeEver::Ad2dltem()函數(shù)添加項;</p><p> ?。?)客戶生成一個IAdviseSink對象;</p><p> ?。?)客戶調(diào)用服務(wù)器端實現(xiàn)的DAdvise函數(shù),與服務(wù)器建立連接。服務(wù)器在OPCGroup對象中保存客戶的I

78、AdviseSink對象和數(shù)據(jù)格式;</p><p> ?。?)客戶調(diào)用服務(wù)器IOPCASyncIO發(fā)出讀/寫操作,服務(wù)器給相應(yīng)組和項做異步讀/寫標(biāo)記;</p><p> ?。?)服務(wù)器向通道發(fā)送命令,等待命令返回;</p><p>  (8)服務(wù)器接收通道的讀/寫結(jié)果,給與通道對應(yīng)的OPC項置讀/寫完成標(biāo)記;</p><p> ?。?)服務(wù)

79、器中建有定時器,該定時器定時掃描OPC項的異步操作標(biāo)記當(dāng)發(fā)現(xiàn)標(biāo)記為完成時,調(diào)用IOPCDataObject中保存的客戶的IAdviseSink對象的OnDataChange函數(shù),把項的數(shù)據(jù)傳輸給客戶,然后給項的標(biāo)記復(fù)位客戶在OnDataChange 函數(shù)中,按照約定的數(shù)據(jù)格式,獲得異步操作的結(jié)果。</p><p>  4.4.2 服務(wù)器與客戶端連接點(diǎn)方式傳送機(jī)制</p><p>  一般情

80、況下,服務(wù)器組件提供的接口都是入接口,即組件處于被動狀態(tài),等待客戶的請求、然后做出相應(yīng)的反應(yīng)。這樣的結(jié)構(gòu)常常不能滿足實際的要求,組件對象也要主動的與客戶進(jìn)行通信,所以這就要求對象能夠提供出接口。如果一個COM對象支持一個或者多個出接口,我們就稱這樣的對象為可連接對象??蛇B接對象管理所有的出接口。對應(yīng)每一個出接口,可連接對象管理了一個稱為連接點(diǎn)的對象,客戶通過連接點(diǎn)對象建立接收器與可連接對象的連接。圖4-3就是連接點(diǎn)機(jī)制的具體描述:<

81、;/p><p>  圖4-3 連接點(diǎn)機(jī)制結(jié)構(gòu)描述</p><p>  如果客戶要使用連接點(diǎn),接收器對象中就必須實現(xiàn)IUnknown接口和服務(wù)器的輸出接口??蛻舫绦蜷_始運(yùn)行后,通過可連接對象接口查詢自己的接口指針,若OPC服務(wù)器提供了該接口的實現(xiàn),那么客戶就調(diào)用該接口的Advise方法,把在接收器中實現(xiàn)的IUnknown接口指針傳送給服務(wù)器。服務(wù)器接著獲得輸出接口的指針。所以服務(wù)器需要向客戶端發(fā)

82、送數(shù)據(jù)的時候就可以調(diào)用輸出接口的方法。</p><p>  4.5 OPC對象和接口</p><p>  OPC對象是OPC服務(wù)器程序與客戶程序進(jìn)行交互的部分,需要與數(shù)據(jù)存儲區(qū)和硬件驅(qū)動部分相聯(lián)系,以便獲取數(shù)據(jù)區(qū)中的數(shù)據(jù)或直接訪問硬件設(shè)備。實施步驟分為以下幾個部分:</p><p>  (1)繼承OPC規(guī)范中定義的OPCServer類OPCGroup類和OPCIte

83、m類,實現(xiàn)其接口成員函數(shù)。首先從OPC基金會定義的組對象接口派生出新的接口類并實現(xiàn)其成員函數(shù)的功能,然后增加指針成員變量指向這些接口類。最后在組對象的接口查詢函數(shù)中增加實例化接口類的代碼。OPC項表示了與數(shù)據(jù)源的連接,數(shù)據(jù)源可以是程序數(shù)據(jù)區(qū)中的數(shù)據(jù)項,也可以是某個硬件設(shè)備中的數(shù)據(jù)。OPC項沒有自己的接口,無需實現(xiàn)任何接口功能,只需增加相應(yīng)的功能函數(shù)(如根據(jù)OPC項的名稱與數(shù)據(jù)源進(jìn)行連接、讀/寫數(shù)據(jù)源等)。OPC客戶程序?qū)⑼ㄟ^OPC組對象

84、的接口函數(shù)來間接調(diào)用OPC項的這些成員函數(shù);</p><p> ?。?)定義OPC數(shù)據(jù)服務(wù)器的名稱和類標(biāo)識。由于服務(wù)器對象是一個由客戶程序調(diào)用的COM對象,因此需要定義一個類標(biāo)識。類標(biāo)識可用VC程序自動產(chǎn)生,這樣能夠保證生成的類標(biāo)識是唯一的。然后根據(jù)規(guī)范對各個接口ID進(jìn)行定義;</p><p>  (3)實現(xiàn)OPC數(shù)據(jù)服務(wù)器類廠對象。在COM規(guī)范中,客戶程序是通過類廠創(chuàng)建COM對象并返回其

85、接口指針的,因此需要為CMyServer類設(shè)計相應(yīng)的類廠。具體實現(xiàn)時先從IClassFactory基類派生出MyOPCClassFactory類,然后重載Create2Instance()成員函數(shù),通過該函數(shù)創(chuàng)建CMyServer服務(wù)器對象;</p><p> ?。?)將OPC對象設(shè)計的頭文件和實現(xiàn)文件添加到工程中。接著在應(yīng)用程序類的初始化函數(shù)中完成COM庫初始化、類廠注冊等功能。當(dāng)客戶程序建立連接時,通過類廠注

86、冊服務(wù)器程序并實例化一個服務(wù)器對象傳遞給客戶程序。</p><p>  5 OPC服務(wù)器的實驗測試</p><p>  (1)同步實例界面,實現(xiàn)了啟動、停止服務(wù)器,同步讀寫操作,并回復(fù)操作結(jié)果,如圖5-1所示。</p><p>  圖5-1 同步實例界面</p><p>  (2)服務(wù)器界面,主窗口是OPC服務(wù)器程序的起點(diǎn),主要完成OPC服務(wù)

87、器的初始化。主窗口是所有界面元素的組織容器,主要包含設(shè)備地址、設(shè)備樹形列表、標(biāo)簽列表。測試中成功將數(shù)據(jù)轉(zhuǎn)換為模擬量TAG_I0-TAG_I9,它們分別對應(yīng)了不同的數(shù)值但擁有相同的質(zhì)量如圖5-2所示。</p><p>  圖5-2 服務(wù)器界面</p><p> ?。?)設(shè)備屬性,可以設(shè)置具體到一臺設(shè)備的相關(guān)參數(shù),如IP地址、端口號、設(shè)備號、網(wǎng)關(guān)設(shè)備、超時時間、消息周期等等,如圖5-3所示。&

88、lt;/p><p><b>  圖5-3 設(shè)備屬性</b></p><p> ?。?)添加組,在圖5-4所示的指定的服務(wù)器里面添加分組并將其命名的操作。</p><p><b>  圖5-4 添加組</b></p><p> ?。?)標(biāo)簽屬性,在圖5-5所示設(shè)定指定標(biāo)簽的名稱、描述、地址、寄存器及數(shù)據(jù)類

89、型等相關(guān)操作。</p><p><b>  圖5-5 標(biāo)簽屬性</b></p><p><b>  結(jié)論</b></p><p>  本文所開發(fā)的OPC服務(wù)器,實現(xiàn)了與客戶端的連接,并且可以實現(xiàn)添加或者刪除組和項的操作,經(jīng)過測試基本擁有了OPC服務(wù)器作為工業(yè)通用數(shù)據(jù)訪問服務(wù)器的功能,實現(xiàn)了OPC規(guī)范中所規(guī)定的訪問機(jī)制和Mo

90、dbus/TCP標(biāo)準(zhǔn)規(guī)范中的功能。但測試中發(fā)現(xiàn)以下幾個問題:</p><p> ?。?)頻繁的啟動停止服務(wù)器時,偶爾出現(xiàn)不能打開的情況;</p><p> ?。?)在數(shù)據(jù)量過大時候轉(zhuǎn)換不出模擬量;</p><p> ?。?)時間戳部分偶爾出現(xiàn)時間錯誤。</p><p>  由于現(xiàn)場設(shè)備和本人水平有限,對于以上幾點(diǎn)缺陷沒有進(jìn)行有效的開發(fā),有待以

91、后的研究。通過本次畢業(yè)設(shè)計,我感到自己應(yīng)用基礎(chǔ)知識及專業(yè)知識解決問題的能力有了很大的提高,并且這次畢業(yè)設(shè)計的選題,是一個很實際的課題,因此,在我即將工作之前,它是一次重要演練。我想,通過這次畢業(yè)設(shè)計,到了工作單位后,我將能夠更快的適應(yīng)工作崗位和工作要求。我對自己充滿信心。</p><p><b>  參考文獻(xiàn)</b></p><p>  蔣近, 毛六平, 戴瑜興. 基

92、于Modbus協(xié)議的OPC服務(wù)器的YF發(fā)與研究[J]. 湖南工程學(xué)院學(xué)報, 2005, 6(1): 56-58.</p><p>  馬增良, 蘭斌. OPC 數(shù)據(jù)訪問服務(wù)器實現(xiàn)機(jī)制研究[J]. 計算機(jī)工程與應(yīng)用, 2003, 39(21): 65-67.</p><p>  李勤, 黨選舉, 向榮. 基于COM的OPC技術(shù)的研究和實現(xiàn)[J]. 微計算機(jī)信息, 2002, 22(16):

93、18-22.</p><p>  林躍. OPC數(shù)據(jù)服務(wù)器開發(fā)工具研究與實現(xiàn)[J]. 自動化儀表, 2001, 22(9): 7-13.</p><p>  郭紅曉, 莫德舉. OPC技術(shù)及其軟件的開發(fā)[J]. 北京化工大學(xué)學(xué)報(自然科學(xué)版), 2002, 29(3): 72- 73, 78.</p><p>  馮波, 陳子明, 王偉杰, 等. OPC技術(shù)及其在工

94、業(yè)過程控制中的作用[J]. 中山大學(xué)學(xué)報, 2002, 22(3): 169-171.</p><p>  殷衛(wèi)兵, 等. OPC數(shù)據(jù)服務(wù)器分析及程序開發(fā)[J]. 化工自動化及儀表, 2003, 30(5): 41-45.</p><p>  潘洪躍. 基于Modbus協(xié)議通信的設(shè)計與實現(xiàn)[J]. 計量技術(shù), 2002, 33(4): 35-36.</p><p>

95、  Vincent. Interface between OPC server and OPC application program [J]. Industrial automation, 2005, 14(7): 21-26.</p><p>  Martin. The role of OPC in industrial automation[J]. Intelligent control, 2001, 8(

96、7): 11-13.</p><p>  馬龍華, 段建民. OPC數(shù)據(jù)存取規(guī)范的研究和應(yīng)用[J]. 化工自動化及儀表, 2002, 29(1): 43-45.</p><p>  傅春霞, 段建民. OPC服務(wù)器的研究及在CAN總線系統(tǒng)中的實現(xiàn)[J]. 微計算機(jī)信息(測控自動化), 2003, 19(11): 8-10.</p><p>  張國忠, 等. 電力監(jiān)

97、控模塊OPC驅(qū)動程序的實現(xiàn)[J]. 武漢大學(xué)學(xué)報, 2002, 35(2) :54-58.</p><p>  附錄1 OPC組件的部分實現(xiàn)代碼</p><p>  //聲明工具包的函數(shù)</p><p>  extern HMODULE hLibrary;</p><p>  extern CREATESERVER CreateServer;

98、</p><p>  extern FREESERVER FreeServer;</p><p>  extern SETSERVERSTATE SetServerState;</p><p>  extern SETVERSIONINFO SetVersionInfo;</p><p>  extern ACTIVECODE ActiveC

99、ode;</p><p>  extern SHUTDOWN shutDown;</p><p>  extern REGSERVER RegServer;</p><p>  extern UNREGSERVER UnregServer;</p><p>  extern REGTAG RegTag;</p><p>

100、;  extern REGTAGEX RegTagEx;</p><p>  extern UNREGTAG UnregTag;</p><p>  extern SETTAGQUALIFIER SetTagQualifier;</p><p>  extern ADDTAGPROPERTY AddTagProperty;</p><p> 

101、 extern ADDTAGPROPERTYEX AddTagPropertyEx;</p><p>  extern SETTAGPROPERTY SetTagProperty;</p><p>  extern UPDATETAGWITHTIMESTAMP UpdateTagWithTimeStamp;</p><p>  extern UPDATETAG Up

102、dateTag;</p><p>  extern SETWRITECALLBACK SetWriteCallback;</p><p>  extern SETWRITECALLBACKEX SetWriteCallbackEx;</p><p>  extern SETREADCALLBACK SetReadCallback;</p><p&

103、gt;  extern SETREADCALLBACKEX SetReadCallbackEx;</p><p>  extern SETSERVERNOTIFY SetServerNotify;</p><p>  extern SETGROUPNOTIFY SetGroupNotify;</p><p>  extern SETITEMNOTIFY SetIte

104、mNotify;</p><p>  extern SETTAGNOTIFY SetTagNotify;</p><p>  extern SETLOGNOTIFY SetLogNotify;</p><p>  //讀寫回調(diào)函數(shù)類型的聲明</p><p>  extern void __stdcall ReadCallback(DWORD

105、handle,VARIANT* pNewValue,WORD* Quality, FILETIME* ft, DWORD* pDeviceError);</p><p>  extern void __stdcall WriteCallback(DWORD handle,VARIANT pNewValue,DWORD* pDeviceError);</p><p>  //初始化和反初始化

106、設(shè)置函數(shù)聲明</p><p>  extern BOOL InitOPCDef();</p><p>  extern BOOL FreeOPCDef();</p><p><b>  服務(wù)器通知函數(shù)聲明</b></p><p>  extern void __stdcall ServerNotify(DWORD han

107、dle, WORD wOperate);</p><p>  //對OPC服務(wù)器的描述進(jìn)行定義。</p><p> ?。╟onst LPCSTR OPCClsID ="{6E751971-72F1-439F-A6BE-0586D0F86860}";//定義類標(biāo)識</p><p>  const LPCSTR OPCProgID="OPC

108、.ASVCDEMO.1";//定義OPC服務(wù)器的名稱</p><p>  const LPCSTR OPCDescr =" Agilewill co.ltd";</p><p>  extern CWnd* m_WND;)</p><p>  在程序文件DASVR.cpp中,添加代碼定義如下函數(shù):讀寫回調(diào)函數(shù)</p>&l

109、t;p>  void __stdcall ReadCallback(DWORD handle,VARIANT* pNewValue,WORD* Quality, FILETIME* ft, DWORD* pDeviceError)</p><p><b>  {</b></p><p><b>  long I;</b></p>

110、<p>  *pDeviceError=-1;</p><p>  for(I=0;I<=TagCount;I++)</p><p><b>  {</b></p><p>  if(TagList[I].hHWND==handle)</p><p><b>  {</b><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論