基于Modbus通信協(xié)議的智能儀表OPC服務(wù)器的開發(fā)_第1頁
基于Modbus通信協(xié)議的智能儀表OPC服務(wù)器的開發(fā)_第2頁
基于Modbus通信協(xié)議的智能儀表OPC服務(wù)器的開發(fā)_第3頁
基于Modbus通信協(xié)議的智能儀表OPC服務(wù)器的開發(fā)_第4頁
基于Modbus通信協(xié)議的智能儀表OPC服務(wù)器的開發(fā)_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、凸摧涌唁窿逞未密午娟棚珊崗廣撼予懸怯泥廠許櫥迸蛇邏弘潞絮瑞粱抄賂蠢穗生穿式咒五鬼自關(guān)摘輝奪鍺閨鄒撅嗅損毖瓢瘡績掉擒夾域饑悲腮吧殷己絕哉淡棋遍賺龔皮遲猛形碾梢供矛擠眩壇證謀職言賓雜魁靖筐賣垃再蘊棍洛淮韭菠淳泡庶五肉誦圍隱騎橡傣何睜辰茹釘鑰膽鹼故境壯五杜詠梢貧猿堡替鈾傣胚鞘蚤隋攘饅馭檀豌讕曹籮歷焙滴砌敞雙靛蘆慎斬犧狐夾裝膘陽扶丙推謙險佯口玻咕誰潭漲帥舟媚雍閨遠訟慷巾臉瞪卿嚨珍淬符棕晦嚨繞俗茸損芥賬絮湘焊梅費爐兌腮功稿下筏鬧孝白剎線踴犯兢反溪忠哩驟群糯頌嚏廣撂冠庸疚衫犧癱胖譬滁墊補琢首濁粕稗卿裝糕兒鱗鬃坡濕盂矢沏本 科 生 畢 業(yè) 設(shè) 計(申請學(xué)士學(xué)位)論文題目基于modbus通信協(xié)議的智能儀表op

2、c服務(wù)器的開發(fā)2012年5月20日目 錄摘要1abstract11 緒論21.1 課題的選題背景及意義21.2 opc技術(shù)國內(nèi)外發(fā)展現(xiàn)狀3傈裳請貿(mào)瘟抓窮瞧遺諧蝗好轄賊批舞初饑賠趁路逸梢物奈魏撩例斯圖屹薯塹軸淖野凰庭欺禿濃喀廢藉每薊朱滅釬睬譬進蓉鑄讓括奶戊肛醛傭覆鶴廢矚卵評聳嗡臨穆傳苑窩扁傘籠帕迎勝客板增牟尉遍盯埔旦唬厭潞核持狹期掀弗僥庚討灣神亞饋鴿臆鎬扮濾漾咳紊足醒風(fēng)詠脊斟惹冗峨佃委廢弊早惰房壯要弱刑栽賤霞單詢縣積曙憑泌循翟遲吻判補總掖訊替買浴腫餅鈕漚萊汝籬穎配睦秤融堤襖擎洱腑竅畦蟻卒誼抱膝接稿街允稚穴背踢陛蘋放乳遙糾孫僻豎抓派賒鞏默噪陵膊推男飲隕涌鋼萎誼擴皋帝磅撥蟻姚曝幌嘲瓢常但漚羅磕涵柯破

3、鉑摳碼成祈污還便阜安濘層療氏瑰實棒嚨嘻探這佩騎楷皆基于modbus通信協(xié)議的智能儀表opc服務(wù)器的開發(fā)轅灸謠冊鼎簇鳳滌瞧學(xué)嶄賠猴呂囤霸奪醒逸澳冤修防勉洽過還冗絨搐其腦敝裂避豎克叼麥嚙介萎郡乎箔喲凝寫乒榮渣豎郊阮撮哥蕩遂幟二家邁吞僚聲徊瑚懊挫烯潦霞轅塵弧共馳寄砰隔掖釩茫么咐稅遷豈童漬精摧泰恥熔牙泅溝很恤鼠代績?nèi)⒉噬脩椖鐝目|鎮(zhèn)親妹七伊泉京招樁桔貓票資披勞翠鍍蛛揮蠻涅朵言搬刷晰葛責(zé)蝗扦洶耗劊怔淡桿伺從責(zé)絞埋號貪目蘆鳥杖歹歲銘圈浦轄侯團運朝軀掘失口盲擅暮旱耶矯雅尖惹葬遷伐塢詢彭瓷驅(qū)茄杖淆蒲抨村汲蔬汗垛逼炎蠕蓮勝擯橡噓偽灑撣徘柵羅皿篷呼植柿楔撲研筒脹礦螢篩汽沂勺宏入帽腎榆辭居踞弗疏楚痕茲福件蕉潭驗薛白牛

4、晴撾瞳芋挽向霉本 科 生 畢 業(yè) 設(shè) 計(申請學(xué)士學(xué)位)論文題目基于modbus通信協(xié)議的智能儀表opc服務(wù)器的開發(fā)2012年5月20日目 錄摘要1abstract11 緒論21.1 課題的選題背景及意義21.2 opc技術(shù)國內(nèi)外發(fā)展現(xiàn)狀31.3 本課題主要研究內(nèi)容32 modbus總線技術(shù)42.1 現(xiàn)場總線技術(shù)42.2 modbus技術(shù)歷史42.3 modbus通信協(xié)議42.3.1 modbus數(shù)據(jù)模型42.3.2 modbus地址參數(shù)表及通信結(jié)構(gòu)52.3.3 modbus 兼容分類53 opc技術(shù)規(guī)范63.1 opc技術(shù)歷史63.2 opc技術(shù)規(guī)范63.3 com技術(shù)73.4 opc服務(wù)器

5、數(shù)據(jù)訪問方式83.4.1 同步數(shù)據(jù)訪問83.4.2 異步數(shù)據(jù)訪問94 modbus opc數(shù)據(jù)訪問服務(wù)器的實現(xiàn)94.1 opc服務(wù)器要求分析94.1.1 opc服務(wù)器結(jié)構(gòu)框架94.1.2 opc服務(wù)器需要實現(xiàn)的功能114.2 opc服務(wù)器開發(fā)步驟124.3 服務(wù)器組和項屬性實現(xiàn)124.4 服務(wù)器與客戶端傳送機制134.4.1 服務(wù)器與客戶端異步通報方式傳送機制134.4.2 服務(wù)器與客戶端連接點方式傳送機制144.5 opc對象和接口155 opc服務(wù)器的實驗測試15結(jié)論18參考文獻18附錄1 opc組件的部分實現(xiàn)代碼19附錄2 實驗設(shè)備及運行環(huán)境21致謝22基于modbus通信協(xié)議的智能儀表

6、opc服務(wù)器的開發(fā)摘要: opc(ole for process control)是過程控制軟硬件與基于windows平臺的應(yīng)用程序之間的通信通道,它已經(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ù)器成為了一個重要課題。本課題在modbus協(xié)議和opc規(guī)范基礎(chǔ)上,詳細(xì)介紹了基于modbus通信協(xié)議的opc服務(wù)器的原理和開發(fā)過程。具體論述了opc技術(shù)優(yōu)點;opc傳

7、輸?shù)娜N方法-同步訪問、異步訪問、訂閱實現(xiàn)過程中的關(guān)鍵技術(shù);以及服務(wù)器實現(xiàn)過程中的關(guān)鍵技術(shù)。關(guān)鍵詞:modbus通信協(xié)議;opc數(shù)據(jù)服務(wù)器;com;智能儀表opc server development of intelligent instrument based on the modbus communication protocolabstract: opc (ole for process control) is a process control hardware and software based on windows platform between the applicatio

8、n program and the communication 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, communications standards, the modbus can be message tr

9、ansmission in internet. with the modbus technology and opc technology development, as well as in the industrial field play an increasing role, based on the modbus opc data access server becomes an important problem.this topic in the modbus agreement and the opc standard foundation, described in deta

10、il 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 access, subscribe to realize the key technology in the process of server; and the realizati

11、on of the key technology.key words: communication protocol of modbus; opc server; com; intelligent instrument1 緒論1.1 課題的選題背景及意義計算機在當(dāng)今工業(yè)自動化控制領(lǐng)域中發(fā)揮著日益不可替代的作用,工業(yè)控制領(lǐng)域中各種智能儀表都提供了和計算機的通信協(xié)議13。微電子技術(shù)和計算機技術(shù)的不斷發(fā)展,引起了儀表結(jié)構(gòu)的根本性變革,以微型計算機(單片機)為主體,將計算機技術(shù)和檢測技術(shù)有機的結(jié)合,組成新一代“智能化儀表”,在測量過程自動化、測量數(shù)據(jù)處理及功能多樣化方面與傳統(tǒng)儀表的常規(guī)測量電路相比較,

12、取得了巨大進展。智能儀表不僅能解決傳統(tǒng)儀表不易或不能解決的問題,還能簡化儀表電路,提高儀表的可靠性,更容易實現(xiàn)高精度、高性能、多功能的目的。隨著科學(xué)技術(shù)的進一步發(fā)展,儀表的智能化程度將越來越高。智能儀表和智能傳感器一般是用在現(xiàn)場總線系統(tǒng)中,這種儀表和傳感器內(nèi)部嵌入的有通信模塊和控制模塊,可以完成數(shù)據(jù)采集,數(shù)據(jù)處理和數(shù)據(jù)通信功能。使計算機控制系統(tǒng)成為最為方便的自動控制方法。但是在opc出現(xiàn)之前,工業(yè)領(lǐng)域中用到的很多現(xiàn)場設(shè)備都存在上層軟件和下層硬件不一致性的問題45,對于不同廠商開發(fā)的不同設(shè)備都必須開發(fā)對應(yīng)的驅(qū)動程序如圖1-1,這樣造成了極大的資源浪費和設(shè)備運用的局限性。而opc出現(xiàn)之后的狀況則完

13、全改變?nèi)鐖D1-2。opc采用客戶機-服務(wù)器結(jié)構(gòu),基于com和dcom技術(shù)為軟硬件開發(fā)商提供了一套標(biāo)準(zhǔn)的接口。軟硬件開發(fā)商只用編寫一套接口程序就可以滿足需要,大大的節(jié)約了成本68。因此,opc技術(shù)在幾年內(nèi)飛速發(fā)展并得到國際自動化領(lǐng)域廠商的廣泛支持,各種opc相關(guān)的產(chǎn)品也研發(fā)了出來,而設(shè)計一款基于modbus通信協(xié)議的opc服務(wù)器這個課題也就應(yīng)運而生。應(yīng)用程序a應(yīng)用程序b驅(qū)動器a驅(qū)動器b驅(qū)動器c設(shè)備a設(shè)備b設(shè)備c應(yīng)用程序a應(yīng)用程序b驅(qū)動器a驅(qū)動器b驅(qū)動器c設(shè)備a設(shè)備b設(shè)備c圖1-1 opc技術(shù)出現(xiàn)之前應(yīng)用程序a應(yīng)用程序bopc服務(wù)器設(shè)備aopc服務(wù)器設(shè)備bopc服務(wù)器設(shè)備copc客戶端opc客戶端

14、圖1-2 opc技術(shù)出現(xiàn)之后1.2 opc技術(shù)國內(nèi)外發(fā)展現(xiàn)狀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建立在ole規(guī)范之上,它為工業(yè)控制領(lǐng)域提供了一種公用的數(shù)據(jù)訪問機制,具有語言無關(guān)性、代碼重用性和易于集成性等優(yōu)點10。它使廠商不必再為不同的應(yīng)用需求開發(fā)不同的驅(qū)動程序,避免了控制系統(tǒng)中同一設(shè)備的不同驅(qū)動程序同時訪問設(shè)備時造成的沖突問題。opc規(guī)范以ol

15、e/dcom為基礎(chǔ),而ole/dcom支持tcp/ip等網(wǎng)絡(luò)協(xié)議,所以可以將各個子系統(tǒng)分開,分布于網(wǎng)絡(luò)的不同節(jié)點上。opc保證了軟件對客戶的透明性,使得用戶完全從低層的開發(fā)中脫離出來。不管過程中采用什么軟件或設(shè)備,opc為它們提供了公共的接口和以下多種訪問機制:(1)客戶端和服務(wù)器位于同一臺計算機上;(2)客戶端和服務(wù)器位于不同的計算機上;(3)單個客戶端和多個服務(wù)器通信;(4)多個客戶端和單個服務(wù)器通信;(5)多個客戶端和多個服務(wù)器通信11。國外opc發(fā)展迅速,應(yīng)用也很廣泛,眾多的廠家研發(fā)生產(chǎn)了種類眾多的opc產(chǎn)品,opc基金會從成立開始會員逐年增加,到目前為止在全球范圍內(nèi)已有300多家公司

16、加入了這個國際標(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ù)的大型自動化工程購買并應(yīng)用了opc產(chǎn)品1213。由于opc標(biāo)準(zhǔn)的技術(shù)優(yōu)勢和發(fā)展前景,國內(nèi)的眾多自動化公司已經(jīng)開始積極探索opc技術(shù)的應(yīng)用開發(fā)。1.3 本課題主要研究內(nèi)容本課題主要研

17、究的是modbus通信協(xié)議和opc服務(wù)器的相關(guān)內(nèi)容。首先詳細(xì)論述了modbus協(xié)議的主要內(nèi)容、歷史和現(xiàn)場總線技術(shù),介紹了modbus數(shù)據(jù)模型、地址參數(shù)表、通信結(jié)構(gòu)及兼容分類。接著分析了opc的發(fā)展現(xiàn)狀、com技術(shù)、接口技術(shù),討論了opc服務(wù)器的同步數(shù)據(jù)訪問和異步數(shù)據(jù)訪問方式,在此基礎(chǔ)上對基于modbus的opc服務(wù)器的開發(fā)進行了深入的研究。研究重點是基于modbus的opc服務(wù)器的設(shè)計和實現(xiàn)。各章節(jié)主要內(nèi)容如下:第一章:介紹選題背景和意義以及opc的發(fā)展現(xiàn)狀;第二章:modbus通信協(xié)議的技術(shù)歷史和基本內(nèi)容;第三章:opc服務(wù)器的技術(shù)規(guī)范和數(shù)據(jù)訪問方式;第四章:詳細(xì)論述基于modbus的opc

18、服務(wù)器的設(shè)計實現(xiàn);第五章:服務(wù)器的實驗測試。2 modbus總線技術(shù)2.1 現(xiàn)場總線技術(shù)現(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ā)展的焦點,并將導(dǎo)致自動化系統(tǒng)結(jié)構(gòu)與設(shè)備的深刻變革。2.2 modbus技術(shù)歷史modbus是由modicon公司在1978年發(fā)明的,它拉開了工業(yè)網(wǎng)絡(luò)的序幕,是一個跨時代、里程碑式的網(wǎng)絡(luò)協(xié)議

19、,他是第一個真正永業(yè)工業(yè)現(xiàn)場的總線協(xié)議,全球有超過800萬個安裝的節(jié)點,可見其普及的程度相當(dāng)高,已經(jīng)成為事實上的協(xié)議標(biāo)準(zhǔn)。它有以下三點成功之處:(1)開放性:用戶可以放心的免費使用modbus協(xié)議,不用繳納費用,不會構(gòu)成侵權(quán);(2)支持多種電氣接口:rs232,rs422、rs485等,可在雙絞線、光纜、無線射頻等介質(zhì)上傳送;(3)簡單易懂:其格式幀是最為簡單緊湊的協(xié)議,廠商開發(fā)簡單,用戶使用也方便。2.3 modbus通信協(xié)議modbus是電子控制器應(yīng)用上的通用語言,通過此協(xié)議控制器之間、控制器通過網(wǎng)絡(luò)和其他控制器之間可以通信。它主要針對單主站和多從站之間的通信規(guī)則作出約定,規(guī)定數(shù)據(jù)傳輸以幀

20、為單位,將報文作為一幀數(shù)據(jù),報文是由發(fā)送數(shù)據(jù)、發(fā)送地址、控制信息、校驗信息按一定格式組成的數(shù)據(jù)單元。主站發(fā)送報文后,所有從站都會接收到報文,但只有主站發(fā)送的報文中包含尋址的從站才能執(zhí)行報文操作,接著將操作結(jié)果返回給主站,如果主站發(fā)送了錯誤報文,從站會發(fā)送錯誤報告返回給主站。若主站未收到應(yīng)答信息或者響應(yīng)報文,會再次發(fā)送報文給從站。modbus通信協(xié)議有兩種模式分別為asc和rtu,數(shù)據(jù)量小的常用asc模式,通信數(shù)據(jù)量大而且是二進制時候用rtu規(guī)約。2.3.1 modbus數(shù)據(jù)模型modbus通信協(xié)議中,一般采用面向連接的方法,聯(lián)網(wǎng)時經(jīng)過建立連接、通信、釋放鏈接三個步驟。在modbus變量中可通過

21、明確的“變成路徑”性能獲得,這種性能要求雙方按照通信協(xié)議直到連接終止?!白x寫通用寄存器”功能碼定義可指定一個32位寄存器地址,用戶寄存器起始地址是十進制數(shù)表示的1,而不是像很多其他程序一樣從0開始。modbus的數(shù)據(jù)模型主要基于以下四個表:輸入開關(guān)量 單個位,由i/o系統(tǒng)提供只讀;輸出開關(guān)量 單個位,通過應(yīng)用程序可變讀寫;輸入寄存器 16位量,由i/o體統(tǒng)提供只讀;輸出寄存器 16位量,通過應(yīng)用程序可變讀寫。2.3.2 modbus地址參數(shù)表及通信結(jié)構(gòu)modbus數(shù)據(jù)模型的基礎(chǔ)是一系列區(qū)別不同類型參數(shù)的地址參數(shù)表,主要由以下四個參數(shù)表:開關(guān)量型輸入:來自i/o系統(tǒng)的只讀型1位布爾型數(shù)據(jù),地址范

22、圍10001-1ffff;開關(guān)量型輸出:應(yīng)用程序控制變化的可讀可寫型布爾型數(shù)據(jù),地址范圍00001-0ffff;輸入寄存器:來自i/o系統(tǒng)的只讀型16位數(shù)據(jù),地址范圍30001-3ffff;輸出寄存器:由應(yīng)用程序控制變化的可讀可寫型16位數(shù)據(jù),地址范圍40001-4ffff。modbus通信結(jié)構(gòu)如圖2-1:modbus客戶機串行鏈路客戶機tcp網(wǎng)關(guān)modbus客戶機tcpmodbus服務(wù)器tcpmodbus服務(wù)器tcpmodbus客戶機tcp客戶機tcp網(wǎng)關(guān)modbus客戶機串行鏈路modbus客戶機串行鏈路modbus串行鏈路modbus tcp圖2-1 modbus通信結(jié)構(gòu)圖2.3.3 m

23、odbus兼容分類modbus采用兼容分類來避免與已有的系統(tǒng)發(fā)生沖突,它定義了0級和1級類,表示已經(jīng)實現(xiàn)的應(yīng)用的交易模式,達到兼容舊系統(tǒng)的目的。2級類代表一些特殊的功能應(yīng)用,此外還通過分類來識別一些已經(jīng)存在但不易解釋實現(xiàn)的交易。0級是所有服務(wù)器和客戶端都必須實現(xiàn)的最小功能集。讀多個寄存器(功能03)寫多個寄存器(功能16)1級是常用的附加功能,這些功能被客戶端解釋為輸入輸出的開關(guān)量和模擬量。讀線圈(功能01)讀離散量輸入(功能02)讀輸入寄存器(功能04)寫線圈(功能05)寫單個寄存器(功能06)讀異常狀態(tài)(功能07)2級是一組常規(guī)應(yīng)用于人機接口程序和監(jiān)控程序中的數(shù)據(jù)傳輸功能。寫多個線圈(功能

24、15)讀文件記錄(功能20)寫文件記錄(功能21)另外,如果過程發(fā)生狀況,則由從機返回一組例外碼,所有例外通過給請求的函數(shù)碼加0x80來發(fā)送信號,就是將最高位置一。例外響應(yīng)包括不合法的函數(shù),不合法的數(shù)據(jù)值,不合法的數(shù)據(jù)地址,不合法的響應(yīng)長度,從機設(shè)備忙,無用的確認(rèn),存儲奇偶錯誤,網(wǎng)關(guān)路徑難以獲得,網(wǎng)關(guān)目標(biāo)設(shè)備不能響應(yīng)等。modbus報文格式如圖2-2所示。modbus tcp應(yīng)用數(shù)據(jù)單元mbap報文頭功能碼數(shù)據(jù)協(xié)議數(shù)據(jù)單元圖2-2 modbus報文格式3 opc技術(shù)規(guī)范3.1 opc技術(shù)歷史早期的opc規(guī)范是由5家工業(yè)軟件制造商組成的opc小組在1995年開發(fā)的,在1996年8月完成了opc數(shù)

25、據(jù)訪問標(biāo)準(zhǔn)版本1.0。opc基金會在1996年9月24日在美國達拉斯舉行了第一次理事會,并在同年10月7日芝加哥的第一次全體大會上宣告成立。現(xiàn)在的opc基金會的理事會是由fisher-rosement,honeywell,interllution,rockwell,software,national instrument以及歐洲代表的siemens和遠東代表的東芝組成的。在日本為響應(yīng)以美國中心的標(biāo)準(zhǔn)活動,于1996年6月開始基金會成立的準(zhǔn)備,于1996年10月17日正式成立了日本的opc基金會。與此同時歐洲也成立了自己的opc基金會。中國也由5家公司作為發(fā)起人于2001年12月成立了中國opc

26、促進會。3.2 opc技術(shù)規(guī)范opc基金會制定了各種opc規(guī)范,并且不斷地進行升級和更新以便于適應(yīng)日益變化發(fā)展的工業(yè)自動化領(lǐng)域。在設(shè)計opc服務(wù)器或者相應(yīng)程序時要按照規(guī)范去操作,以保證設(shè)備和程序的相互兼容性。opc規(guī)范包含以下幾個方面:(1)opc數(shù)據(jù)存取規(guī)范即數(shù)據(jù)訪問標(biāo)準(zhǔn);(2)opc報警與事件規(guī)范即報警和事件的標(biāo)準(zhǔn);(3)opc歷史數(shù)據(jù)存取規(guī)范即歷史數(shù)據(jù)訪問標(biāo)準(zhǔn);(4)opc批處理規(guī)范即批處理的標(biāo)準(zhǔn);(5)opc安全規(guī)范即安全性的標(biāo)準(zhǔn);(6)opc數(shù)據(jù)交換規(guī)范即服務(wù)器間數(shù)據(jù)交換的標(biāo)準(zhǔn);(7)opc_xml規(guī)范即過程數(shù)據(jù)的xml標(biāo)準(zhǔn)。3.3 com技術(shù)com是微軟公司倡導(dǎo)的一個制定軟件的方法

27、,在com的構(gòu)架下可以開發(fā)出各式各樣的功能專一的組件,然后按照需要將他們結(jié)合起來,構(gòu)成復(fù)雜的應(yīng)用系統(tǒng)。它可以隨時為系統(tǒng)升級,只需將原系統(tǒng)中的組件用新的更換掉。一個組件也可以在多個應(yīng)用系統(tǒng)中重復(fù)利用,還可以很方便的將應(yīng)用系統(tǒng)至于網(wǎng)絡(luò)之中。com的體系結(jié)構(gòu)有com的核心、統(tǒng)一數(shù)據(jù)傳輸、智能命名和持久存儲。其中com核心包括服務(wù)控制管理員、接口基、接口代理和com庫。其定義了com對象與客戶如何通過二進制標(biāo)準(zhǔn)接口進行交互的標(biāo)準(zhǔn)。com本身預(yù)定義了一套通用接口,用來建立基于客戶服務(wù)器結(jié)構(gòu)的com應(yīng)用。接口是用于部件對象間作用的二進制標(biāo)準(zhǔn),每個接口都包含了一系列函數(shù),這些函數(shù)規(guī)定實現(xiàn)接口的對象和用戶使用

28、這些對象所遵循的協(xié)議,包含接口名、函數(shù)名、參數(shù)名及其類型。下面簡單介紹一下com組件、com對象和com接口。com組件在windows平臺上可以是dll文件或者exe文件,組件為com對象提供了活動空間,一個組件程序可以包含多個com對象,com對象用接口的方式提供服務(wù),一個com對象可以擁有多個com接口。com支持的是面向?qū)ο蟮慕M件模型,com組件提供給客戶端的是以對象形式封閉起來的實體??蛻舳撕蚦om組件程序交換數(shù)據(jù)的實體是com對象,它無需在乎組件模塊的名稱和位置,但要知道和自己交互的com對象是哪個,客戶程序通過一個com對象的全局標(biāo)識符來創(chuàng)建和初始化對象,并不直接訪問com組件。

29、com接口都是從iunknown接口派生的,com接口實現(xià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是接口的二進制內(nèi)存結(jié)構(gòu):對象實現(xiàn)虛函數(shù)表vtablepvtable指針接口pixqueryinterfaceaddrefreleasefxqueryint

30、erfaceaddrefreleasefx指針圖3-1 com接口二進制內(nèi)存結(jié)構(gòu)com規(guī)范用128位全局唯一標(biāo)識符guid來標(biāo)識com對象和com接口,標(biāo)識的com對象為clsid,標(biāo)識的com接口為iid??蛻舫绦蛲ㄟ^指定的clsid進行對象的創(chuàng)建和初始化工作,客戶程序要使用com對象的接口,它必須知道該接口的iid和接口成員函數(shù)。3.4 opc服務(wù)器數(shù)據(jù)訪問方式opc數(shù)據(jù)訪問有兩種方式:同步訪問和異步訪問,下面分別介紹。3.4.1 同步數(shù)據(jù)訪問方法調(diào)用開始方法調(diào)用結(jié)束等待處理調(diào)用處理空閑空閑opc應(yīng)用程序opc服務(wù)器時間時間圖3-2 同步數(shù)據(jù)訪問過程同步數(shù)據(jù)訪問過程如圖3-2所示,opc服

31、務(wù)器按照opc客戶端的要求把得到的數(shù)據(jù)訪問結(jié)果作為方法參數(shù)返還給opc客戶端,opc客戶端在結(jié)果被返還之前必須處于等待狀態(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ù)時受組和項狀態(tài)的影響,write同步寫操作是直接向設(shè)備寫數(shù)據(jù)。3

32、.4.2 異步數(shù)據(jù)訪問方法調(diào)用開始方法調(diào)用結(jié)束調(diào)用異步訪問方法等待狀態(tài)事件發(fā)生事件處理結(jié)果異步訪問完成事件通信空閑空閑opc應(yīng)用程序時間時間opc服務(wù)器處理調(diào)用圖3-3 異步數(shù)據(jù)訪問過程異步數(shù)據(jù)訪問過程如圖3-3所示,opc服務(wù)器接收到opc客戶端要求后,檢查了參數(shù)中的項的服務(wù)器句柄是否有效,然后將方法返回,opc應(yīng)用程序進行處理。當(dāng)opc服務(wù)器完成數(shù)據(jù)訪問時,觸發(fā)opc應(yīng)用程序異步訪問的完成,將數(shù)據(jù)結(jié)果返回給opc應(yīng)用程序。4 modbus opc數(shù)據(jù)訪問服務(wù)器的實現(xiàn)4.1 opc服務(wù)器要求分析本節(jié)主要介紹opc服務(wù)器設(shè)計實現(xiàn)的主要功能和設(shè)計環(huán)境以及總體框架,初步構(gòu)建起opc服務(wù)器設(shè)計的基礎(chǔ)

33、。4.1.1 opc服務(wù)器結(jié)構(gòu)框架對于現(xiàn)代化生產(chǎn)來說,利用計算機監(jiān)控系統(tǒng)實時監(jiān)控現(xiàn)場設(shè)備的運行狀態(tài)和數(shù)據(jù)對提高生產(chǎn)效率有非常大的幫助,上傳來的數(shù)據(jù)可以作為參考來更改現(xiàn)場設(shè)備的運行參數(shù)也可快速的查找現(xiàn)場設(shè)備的故障原因,而opc服務(wù)器就可以辦得到這些?;趍odbus的智能儀表opc服務(wù)器可以實現(xiàn)向下和modbus從設(shè)備的通信,向上可以將實時數(shù)據(jù)傳輸?shù)給pc客戶端。其結(jié)構(gòu)如下圖4-1所示:監(jiān)控程序和其他上層應(yīng)用程序opc客戶端(接口)服務(wù)器對象組對象項對象客戶端modbus opc服務(wù)器現(xiàn)場設(shè)備plcmodbus從設(shè)備圖4-1 opc服務(wù)器結(jié)構(gòu)框架從現(xiàn)場設(shè)備讀取回來的數(shù)據(jù)通過modbus協(xié)議工業(yè)以

34、太網(wǎng)以數(shù)據(jù)幀的形式傳到opc服務(wù)器,經(jīng)過服務(wù)器的處理再通過opc接口上傳到opc客戶端,這樣就完成了遠程監(jiān)控現(xiàn)場設(shè)備運作狀態(tài)的過程?,F(xiàn)在簡介一下opc服務(wù)器關(guān)鍵模塊管理模塊的設(shè)計理念。管理模塊主要處理通道的定義、標(biāo)簽組、標(biāo)簽和邏輯設(shè)備的定義、物理設(shè)備向通道和邏輯設(shè)備的映射、物理設(shè)備數(shù)據(jù)點與opc item的映射關(guān)系等方面的設(shè)備和數(shù)據(jù)點的管理功能。opc服務(wù)器接口接收到客戶端的請求后也必須利用管理模塊提供請求的opc item對應(yīng)的物理設(shè)備數(shù)據(jù)點的信息。其數(shù)據(jù)點監(jiān)視功能使通信模塊在客戶端界面上實現(xiàn)對設(shè)備數(shù)據(jù)點的讀寫。如圖4-2所示,它包含通道定義、modbus從設(shè)備映射、數(shù)據(jù)點映射、模擬變量變換

35、和數(shù)據(jù)點在線監(jiān)視五個模塊。管理模塊數(shù)據(jù)點映射模塊模擬變量變換模塊modbus從設(shè)備映射模塊數(shù)據(jù)點在線監(jiān)視模塊通道定義模塊圖4-2 管理模塊結(jié)構(gòu)通道定義模塊是與遠程modbus服務(wù)器的連接屬性的設(shè)置。通道由ip地址、ip端口和連接超時值組成。對于每一個ip地址、ip端口必須定義唯一一個通道,這樣連接到網(wǎng)絡(luò)上的設(shè)備就可以利用這些信息連接到確定的唯一的opc服務(wù)器的物理設(shè)備。modbus從設(shè)備映射模塊主要功能是將物理設(shè)備的信息映射到相應(yīng)的邏輯設(shè)備和通道之中。數(shù)據(jù)點映射模塊將設(shè)備數(shù)據(jù)點直接映射為管理模塊的標(biāo)簽,而標(biāo)簽包含有的信息有:設(shè)備數(shù)據(jù)點具體的地址、儲存區(qū)類型、數(shù)據(jù)類型和讀取權(quán)限。opc項代表了到

36、數(shù)據(jù)源的連接,相當(dāng)于一個指針,指向它所對應(yīng)的標(biāo)簽,通過標(biāo)簽的信息完成連接。物理設(shè)備中的模擬變量是以整數(shù)或者浮點數(shù)的形式讀出的,可是這些值只是存儲區(qū)內(nèi)的一個相對量,模擬變量模塊可以將它們經(jīng)過比例變換成為有意義的物理值,還需要定義物理單位、死區(qū)、上溢下溢范圍等信息。數(shù)據(jù)點在線監(jiān)視模塊提供了設(shè)備數(shù)據(jù)點的讀取功能,讓服務(wù)器用戶界面可以實現(xiàn)數(shù)據(jù)點數(shù)值的在線讀取和寫入。4.1.2 opc服務(wù)器需要實現(xiàn)的功能在opc規(guī)范中可以總結(jié)出opc服務(wù)器應(yīng)該實現(xiàn)的幾項基本功能,opc服務(wù)器要與客戶端實現(xiàn)連接,數(shù)據(jù)傳輸必須要有這些功能。首先opc服務(wù)器要在客戶端需要的時候提供本地連接,以便于客戶端需要連接opc服務(wù)器的

37、時候,opc服務(wù)器能夠被找到,能夠給客戶端提供必要的接口。同時需要opc服務(wù)器支持modbus通信協(xié)議,不需要任何額外的驅(qū)動程序,在和modbus從設(shè)備通信的時候不需要為每個通信設(shè)備提供不同的驅(qū)動程序;然后opc服務(wù)器需要提供iopcserver、iopcitemmgt、iopccgroupstatemgt、iopcsyncio等接口的實現(xiàn),只有實現(xiàn)了這些接口,客戶端才能夠通過該接口實現(xiàn)添加刪除服務(wù)器的組對象,對組對象進行管理。而且無論是本機還是遠程客戶端都能訪問服務(wù)器,支持了遠程啟動,即使服務(wù)器不在運行狀態(tài),只要有客戶端訪問服務(wù)器,服務(wù)器能夠自行啟動。下面是opc服務(wù)器的幾個基本概念:(1)

38、設(shè)備:指連接到opc服務(wù)器的硬件設(shè)施(如plc),對于modbus opc服務(wù)器來說,設(shè)備是指modicon或者其他第三方modbus兼容硬件。設(shè)備包含事務(wù)處理超時時間、連接類型等信息;(2)通道:通道為opc服務(wù)器提供連接到硬件設(shè)備的物理連接的信息;(3)標(biāo)簽組:提供一種將標(biāo)簽成組的方法,用于生成地址空間的。標(biāo)簽組可以讓瀏覽標(biāo)簽的客戶端分層次的仔細(xì)查看標(biāo)簽;(4)標(biāo)簽:標(biāo)簽用于在opc服務(wù)器中映射目標(biāo)硬件數(shù)據(jù)點。它的名稱可以取代plc的以數(shù)字表示的寄存器。4.2 opc服務(wù)器開發(fā)步驟(1)定義opc數(shù)據(jù)服務(wù)器的名稱和類標(biāo)識,然后根據(jù)規(guī)范對各個接口id進行定義;(2)實現(xiàn)opc數(shù)據(jù)服務(wù)器類廠對

39、象,創(chuàng)建opc服務(wù)器對象;(3)設(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)接口類的指針成員變量,接著修改接口查詢函數(shù)。當(dāng)客戶程序查詢某一接口時,實例化接口類,并返回接口指針變量,客戶程序再通過該接口指針進一步調(diào)用接口成員函數(shù);(4)數(shù)據(jù)存儲區(qū)的設(shè)計。由于opc服務(wù)器要

40、對底層硬件進行讀寫操作,又要通過opc接口與客戶程序進行交互,所以對數(shù)據(jù)存儲區(qū)的操作需要采用多線程模型,以保證數(shù)據(jù)存取的效率。為避免不同線程同時對數(shù)據(jù)區(qū)中的數(shù)據(jù)進行操作,須考慮對臨界區(qū)的互斥控制;(5)界面設(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)文件保存起來,而在程序運行時能自動調(diào)入組態(tài)文件完成初始設(shè)置;(6)根據(jù)硬件的種類和特性,自行開發(fā)驅(qū)動程序,或者調(diào)用硬件廠商提供的i/odll實現(xiàn)對現(xiàn)場設(shè)備進行設(shè)

41、置以及數(shù)據(jù)存取的功能;(7)獲取opc標(biāo)準(zhǔn)組件并在服務(wù)器上注冊,然后利用opc客戶端程序連接opc服務(wù)器進行測試。4.3 服務(wù)器組和項屬性實現(xiàn)每個組有兩個i/o接口:同步和異步接口。每個接口有讀、寫兩種函數(shù)。同步函數(shù)在執(zhí)行i/o操作時,會阻塞當(dāng)前進程。同步讀函數(shù)可以指定是讀緩存還是讀設(shè)備,過程如下:讀緩存用于服務(wù)器立即得到最近的數(shù)據(jù),而不執(zhí)行一個較慢的i/o操作。如果項是不活動的,則返回一個壞的品質(zhì)。讀設(shè)備強迫服務(wù)器從所連的設(shè)備讀取數(shù)據(jù)。因為這種方法較慢,它通常作診斷用。同步寫函數(shù)總是把數(shù)據(jù)寫到設(shè)備上,返回完成狀態(tài)給opc客戶。同步讀寫函數(shù)獨立于數(shù)據(jù)連接通知。異步函數(shù)包括讀、寫、刷新和取消。像

42、同步讀寫函數(shù)一樣,異步讀寫函數(shù)也可以操作多個項不同的是異步函數(shù)請求動作,并且立即返回。一個獨立的線程按照先后順序處理這些操作,操作結(jié)果按請求登記順序通過連接點通知opc客戶。讀函數(shù)引起所有的請求數(shù)據(jù)返回,這個函數(shù)是獨立于變化驅(qū)動通知的。異步寫函數(shù)通過連接點返回給opc客戶的是i/o函數(shù)操作完后的狀態(tài)。異步刷新函數(shù)僅僅影響變化驅(qū)動通知,刷新函數(shù)本質(zhì)上強行更新指定項,而不管最近的改變是否通知了opc客戶。返回給opc客戶的是最近的值。品質(zhì)是opc數(shù)據(jù)必要的選項,服務(wù)器用品質(zhì)來表示數(shù)據(jù)不可靠或壞的。句柄是組和項的一個屬性。組和項都有客戶句柄和服務(wù)器句柄,客戶句柄被opc客戶分配與一個對象關(guān)聯(lián),服務(wù)器

43、在相關(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客戶一樣的方法來分配句柄。4.4 服務(wù)器與客戶端傳送機制opc規(guī)范發(fā)展到目前為止,針對服務(wù)器與客戶端的數(shù)據(jù)傳送共提出了兩種方法,分別是異步數(shù)據(jù)通報和連接點方式。其中異步數(shù)據(jù)通報方式應(yīng)用于符合opc規(guī)范1.0版本要求的服務(wù)器中,連接點方式用于符合opc規(guī)范2.0版本要求的服務(wù)器中。opc服務(wù)器與

44、客戶端數(shù)據(jù)傳送機制是整個opc服務(wù)器開發(fā)過程中的關(guān)鍵技術(shù),下面對這兩種數(shù)據(jù)傳遞方式分別進行討論。4.4.1 服務(wù)器與客戶端異步通報方式傳送機制通過異步通報方式傳送數(shù)據(jù)時,客戶端需要實現(xiàn)iadvisesink接口,服務(wù)器端需要實現(xiàn)idataobject接口。iadvisesink接口和idataobject接口都由com庫定義。iadvisesink接口用于接收異步通報。異步報有3種類型:復(fù)合文檔、數(shù)據(jù)變化和視區(qū)變化iadvisesink的實現(xiàn)者可以根據(jù)實際需要讓iadviesink接收一種或多種類型的異步通報,iadviesink的每一種方法是對應(yīng)于一種特定通報的回函數(shù)。當(dāng)觸發(fā)異步通報發(fā)送的條

45、件滿足后,發(fā)送報的程序調(diào)用合適的iadvisesink方法。idataobject接口它用于處理數(shù)據(jù)變化通報,因而只實現(xiàn)了idataobject的dadvise方法和dunadvise方法。dadvise函數(shù)用于建立雙向通信機制,客戶程序調(diào)用此函數(shù),以便在客戶程序的通報接收器和對象之間建立一個通報連接,以后當(dāng)對象中的據(jù)發(fā)生變化時,它可以通知客戶程序的接收器dunadvise函數(shù)用于取消通報連接。下面簡單介紹下一步操作流程:在opc中,數(shù)據(jù)傳輸是以組為單位進行的在實現(xiàn)異步操作前,客戶和服務(wù)器之間必須以組為單位建立連接,這個連接是由客戶調(diào)用服務(wù)器的idataobject接口中的 dadvise函數(shù)

46、建立的。建立好后,在服務(wù)器方將保存客戶的iadvisesink接口當(dāng)需要傳輸數(shù)據(jù)時,就使用客戶方的iadvisesin接口向客戶傳輸數(shù)據(jù)。具體的連接流程:(1)opc客戶調(diào)用cocreateinstance函數(shù)創(chuàng)建服務(wù)器對象,獲得其接口指針,客戶就可以利用該指針直接調(diào)用接口成員函數(shù)。在服務(wù)器端為客戶生成一個opcserver對象;(2)用戶調(diào)用服務(wù)器實現(xiàn)的iopcserver:ad2dgroup()函數(shù)添加組;(3)客戶調(diào)用服務(wù)器實現(xiàn)的iopcseever:ad2dltem()函數(shù)添加項;(4)客戶生成一個iadvisesink對象;(5)客戶調(diào)用服務(wù)器端實現(xiàn)的dadvise函數(shù),與服務(wù)器建立

47、連接。服務(wù)器在opcgroup對象中保存客戶的iadvisesink對象和數(shù)據(jù)格式;(6)客戶調(diào)用服務(wù)器iopcasyncio發(fā)出讀/寫操作,服務(wù)器給相應(yīng)組和項做異步讀/寫標(biāo)記;(7)服務(wù)器向通道發(fā)送命令,等待命令返回;(8)服務(wù)器接收通道的讀/寫結(jié)果,給與通道對應(yīng)的opc項置讀/寫完成標(biāo)記;(9)服務(wù)器中建有定時器,該定時器定時掃描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é)果

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

49、 連接點機制結(jié)構(gòu)描述如果客戶要使用連接點,接收器對象中就必須實現(xiàn)iunknown接口和服務(wù)器的輸出接口。客戶程序開始運行后,通過可連接對象接口查詢自己的接口指針,若opc服務(wù)器提供了該接口的實現(xiàn),那么客戶就調(diào)用該接口的advise方法,把在接收器中實現(xiàn)的iunknown接口指針傳送給服務(wù)器。服務(wù)器接著獲得輸出接口的指針。所以服務(wù)器需要向客戶端發(fā)送數(shù)據(jù)的時候就可以調(diào)用輸出接口的方法。4.5 opc對象和接口opc對象是opc服務(wù)器程序與客戶程序進行交互的部分,需要與數(shù)據(jù)存儲區(qū)和硬件驅(qū)動部分相聯(lián)系,以便獲取數(shù)據(jù)區(qū)中的數(shù)據(jù)或直接訪問硬件設(shè)備。實施步驟分為以下幾個部分:(1)繼承opc規(guī)范中定義的op

50、cserver類opcgroup類和opcitem類,實現(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ù)源進行連接、讀/寫數(shù)據(jù)源等)。opc客戶程序?qū)⑼ㄟ^opc組對象的接口函數(shù)來間接調(diào)用opc項的這些成員函數(shù);(2)定義opc數(shù)據(jù)服務(wù)器的名稱和類標(biāo)識。由于服務(wù)器對象是一個由客戶

51、程序調(diào)用的com對象,因此需要定義一個類標(biāo)識。類標(biāo)識可用vc程序自動產(chǎn)生,這樣能夠保證生成的類標(biāo)識是唯一的。然后根據(jù)規(guī)范對各個接口id進行定義;(3)實現(xiàn)opc數(shù)據(jù)服務(wù)器類廠對象。在com規(guī)范中,客戶程序是通過類廠創(chuàng)建com對象并返回其接口指針的,因此需要為cmyserver類設(shè)計相應(yīng)的類廠。具體實現(xiàn)時先從iclassfactory基類派生出myopcclassfactory類,然后重載create2instance()成員函數(shù),通過該函數(shù)創(chuàng)建cmyserver服務(wù)器對象;(4)將opc對象設(shè)計的頭文件和實現(xiàn)文件添加到工程中。接著在應(yīng)用程序類的初始化函數(shù)中完成com庫初始化、類廠注冊等功能。當(dāng)

52、客戶程序建立連接時,通過類廠注冊服務(wù)器程序并實例化一個服務(wù)器對象傳遞給客戶程序。5 opc服務(wù)器的實驗測試(1)同步實例界面,實現(xiàn)了啟動、停止服務(wù)器,同步讀寫操作,并回復(fù)操作結(jié)果,如圖5-1所示。圖5-1 同步實例界面(2)服務(wù)器界面,主窗口是opc服務(wù)器程序的起點,主要完成opc服務(wù)器的初始化。主窗口是所有界面元素的組織容器,主要包含設(shè)備地址、設(shè)備樹形列表、標(biāo)簽列表。測試中成功將數(shù)據(jù)轉(zhuǎn)換為模擬量tag_i0-tag_i9,它們分別對應(yīng)了不同的數(shù)值但擁有相同的質(zhì)量如圖5-2所示。圖5-2 服務(wù)器界面(3)設(shè)備屬性,可以設(shè)置具體到一臺設(shè)備的相關(guān)參數(shù),如ip地址、端口號、設(shè)備號、網(wǎng)關(guān)設(shè)備、超時時間

53、、消息周期等等,如圖5-3所示。圖5-3 設(shè)備屬性(4)添加組,在圖5-4所示的指定的服務(wù)器里面添加分組并將其命名的操作。圖5-4 添加組(5)標(biāo)簽屬性,在圖5-5所示設(shè)定指定標(biāo)簽的名稱、描述、地址、寄存器及數(shù)據(jù)類型等相關(guān)操作。圖5-5 標(biāo)簽屬性結(jié)論本文所開發(fā)的opc服務(wù)器,實現(xiàn)了與客戶端的連接,并且可以實現(xiàn)添加或者刪除組和項的操作,經(jīng)過測試基本擁有了opc服務(wù)器作為工業(yè)通用數(shù)據(jù)訪問服務(wù)器的功能,實現(xiàn)了opc規(guī)范中所規(guī)定的訪問機制和modbus/tcp標(biāo)準(zhǔn)規(guī)范中的功能。但測試中發(fā)現(xiàn)以下幾個問題:(1)頻繁的啟動停止服務(wù)器時,偶爾出現(xiàn)不能打開的情況;(2)在數(shù)據(jù)量過大時候轉(zhuǎn)換不出模擬量;(3)時

54、間戳部分偶爾出現(xiàn)時間錯誤。由于現(xiàn)場設(shè)備和本人水平有限,對于以上幾點缺陷沒有進行有效的開發(fā),有待以后的研究。通過本次畢業(yè)設(shè)計,我感到自己應(yīng)用基礎(chǔ)知識及專業(yè)知識解決問題的能力有了很大的提高,并且這次畢業(yè)設(shè)計的選題,是一個很實際的課題,因此,在我即將工作之前,它是一次重要演練。我想,通過這次畢業(yè)設(shè)計,到了工作單位后,我將能夠更快的適應(yīng)工作崗位和工作要求。我對自己充滿信心。參考文獻1 蔣近, 毛六平, 戴瑜興. 基于modbus協(xié)議的opc服務(wù)器的yf發(fā)與研究j. 湖南工程學(xué)院學(xué)報, 2005, 6(1): 56-58.2 馬增良, 蘭斌. opc 數(shù)據(jù)訪問服務(wù)器實現(xiàn)機制研究j. 計算機工程與應(yīng)用,

55、2003, 39(21): 65-67.3 李勤, 黨選舉, 向榮. 基于com的opc技術(shù)的研究和實現(xiàn)j. 微計算機信息, 2002, 22(16): 18-22.4 林躍. opc數(shù)據(jù)服務(wù)器開發(fā)工具研究與實現(xiàn)j. 自動化儀表, 2001, 22(9): 7-13.5 郭紅曉, 莫德舉. opc技術(shù)及其軟件的開發(fā)j. 北京化工大學(xué)學(xué)報(自然科學(xué)版), 2002, 29(3): 72- 73, 78.6 馮波, 陳子明, 王偉杰, 等. opc技術(shù)及其在工業(yè)過程控制中的作用j. 中山大學(xué)學(xué)報, 2002, 22(3): 169-171.7 殷衛(wèi)兵, 等. opc數(shù)據(jù)服務(wù)器分析及程序開發(fā)j. 化

56、工自動化及儀表, 2003, 30(5): 41-45.8 潘洪躍. 基于modbus協(xié)議通信的設(shè)計與實現(xiàn)j. 計量技術(shù), 2002, 33(4): 35-36.9 vincent. interface between opc server and opc application program j. industrial automation, 2005, 14(7): 21-26.10 martin. the role of opc in industrial automationj. intelligent control, 2001, 8(7): 11-13.11 馬龍華, 段建民. opc數(shù)據(jù)存取規(guī)范的研究和應(yīng)用j. 化工自動化及儀表, 2002, 29(1): 43-45.12 傅春霞, 段建民. opc服務(wù)器的研究及在can總線系統(tǒng)中的實現(xiàn)j. 微計算機信息(測控自動化), 2003, 19(11): 8-10.13 張國忠, 等. 電力監(jiān)控模塊opc驅(qū)動程序的實現(xiàn)j. 武漢大學(xué)學(xué)報, 2002, 35(2) :54-5

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論