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

下載本文檔

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

文檔簡介

1、<p>  本 科 生 畢 業(yè) 設 計</p><p><b>  (申請學士學位)</b></p><p>  論文題目基于Modbus通信協(xié)議的智能儀表OPC服務器的開發(fā)</p><p>  作者姓名 </p><p>  所學專業(yè)名稱 自

2、動 化 </p><p>  指導教師 </p><p>  2012年5月20日</p><p><b>  目 錄</b></p><p><b>  摘要1</b></p>

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

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

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

6、<p>  3.4.1 同步數(shù)據(jù)訪問8</p><p>  3.4.2 異步數(shù)據(jù)訪問9</p><p>  4 Modbus OPC數(shù)據(jù)訪問服務器的實現(xiàn)9</p><p>  4.1 OPC服務器要求分析9</p><p>  4.1.1 OPC服務器結構框架9</p><p>  4.1.2 OP

7、C服務器需要實現(xiàn)的功能11</p><p>  4.2 OPC服務器開發(fā)步驟12</p><p>  4.3 服務器組和項屬性實現(xiàn)12</p><p>  4.4 服務器與客戶端傳送機制13</p><p>  4.4.1 服務器與客戶端異步通報方式傳送機制13</p><p>  4.4.2 服務器與客戶端

8、連接點方式傳送機制14</p><p>  4.5 OPC對象和接口15</p><p>  5 OPC服務器的實驗測試15</p><p><b>  結論18</b></p><p><b>  參考文獻18</b></p><p>  附錄1 OPC組件的部分

9、實現(xiàn)代碼19</p><p>  附錄2 實驗設備及運行環(huán)境21</p><p><b>  致謝22</b></p><p>  基于Modbus通信協(xié)議的智能儀表OPC服務器的開發(fā)</p><p>  摘要: OPC(OLE for Process Control)是過程控制軟硬件與基于Windows平臺的應用

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

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

12、on the Modbus 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 communicatio

13、n channel, it 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, comm

14、unications standards, 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

15、in detail based 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 acce

16、ss, subscribe 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&

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

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

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

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

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

22、發(fā)中脫離出來。不管過程中采用什么軟件或設備,OPC為它們提供了公共的接口和以下多種訪問機制:(1)客戶端和服務器位于同一臺計算機上;(2)客戶端和服務器位于不同的計算機上;(3)單個客戶端和多個服務器通信;(4)多個客戶端和單個服務器通信;(5)多個客戶端和多個服務器通信[11]。</p><p>  國外OPC發(fā)展迅速,應用也很廣泛,眾多的廠家研發(fā)生產(chǎn)了種類眾多的OPC產(chǎn)品,OPC基金會從成立開始會員逐年增加,

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

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

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

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

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

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

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

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

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

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

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

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

35、gt;  輸出寄存器:由應用程序控制變化的可讀可寫型16位數(shù)據(jù),地址范圍40001-4FFFF。</p><p>  Modbus通信結構如圖2-1:</p><p>  圖2-1 Modbus通信結構圖</p><p>  2.3.3 Modbus兼容分類</p><p>  Modbus采用兼容分類來避免與已有的系統(tǒng)發(fā)生沖突,它定義了0級

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

37、加功能,這些功能被客戶端解釋為輸入輸出的開關量和模擬量。</p><p><b>  讀線圈(功能01)</b></p><p>  讀離散量輸入(功能02)</p><p>  讀輸入寄存器(功能04)</p><p><b>  寫線圈(功能05)</b></p><p>

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

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

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

41、一次全體大會上宣告成立。現(xiàn)在的OPC基金會的理事會是由Fisher-Rosement,Honeywell,Interllution,Rockwell,Software,National Instrument以及歐洲代表的Siemens和遠東代表的東芝組成的。在日本為響應以美國中心的標準活動,于1996年6月開始基金會成立的準備,于1996年10月17日正式成立了日本的OPC基金會。與此同時歐洲也成立了自己的OPC基金會。中國也由5家公司

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

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

44、<p> ?。?)OPC數(shù)據(jù)交換規(guī)范即服務器間數(shù)據(jù)交換的標準;</p><p> ?。?)OPC_XML規(guī)范即過程數(shù)據(jù)的XML標準。</p><p><b>  3.3 COM技術</b></p><p>  COM是微軟公司倡導的一個制定軟件的方法,在COM的構架下可以開發(fā)出各式各樣的功能專一的組件,然后按照需要將他們結合起來,構成

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

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

47、一個COM對象可以擁有多個COM接口。</p><p>  COM支持的是面向對象的組件模型,COM組件提供給客戶端的是以對象形式封閉起來的實體??蛻舳撕虲OM組件程序交換數(shù)據(jù)的實體是COM對象,它無需在乎組件模塊的名稱和位置,但要知道和自己交互的COM對象是哪個,客戶程序通過一個COM對象的全局標識符來創(chuàng)建和初始化對象,并不直接訪問COM組件。</p><p>  COM接口都是從IUn

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

49、存結構:</p><p>  圖3-1 COM接口二進制內(nèi)存結構</p><p>  COM規(guī)范用128位全局唯一標識符GUID來標識COM對象和COM接口,標識的COM對象為CLSID,標識的COM接口為IID??蛻舫绦蛲ㄟ^指定的CLSID進行對象的創(chuàng)建和初始化工作,客戶程序要使用COM對象的接口,它必須知道該接口的IID和接口成員函數(shù)。</p><p>  3.

50、4 OPC服務器數(shù)據(jù)訪問方式</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服務器按照OPC客戶端的要求把得到的數(shù)據(jù)訪問結果作為方法參數(shù)返還給OPC客戶端,

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

52、數(shù)據(jù)緩沖區(qū)讀取數(shù)據(jù)時受組和項狀態(tài)的影響,Write同步寫操作是直接向設備寫數(shù)據(jù)。</p><p>  3.4.2 異步數(shù)據(jù)訪問</p><p>  圖3-3 異步數(shù)據(jù)訪問過程</p><p>  異步數(shù)據(jù)訪問過程如圖3-3所示,OPC服務器接收到OPC客戶端要求后,檢查了參數(shù)中的項的服務器句柄是否有效,然后將方法返回,OPC應用程序進行處理。當OPC服務器完成數(shù)據(jù)訪

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

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

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

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

57、擬變量變換和數(shù)據(jù)點在線監(jiān)視五個模塊。</p><p>  圖4-2 管理模塊結構</p><p>  通道定義模塊是與遠程Modbus服務器的連接屬性的設置。通道由IP地址、IP端口和連接超時值組成。對于每一個IP地址、IP端口必須定義唯一一個通道,這樣連接到網(wǎng)絡上的設備就可以利用這些信息連接到確定的唯一的OPC服務器的物理設備。</p><p>  Modbus從

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

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

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

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

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

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

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

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

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

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

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

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

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

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

72、程中的關鍵技術,下面對這兩種數(shù)據(jù)傳遞方式分別進行討論。</p><p>  4.4.1 服務器與客戶端異步通報方式傳送機制</p><p>  通過異步通報方式傳送數(shù)據(jù)時,客戶端需要實現(xiàn)IAdviseSink接口,服務器端需要實現(xiàn)IDataObject接口。IAdviseSink接口和IDataObject接口都由COM庫定義。</p><p>  IAdviseS

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

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

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

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

77、oup對象中保存客戶的IAdviseSink對象和數(shù)據(jù)格式;</p><p> ?。?)客戶調用服務器IOPCASyncIO發(fā)出讀/寫操作,服務器給相應組和項做異步讀/寫標記;</p><p> ?。?)服務器向通道發(fā)送命令,等待命令返回;</p><p> ?。?)服務器接收通道的讀/寫結果,給與通道對應的OPC項置讀/寫完成標記;</p><

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

79、t;p>  一般情況下,服務器組件提供的接口都是入接口,即組件處于被動狀態(tài),等待客戶的請求、然后做出相應的反應。這樣的結構常常不能滿足實際的要求,組件對象也要主動的與客戶進行通信,所以這就要求對象能夠提供出接口。如果一個COM對象支持一個或者多個出接口,我們就稱這樣的對象為可連接對象??蛇B接對象管理所有的出接口。對應每一個出接口,可連接對象管理了一個稱為連接點的對象,客戶通過連接點對象建立接收器與可連接對象的連接。圖4-3就是連接

80、點機制的具體描述:</p><p>  圖4-3 連接點機制結構描述</p><p>  如果客戶要使用連接點,接收器對象中就必須實現(xiàn)IUnknown接口和服務器的輸出接口。客戶程序開始運行后,通過可連接對象接口查詢自己的接口指針,若OPC服務器提供了該接口的實現(xiàn),那么客戶就調用該接口的Advise方法,把在接收器中實現(xiàn)的IUnknown接口指針傳送給服務器。服務器接著獲得輸出接口的指針。

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

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

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

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

85、序建立連接時,通過類廠注冊服務器程序并實例化一個服務器對象傳遞給客戶程序。</p><p>  5 OPC服務器的實驗測試</p><p>  (1)同步實例界面,實現(xiàn)了啟動、停止服務器,同步讀寫操作,并回復操作結果,如圖5-1所示。</p><p>  圖5-1 同步實例界面</p><p> ?。?)服務器界面,主窗口是OPC服務器程序的

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

87、等等,如圖5-3所示。</p><p><b>  圖5-3 設備屬性</b></p><p> ?。?)添加組,在圖5-4所示的指定的服務器里面添加分組并將其命名的操作。</p><p><b>  圖5-4 添加組</b></p><p> ?。?)標簽屬性,在圖5-5所示設定指定標簽的名稱、描

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

89、中所規(guī)定的訪問機制和Modbus/TCP標準規(guī)范中的功能。但測試中發(fā)現(xiàn)以下幾個問題:</p><p>  (1)頻繁的啟動停止服務器時,偶爾出現(xiàn)不能打開的情況;</p><p>  (2)在數(shù)據(jù)量過大時候轉換不出模擬量;</p><p>  (3)時間戳部分偶爾出現(xiàn)時間錯誤。</p><p>  由于現(xiàn)場設備和本人水平有限,對于以上幾點缺陷沒

90、有進行有效的開發(fā),有待以后的研究。通過本次畢業(yè)設計,我感到自己應用基礎知識及專業(yè)知識解決問題的能力有了很大的提高,并且這次畢業(yè)設計的選題,是一個很實際的課題,因此,在我即將工作之前,它是一次重要演練。我想,通過這次畢業(yè)設計,到了工作單位后,我將能夠更快的適應工作崗位和工作要求。我對自己充滿信心。</p><p><b>  參考文獻</b></p><p>  蔣近,

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

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

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

94、;<p>  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 contr

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

96、 張國忠, 等. 電力監(jiān)控模塊OPC驅動程序的實現(xiàn)[J]. 武漢大學學報, 2002, 35(2) :54-58.</p><p>  附錄1 OPC組件的部分實現(xiàn)代碼</p><p>  //聲明工具包的函數(shù)</p><p>  extern HMODULE hLibrary;</p><p>  extern CREATESERVER C

97、reateServer;</p><p>  extern FREESERVER FreeServer;</p><p>  extern SETSERVERSTATE SetServerState;</p><p>  extern SETVERSIONINFO SetVersionInfo;</p><p>  extern ACTIVE

98、CODE ActiveCode;</p><p>  extern SHUTDOWN shutDown;</p><p>  extern REGSERVER RegServer;</p><p>  extern UNREGSERVER UnregServer;</p><p>  extern REGTAG RegTag;</p&g

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

100、<p>  extern ADDTAGPROPERTYEX AddTagPropertyEx;</p><p>  extern SETTAGPROPERTY SetTagProperty;</p><p>  extern UPDATETAGWITHTIMESTAMP UpdateTagWithTimeStamp;</p><p>  extern

101、UPDATETAG UpdateTag;</p><p>  extern SETWRITECALLBACK SetWriteCallback;</p><p>  extern SETWRITECALLBACKEX SetWriteCallbackEx;</p><p>  extern SETREADCALLBACK SetReadCallback;</p

102、><p>  extern SETREADCALLBACKEX SetReadCallbackEx;</p><p>  extern SETSERVERNOTIFY SetServerNotify;</p><p>  extern SETGROUPNOTIFY SetGroupNotify;</p><p>  extern SETITEMN

103、OTIFY SetItemNotify;</p><p>  extern SETTAGNOTIFY SetTagNotify;</p><p>  extern SETLOGNOTIFY SetLogNotify;</p><p>  //讀寫回調函數(shù)類型的聲明</p><p>  extern void __stdcall ReadCal

104、lback(DWORD handle,VARIANT* pNewValue,WORD* Quality, FILETIME* ft, DWORD* pDeviceError);</p><p>  extern void __stdcall WriteCallback(DWORD handle,VARIANT pNewValue,DWORD* pDeviceError);</p><p>

105、  //初始化和反初始化設置函數(shù)聲明</p><p>  extern BOOL InitOPCDef();</p><p>  extern BOOL FreeOPCDef();</p><p><b>  服務器通知函數(shù)聲明</b></p><p>  extern void __stdcall ServerNoti

106、fy(DWORD handle, WORD wOperate);</p><p>  //對OPC服務器的描述進行定義。</p><p>  (const LPCSTR OPCClsID ="{6E751971-72F1-439F-A6BE-0586D0F86860}";//定義類標識</p><p>  const LPCSTR OPCProg

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

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

109、t;</p><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>  {&

110、lt;/b></p><p>  *pNewValue= TagList[I].vValue;</p><p>  *Quality= TagList[I].lQuality;</p><p>  *ft=TagList[I].ft;</p><p>  *pDeviceError=0;</p><p><

溫馨提示

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

評論

0/150

提交評論