日本在线www-日本在线播放一区-日本在线不卡免费视频一区-日本在线不卡视频-成人影院久久久久久影院-成人影院一区二区三区

最新廣告
關(guān)注中國自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
工業(yè)智能邊緣計(jì)算2025年會(huì)
CAIAC 2025
2025工業(yè)安全大會(huì)
OICT公益講堂
當(dāng)前位置:首頁 >> 案例 >> 案例首頁

案例頻道

OPC技術(shù)在監(jiān)控軟件開發(fā)中的應(yīng)用
  • 企業(yè):控制網(wǎng)     領(lǐng)域:儀器儀表     行業(yè):建筑樓宇    
  • 點(diǎn)擊數(shù):3397     發(fā)布時(shí)間:2007-07-18 21:02:44
  • 分享到:
結(jié)合一個(gè)基于OPC技術(shù)的閘門監(jiān)控系統(tǒng)的開發(fā)過程實(shí)例,本文主要介紹了有關(guān)OPC的基礎(chǔ)知識(shí)以及OPC技術(shù)應(yīng)用于上位機(jī)監(jiān)控軟件的獨(dú)特優(yōu)勢,并給出了利用VB語言開發(fā)OPC客戶端程序的一般方法和步驟。



1 前言 

    目前國內(nèi)閘門監(jiān)控系統(tǒng)設(shè)計(jì)的方案基本上是PLC+上位機(jī)模式,而上位監(jiān)控軟件大多是購買現(xiàn)成的集成系統(tǒng)和商業(yè)組態(tài)軟件來實(shí)現(xiàn)的。但在缺少資金的情況下要進(jìn)行小型項(xiàng)目自動(dòng)化建設(shè)或改造,就不得不考慮成本問題,因?yàn)榻M態(tài)軟件是按點(diǎn)數(shù)賣錢的,定義一個(gè)變量就算一個(gè)點(diǎn),價(jià)格昂貴。而采用高級(jí)語言結(jié)合OPC技術(shù)開發(fā)監(jiān)控軟件不僅可以節(jié)省大量的成本而且可以擺脫對(duì)設(shè)備驅(qū)動(dòng)程序的依賴,尤其是在對(duì)老項(xiàng)目進(jìn)行自動(dòng)化改造時(shí),這種優(yōu)勢更加明顯。

    機(jī)遇以上考慮,筆者在參與安徽淮河流域某小型閘門自動(dòng)化改造工程時(shí),采用了Visual Basic 6.0開發(fā)環(huán)境,應(yīng)用OPC自動(dòng)化接口技術(shù)開發(fā)了OPC客戶端程序(閘門監(jiān)控系統(tǒng)的監(jiān)控軟件)。服務(wù)器采用凱譜華的 KEPServerEx.V4。她嵌入了工業(yè)市場上廣泛范圍(超過80多種支持100種以上設(shè)備型號(hào)的可下載驅(qū)動(dòng)程序)的驅(qū)動(dòng)程序和組件 ,更重要的是,這個(gè)服務(wù)器是完全免費(fèi)的。

2 OPC知識(shí)簡介

    2.1 OPC基本概念

    OPC是OLE for Process Control的縮寫,即把OLE應(yīng)用于工業(yè)控制領(lǐng)域。OPC建立在OLE規(guī)范之上,它為工業(yè)控制領(lǐng)域提供了一種標(biāo)準(zhǔn)的數(shù)據(jù)訪問機(jī)制。

    OPC技術(shù)采用COM/DCOM技術(shù)的客戶/服務(wù)器(Client/Server)模型,使OPC的通用性得到擴(kuò)展。相應(yīng)的OPC應(yīng)用程序的開發(fā)就有了OPC客戶端程序部分和OPC服務(wù)器程序部分的開發(fā)。一般來說,OPC服務(wù)器程序由硬件的生產(chǎn)廠商開發(fā);而OPC客戶端程序由用戶開發(fā)。

    2.2 OPC結(jié)構(gòu)原理

    2.2.1 OPC基本體系結(jié)構(gòu)

    OPC規(guī)范提供了兩套接口方案,即COM接口和自動(dòng)化。COM接口效率高,通過該接口,客戶能夠發(fā)揮OPC服務(wù)器的最佳性能,采用C++語言的客戶一般用COM接口方案;自動(dòng)化接口使用解釋性和宏語言訪問OPC服務(wù)器,采用Visaul Basic語言的客戶一般采用自動(dòng)化接口。典型的OPC體系如下圖所視:


圖1 典型OPC體系機(jī)構(gòu)圖

    Figure1 OPC architecture

    2.2.2 OPC自動(dòng)化服務(wù)器對(duì)象模型

    OPC自動(dòng)化服務(wù)器對(duì)象的組織是層次結(jié)構(gòu),其對(duì)象模型如圖5-1所示:



圖2 OPC 自動(dòng)化服務(wù)器對(duì)象模型


 


    Figure2  Automation Object Hierarchy
服務(wù)器對(duì)象(Server)擁有服務(wù)器的所有信息,同時(shí)也是組對(duì)象(Group)的容器。OPC組對(duì)象(Group)提供了OPC客戶程序用來組織數(shù)據(jù)的一種方法。在每個(gè)組對(duì)象中,客戶可以加入多個(gè)OPC數(shù)據(jù)項(xiàng)(Item)。OPC數(shù)據(jù)項(xiàng)(Item)是服務(wù)器端定義的對(duì)象,通常指向設(shè)備的一個(gè)寄存器單元。OPC客戶對(duì)設(shè)備寄存器的操作都是通過其數(shù)據(jù)項(xiàng)來完成的,通過OPC數(shù)據(jù)項(xiàng)(Item),OPC規(guī)范盡可能地隱藏了設(shè)備的特殊信息,也使OPC服務(wù)器的通用性大大增強(qiáng)。OPC數(shù)據(jù)項(xiàng)(Item)并不提供對(duì)外接口,客戶不能直接對(duì)之進(jìn)行操作,所有的操作都是通過組對(duì)象進(jìn)行的。每個(gè)OPC數(shù)據(jù)項(xiàng)(Item)的數(shù)據(jù)結(jié)構(gòu)包括三個(gè)成員變量:即數(shù)據(jù)值、數(shù)據(jù)質(zhì)量和時(shí)間戳。數(shù)據(jù)值是以Variant形式表示的。一個(gè)OPC服務(wù)器中只能有一個(gè)OPC瀏覽器對(duì)象,而且它是可選的。OPC瀏覽器對(duì)象是為了讓客戶程序可以瀏覽到OPC服務(wù)器的配置而設(shè)計(jì)的,它把OPC服務(wù)器上可用的東西顯示給用戶。

    2.2.3 OPC技術(shù)優(yōu)勢

    一個(gè)完整的基于OPC技術(shù)的監(jiān)控系統(tǒng)由OPC客戶端程序和OPC服務(wù)器程序組成,實(shí)際上實(shí)現(xiàn)了用戶和設(shè)備供應(yīng)商開發(fā)監(jiān)控系統(tǒng)的分工。利用OPC技術(shù)實(shí)際上就等于客戶端程序不用直接從硬件上讀取數(shù)據(jù),而是直接從OPC服務(wù)器上讀取數(shù)據(jù),設(shè)計(jì)OPC服務(wù)器程序的廠商已經(jīng)完成了OPC服務(wù)器程序與硬件設(shè)備的數(shù)據(jù)存取。而且任意的OPC服務(wù)器的接口是標(biāo)準(zhǔn)統(tǒng)一的,這使得客戶程序能用一種標(biāo)準(zhǔn)的方法去訪問任意廠商的OPC服務(wù)器程序。每個(gè)用戶就不必各自開發(fā)和硬件的通信程序,就可以直接讀取OPC服務(wù)器的數(shù)據(jù),提高了代碼的重用性。也就是說OPC客戶端程序一旦開發(fā)成功了,就可以應(yīng)用到任意一個(gè)帶有OPC服務(wù)器的監(jiān)控系統(tǒng)中。OPC技術(shù)將監(jiān)控系統(tǒng)的復(fù)雜性大大地簡化后,軟件開發(fā)的周期也大大縮短了,用戶就可以不需要購買比較昂貴的商業(yè)組態(tài)軟件而獨(dú)立開發(fā)OPC客戶端程序。

3 客戶端監(jiān)控程序開發(fā)

    3.1引用OPC自動(dòng)化接口

    建立新工程或項(xiàng)目,在“工程”菜單下選擇“引用”,如圖5-3所示。只有引用OPCDAAuoto.DLL后,在程序中才能創(chuàng)建服務(wù)器對(duì)象,然后進(jìn)行一系列的操作。



圖3 打開引用對(duì)話框

     Figure3  Open Reference Dialog

    (2)在彈出的引用窗口里單擊“瀏覽(B)…”按鈕,彈出添加引用窗口,選擇OPCDAAuoto.DLL文件。

    (3)在引用窗口里的OPC Automation 2.0前面打鉤,按“確定”按鈕。如圖5-4所示:



圖4 選擇引用項(xiàng)目


    Figure4  Select Reference Item

    3.2程序開發(fā)

    3.2.1定義全局變量

    變量類型應(yīng)該指定為對(duì)象型。這些對(duì)象最好在窗體的通用部分聲明加上“Option Explicit”語句,表示模塊里的所有變量都需要顯式聲明。由于OPC自動(dòng)化接口的數(shù)組的索引要求必須從1開始,而系統(tǒng)默認(rèn)是從0開始,為了避免錯(cuò)誤最好在代碼的最初加上“Option Base 1”語句。為了使對(duì)象可以處理事件,必須將myTestGrp和myServer的聲明中加上“WithEvents”語句,表示聲明的對(duì)象可以響應(yīng)事件。

Option Explicit
Option Base 1
Dim WithEvents myServer As OPCServer
Dim myGroups As OPCGroups
Dim WithEvents myTestGrp As OPCGroup
Dim myItems As OPCItems
3.2.2連接OPC服務(wù)器和建立OPC組主要程序
連接子程序:
Sub Connect(strProgID As String, Optional strNode As String)
    If myServer Is Nothing Then
        ' 建立一個(gè)OPC服務(wù)器對(duì)象
        Set myServer = New OPCServer
    End If
If myServer.ServerState = OPCDisconnected Then
        ' 連接OPC服務(wù)器
        myServer.Connect strProgID, strNode
   End If
在Visual Basic中,通過執(zhí)行一個(gè)Set操作實(shí)現(xiàn)調(diào)用其它接口的方法。
   If myGroups Is Nothing Then
        ' 建立一個(gè)OPC組集合
        Set myGroups = myServer.OPCGroups
    End If
    If myTestGrp Is Nothing Then
        ' 添加一個(gè)OPC組
        Set myTestGrp = myGroups.Add("Group")
    End If
End Sub
ServerState屬性一共有OPCRunning、OPCFailed、OPCNoconfig、OPCSuspended、OPCTest和OPCDisconnected六個(gè),分別表示正在運(yùn)行、失敗、沒有配置、暫停、測試和沒有連接六種OPC服務(wù)器當(dāng)前的狀態(tài)。如果OPC服務(wù)器沒有連接,我們才執(zhí)行myServer.Connect strProgID, strNode語句。strProgID就是ProgID,strNode就是用于遠(yuǎn)程通信的IP地址。
在窗口登陸時(shí)調(diào)用連接子程序,便可以連接到你需要的服務(wù)器。
Call Connect("KEPware.KEPServerEx.V4")

    3.2.3添加OPC標(biāo)簽

    對(duì)服務(wù)器進(jìn)行訪問前,必須先在OPC組里添加要訪問的OPC標(biāo)簽。為了編程方便,在服務(wù)器端,將每個(gè)閘門的升、降、停止、開度、水位、流量 等監(jiān)控量組態(tài)為TAGI(I=1,2…15)

Sub AddItem()
    Dim strItemIDs(15) As String
    Dim lClientHandles(15) As Long
    Dim lErrors() As Long
    Dim I As Integer
   
    myTestGrp.IsSubscribed = True     ' 啟動(dòng)組異步通知。
   
    Set myItems = myTestGrp.OPCItems     ' 建立OPC項(xiàng)集合
  
    For I = 1 To 15                   ' 生成從TAG1到TAG15的項(xiàng)標(biāo)識(shí)符
        strItemIDs(I) = "Server.Group.TAG" & I
        lClientHandles(I) = I
    Next
  
    Call myItems.AddItems(15, strItemIDs, lClientHandles, lServerHandles, lErrors)
End Sub                                     ' 添加OPC項(xiàng)
3.2.4異步讀取代碼的實(shí)現(xiàn)
在定時(shí)器事件內(nèi)進(jìn)行執(zhí)行AsyncRead子程序的讀取代碼
Sub AsyncRead()
 Dim lErrors() As Long
   If myTestGrp Is Nothing Then
        Exit Sub
    End If
    If myTestGrp.OPCItems.Count > 0 Then
        ' 異步讀取
        lTransID_Rd = lTransID_Rd + 1
myTestGrp.AsyncRead 15, lServerHandles, lErrors, lTransID_Rd, lCancelID_Rd
   End If
End Sub
AsyncWrite子程序,完成異步寫的操作。
Sub AsyncWrite(nIndex As Integer, ByRef vtItemValues() As Variant, _
    ByRef lErrors() As Long)
Dim lHandle(1) As Long
    If myTestGrp Is Nothing Then
        Exit Sub
    End If
    If myTestGrp.OPCItems.Count > 0 Then
        lHandle(1) = lServerHandles(nIndex)
        ' 異步寫入
        lTransID_Wt = lTransID_Wt + 1
        myTestGrp.AsyncWrite 1, lHandle(), vtItemValues, _
                lErrors, lTransID_Wt, lCancelID_Wt
    End If
End Sub

    3.2.5斷開OPC服務(wù)器

    連接著OPC服務(wù)器的OPC客戶應(yīng)用程序,在退出前必須斷開和OPC服務(wù)器的連接。斷開連接前要清除 項(xiàng)和組.

Sub Disconnect()
    Dim lErrors() As Long
    If Not myItems Is Nothing Then
        If myItems.Count > 0 Then
            myItems.Remove 15, lServerHandles, lErrors ' 清除OPC項(xiàng)
        End If
        Set myItems = Nothing
    End If   
    If Not myTestGrp Is Nothing Then
        myGroups.Remove "Group"' 清除OPC組
        Set myTestGrp = Nothing
    End If   
    If Not myGroups Is Nothing Then
        Set myGroups = Nothing
    End If   
    If Not myServer Is Nothing Then
        If myServer.ServerState <> OPCDisconnected Then
            myServer.Disconnect' 斷開OPC服務(wù)器.
        End If
        Set myServer = Nothing
    End If
End Sub

4 結(jié)論

    OPC技術(shù)應(yīng)用于工業(yè)控制領(lǐng)域,大大的突破了傳統(tǒng)設(shè)備的概念,通過一個(gè)接口標(biāo)準(zhǔn)(規(guī)范)方便的將現(xiàn)場任何一個(gè)符合OPC規(guī)范的設(shè)備數(shù)據(jù)收集與處理,從而擺脫了傳統(tǒng)上的編寫驅(qū)動(dòng)程序的重復(fù)勞動(dòng),使工程人員在設(shè)備選擇上有了更大的自主性。

    隨著組態(tài)軟件的發(fā)展,監(jiān)控系統(tǒng)開發(fā)越來越“傻瓜化”,只需要簡單的連接就可以完成一個(gè)工程的基本組態(tài),然而,一旦面臨對(duì)組態(tài)軟件中沒有的設(shè)備時(shí),就無能為力了。在項(xiàng)目改造過程中,這種情況尤為明顯。
在面臨大量諸如小型水利閘門監(jiān)控系統(tǒng)一樣的各種小型工業(yè)監(jiān)控系統(tǒng)改造的情況下,應(yīng)用OPC不僅可以大大的節(jié)約系統(tǒng)開發(fā)的時(shí)間,而且也能充分利用現(xiàn)有設(shè)備,節(jié)省開支。可以說,在小型工控系統(tǒng)改造中,OPC技術(shù)結(jié)合高級(jí)語言開發(fā)監(jiān)控軟件將具有很大的優(yōu)勢。

【參考文獻(xiàn)】
【1】 OPC Foundation. Data Access Custom Interface Standard Specification 2.0[S],1998.10.14.
【2】 詹根基,郭厚焜.基于OPC的客戶端監(jiān)控程序的開發(fā).自動(dòng)化博覽,2005,Vol.22增刊 (9):105-1
【3】 范逸之.Visual Basic 與分布監(jiān)控系統(tǒng)——RS232/485串行通信,清華大學(xué)出版社,2002
【4】 馬國華.監(jiān)控組態(tài)軟件及其應(yīng)用,清華大學(xué)出版社,2002
【5】 潘愛民.COM原理與應(yīng)用,清華大學(xué)出版社,2000

 

 

 

                                                                                                 

熱點(diǎn)新聞

推薦產(chǎn)品

x
  • 在線反饋
1.我有以下需求:



2.詳細(xì)的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 亚洲日本韩国在线,国产一级片免费看,99久久精品免费国产一区二区三区,大香伊人中文字幕精品,国产成人综合久久精品尤物,亚洲免费在线视频 | 国产激情对白一区二区三区四-国产或人精品日本亚洲77美色-国产黄站-国产黄在线免费观看-日韩中文字幕网-日韩中文字幕视频在线观看 | 久久这里只有精品国产99-久久这里只有精品2-久久这里只有精品1-久久这里只精品热在线99-在线少女漫画-在线涩涩免费观看国产精品 国产精选一区二区-国产精选一区-国产精选污视频在线观看-国产精选91热在线观看-特级黄色视频毛片-特级黄色免费片 | 欧美性动态图-欧美性精品人妖-欧美性久久-欧美性狂猛AAAAAA-欧美性狂猛bbbbbbxxxx-欧美性类s0x | 国产日屄视频播放-国产日本中文久久-国产日本在线观看网址-国产日本在线观看播放-国产日本在线播放-国产日本亚洲一区二区三区 | 国产精选一区二区-国产精选一区-国产精选污视频在线观看-国产精选91热在线观看-特级黄色视频毛片-特级黄色免费片 | 天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看 | 一区二区国产精品-一区二区高清在线观看-一区二区高清在线-一区二区成人国产精品-九九视频精品全部免费播放-九九视频国产 | 性一交一乱一交A片久久四色-性一交一乱一乱A片AP88-性一交一乱一伦一A片-性一交一乱一伦一色一情-性一交一乱一伦一色一情孩交-性一交一乱一伦在线播放 | 久久久久久久久国产-久久久久久久久97-久久久久久久国产视频-久久久久久久国产精品影院-午夜精-午夜寂寞院 | 久久这里只有精品国产99-久久这里只有精品2-久久这里只有精品1-久久这里只精品热在线99-在线少女漫画-在线涩涩免费观看国产精品 国产精选一区二区-国产精选一区-国产精选污视频在线观看-国产精选91热在线观看-特级黄色视频毛片-特级黄色免费片 | 亚洲色图网站-亚洲色图图片专区-亚洲色图图片区-亚洲色图图片-精品久久久中文字幕一区-精品久久久中文字幕二区 | 日韩在线黄色-日韩在线观看精品-日韩在线观-日韩在线高清视频-日韩在线不卡视频-日韩在线播放中文字幕 | 成人黄色在线网站-成人黄色在线免费观看-成人黄色在线观看-成人黄色在线播放-成人黄色在线-成人黄色影视 | 欧美精欧美乱码一二三四区,怡红院五月天,国色天香社区在线看免费,水蜜桃视频在线高清观看,日韩欧美在线免费观看,水蜜桃在线视频 国产夜色福利院在线观看免费-国产夜趣福利免费视频-国产野花视频天堂视频免费-国产亚洲综合一区二区在线-日韩精品在线观看免费-日韩精品在线电影 | 日本久色-日本久久综合视频-日本久久综合-日本久久中文字幕-日本久久一区二区-日本久久网站 | 国产a一级-国产a网-国产a视频精品免费观看-国产a视频-国产a免费观看-国产a毛片 | 国产偷抇久久精品A片蜜臀A-国产偷抇久久精品A片蜜臀AV-国产偷抇久久精品A片图片-国产偷窥熟妇高潮呻吟-国产凸凹视频熟女A片-国产玩弄放荡人妇系列 | 暧暧免费视频,国产成人+亚洲欧洲,国产成人免费视频精品一区二区,久久精品国产亚洲精品2020,久久伊人一区二区三区四区,欧美嫩交 | 中文区永久区乱码六区-中文欧美一级强-中文免费观看视频网站-中文免费-狼牙视频在线免费观看入口-狼窝by揽春全文免费阅读 | 性情网站-性派对交换俱乐部-性派对xxxhd-性派对videos18狂欢-国产中学生-国产中文字幕在线视频 | 国产又黄又爽又猛的免费视频播放-国产又黄又爽视频免费观看-国产又黄又湿又刺激不卡网站-国产又黄又a又潮娇喘视频-亚洲国产美女福利直播秀一区二区-亚洲国产乱码在线精品 | 日操夜操天天操-午夜日日日日日日日日日-亚洲欧洲精品无视频一区二区三区四-国产成人精品无码-婷婷福利综合网-日逼影视 | 成人a毛片手机免费播放-成人a毛片在线看免费全部播放-成人a视频高清在线观看-成人a视频片在线观看免费-欧美三级中文字幕hd-欧美三极 | 亚洲中文字幕特级毛片-亚洲制服丝袜中文字幕-亚洲制服丝袜在线观看-亚洲制服欧美自拍另类-免费一级黄色-免费一级国产生活片 | 国产成人av网站网址-国产成人av无码精品-国产成人av无码精品天堂-国产成人av无码片在线观看-国产成人av无码一区二区三区不卡-国产成人av无码永久免费 | 一区二区三区四区免费视频-一区二区三区视频在线观看-一区二区三区视频-一区二区三区欧美日韩-欧美黑人乱大交-欧美黑人巨大性极品hd欧 | 欧美在线一,91成人爽a毛片一区二区,在线播放国产精品,亚洲欧美日韩高清,zozozo欧美人禽交另类视频,久久精品无码一区二区日韩av | 午夜欧美福利-午夜欧美成人香蕉剧场-午夜欧美成人久久久久久-午夜久久网-国产亚洲男人的天堂在线观看-国产亚洲免费观看 | 国产成人av网站网址-国产成人av无码精品-国产成人av无码精品天堂-国产成人av无码片在线观看-国产成人av无码一区二区三区不卡-国产成人av无码永久免费 | 成人免费视频77777,精品国产福利,欧日韩一区二区三区,国产高清视频在线观看,欧美日韩1区,欧美一区二区三区在线观看 | 国产精品亚洲精品日韩己满十八小-国产精品亚洲精品观看不卡-国产精品亚洲精品不卡-国产精品亚洲精品-四虎影视精品-四虎影视国产精品永久在线 | 极品丝袜小说全集-极品丝袜乱系列在线阅读-极品丝袜老师h系列全文阅读-极品手交handjobtattoo-亚洲男人网-亚洲男人天堂影院 | 日本久久久久久久,97久久精品一区二区三区,狠狠色噜噜狠狠狠狠97,日日干综合,五月天婷婷在线观看高清,九色福利视频 | 久久久精品国产sm最大网站-久久久精品国产免大香伊-久久久精品国产免费A片胖妇女-久久久精品久久久久久96-久久久精品久久久久久久久久久-久久久精品久久日韩一区综合 | 亚洲精品国产免费-亚洲精品国产理论电影网-亚洲精品国产精品国自产网站-亚洲精品国产第1页-韩国电影一区二区-韩国电影一区 | 成人免费视频77777,精品国产福利,欧日韩一区二区三区,国产高清视频在线观看,欧美日韩1区,欧美一区二区三区在线观看 | 亚洲精品色情影片-亚洲精品沙发午睡系列-亚洲精品深夜AV无码一区二区-亚洲精品天堂在线观看-亚洲精品偷拍AV一区二区-亚洲精品偷拍影视在线观看 | 亚洲 欧美 日韩 在线,97热久久免费频精品99国产成人,另类激情亚洲,久久99九九精品免费,久久综合精品国产一区二区三区,2020精品极品国产色在线观看 | 亚洲欧美日韩在线播放,国产成人综合久久,精品国产91,婷婷综合久久中文字幕蜜桃三电影,国产一区精品在线观看,福利一区三区 | 国产美女小视频-国产美女网站视频-国产美女网站-国产美女特级嫩嫩嫩bbb-天天干视频在线观看-天天干视频在线 |