亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于OPC技術的WinCC實時數(shù)據(jù)歸檔

        2015-12-15 10:46:10強明輝張琳琳馬永煒
        電氣自動化 2015年3期
        關鍵詞:窗體控件客戶端

        強明輝,張琳琳,馬永煒

        (蘭州理工大學電氣工程與信息工程學院,甘肅 蘭州 730050)

        0 引言

        SIMATIC WinCC是由西門子公司和微軟公司共同開發(fā)的一款功能強大的HMI/SCADA應用軟件系統(tǒng)[1]。WinCC本身具有自己的歸檔數(shù)據(jù)庫,但其進行歸檔后的數(shù)據(jù)庫為壓縮格式,需要通過WinCC專門集成的工具分析并顯示數(shù)據(jù),這為第三方的訪問帶來了很多不便。由于WinCC集成了OPC技術,所以可以對其進行二次開發(fā)。本文是利用VB編寫OPC客戶端,以WinCC作為OPC的服務器,利用OPC協(xié)議實現(xiàn)VB和OPC之間的動態(tài)數(shù)據(jù)交換,然后通過VB的ADO數(shù)據(jù)接口,把數(shù)據(jù)存儲到數(shù)據(jù)庫中。解決了WinCC實時數(shù)據(jù)轉存到標準數(shù)據(jù)庫的難題,為企業(yè)管理和監(jiān)控系統(tǒng)提供了標準的數(shù)據(jù)源。

        1 OPC技術

        OPC是針對于不同供應廠商的設備和應用程序之間的軟件接口標準化,使其間的數(shù)據(jù)交換更加簡單化的目的而提出的。OPC技術將各個設備驅動程序和通訊程序封裝成獨立的OPC服務器,OPC客戶端無需知道系統(tǒng)的性能特點,而只需通過標準的OPC接口訪問OPC服務器[2-5]。

        OPC的核心是COM/DCOM技術,COM技術是一種軟件組件間相互數(shù)據(jù)交換的有效方法,COM對象分為客戶端和服務器兩類,客戶端通過COM接口訪問服務器。

        OPC數(shù)據(jù)訪問提供從數(shù)據(jù)源讀取和寫入特定數(shù)據(jù)的功能。OPC客戶程序通過接口從服務器讀取數(shù)據(jù)或寫入數(shù)據(jù)。在OPC客戶機訪問服務器時,需要創(chuàng)建一個服務器對象,調用這個服務器對象的接口,服務器對象創(chuàng)建組對象并返回組對象的指針,客戶程序獲得組對象的指針后調用其接口。OPC客戶程序訪問服務器的結構圖如圖1。

        2 WinCC與數(shù)據(jù)庫的數(shù)據(jù)交換

        2.1 WinCC與VB的數(shù)據(jù)交換

        2.1.1 WinCC的OPC服務器設置

        WinCC的OPC服務器設置需要分幾步完成:

        圖1 OPC客戶程序訪問服務器結構圖

        1)在安裝WinCC的時候需要安裝OPC Server,具體方法是在安裝選項的Communication組件中,選擇OPC Server項。

        2)對 WinCC的 OPC服務器進行DCOM設置。具體方法是單擊“開始”菜單并選擇“運行”,輸入dcomcnfg,打開“組件服務”對話框;在此對話框中,單擊“組件服 務”——“我 的 電 腦 ”——“DCOM配置”——選擇“OPCServer.WinCC”——右鍵“屬性”按鈕,打開“OPCServer.WinCC 屬性”對話框;在此對話框中,單擊“安全”選項中自定義啟動和激活權限,在“標識”標簽中選擇“交互式用戶”選項。

        3)在完成上述步驟以后,打開組態(tài)好的WinCC監(jiān)控界面。參數(shù)設置界面如圖2所示。

        2.1.2 OPC客戶端的設計及編程

        利用Visual Basic開發(fā)OPC客戶程序時,要對DLL進行注冊。具體的方法是從VB菜單中選擇“工程”——“引用”,在可用的引用一覽表中,選擇OPC Automation 2.0后按確定。

        圖2 WinCC人機界面顯示

        1)VB窗體設計

        注冊完DLL以后,就要設計VB的窗體。在窗體上添加兩個Command按鈕,分別命名為連接服務器和退出。根據(jù)項目要求,需同步傳輸23個數(shù)據(jù),在窗體上布局23個Text控件會比較麻煩,本文采用編程的方式,在程序運行時,將23個Text控件同時顯示在窗體上。部分代碼如下:

        Load Text1(I)//上載Text控件數(shù)組

        Load Label1(I)//上載Label控件數(shù)組

        Label1(I).Left=((I-1)10)*(Label1(1).Width+2000)+Label1(1).Left //Label控件的橫坐標

        Label1(I).Top=((I-1)Mod 10)*(Label1(1).Height+100)+Label1(1).Top//Label控件的縱坐標

        Text1(I).Left=((I-1)10)*(Text1(1).Width+2200)+Text1(1).Left //Text控件的橫坐標

        Text1(I).Top=((I-1)Mod 10)*(Text1(1).Height+100)+Text1(1).Top//Text控件的縱坐標

        Label1(I).Visible=True

        Text1(I).Visible=True

        VB窗體如圖3。

        圖3 VB窗體設計

        2)OPC客戶端編程

        VB的OPC客戶端和OPC服務器之間數(shù)據(jù)互相通訊的主要源代碼如下:

        變量聲明

        Dim WithEvents objServer As OPCServer //OPC服務

        Dim WithEvents objGroup As OPCGroup //OPC組

        Dim objGroups As OPCGroups

        Dim objTestGrp As OPCGroup

        Dim objItems As OPCItems

        Dim lClientHandles(23)As Long//客戶句柄

        Dim ServerHandles()As Long//服務器句柄

        Dim lErrors()As Long

        Dim ItemIDs(23)As String//OPC的標簽

        Dim vtItemValues()As Variant//用于存儲OPC數(shù)據(jù)的地址

        Dim a(1 To 23)As Variant

        連接服務器

        Set objServer=New OPCServer//創(chuàng)建新的OPC服務器

        objServer.Connect("OPCServer.WinCC.1")

        //連接OPC服務器

        If objServer.ServerState=OPCRunning Then

        Option1.Value=True//連接服務器成功的標志

        添加OPC組和OPC標簽

        Set objGroups=objServer.OPCGroups//添加一個OPC組集合

        Set objTestGrp=objGroups.Add("TestGrp")

        //添加一個OPC組

        Set objItems=objTestGrp.OPCItems//建立OPC標簽集合

        For I=1 To 23//生成23個項標識符

        ItemIDs(I)="bb"&I

        lClientHandles(I)=I

        objItems.AddItems 23,ItemIDs,lClientHandles,ServerHandles,lErrors//添加OPC標簽

        斷開服務器

        objItems.Remove 23,ServerHandles,lErrors

        //清除OPC的標簽

        objGroups.Remove"TestGrp"http://清除 OPC 組

        objServer.Disconnect//斷開 OPC 的服務器

        Set objItems=Nothing

        Set objTestGrp=Nothing

        Set objServer=Nothing

        本程序是利用Timer1的Timer事件來進行數(shù)據(jù)更新的顯示,如果數(shù)據(jù)有新的更新就要導入到數(shù)據(jù)庫中,有關定時器的代碼將在下面介紹。

        2.2 VB與數(shù)據(jù)庫的數(shù)據(jù)交換

        當數(shù)據(jù)由WinCC傳輸?shù)絍B以后,由于VB不是一個存儲單元,所以要將數(shù)據(jù)存儲到指定的歸檔數(shù)據(jù)庫中,以備報表查詢。因為該項目的數(shù)據(jù)量不大,選用Access為歸檔數(shù)據(jù)庫。

        2.2.1 VB訪問數(shù)據(jù)庫的ADO接口

        在VB中,常用的數(shù)據(jù)訪問接口有下列幾種:Active數(shù)據(jù)對象ADO,開放式數(shù)據(jù)庫連接ODBC,遠程數(shù)據(jù)庫對象RDO,數(shù)據(jù)庫訪問對象DAO。其中ADO接口是Microsoft開發(fā)數(shù)據(jù)庫應用程序面向對象的新接口。采用了OLE DB的數(shù)據(jù)訪問模式,是數(shù)據(jù)訪問對象DAO、遠程數(shù)據(jù)對象RDO和開放數(shù)據(jù)庫互聯(lián)ODBC三種方式的擴展,具有更加簡單、靈活的操作性能[6]。

        ADO對象模型定義了一個可編程的分層對象集合,主要有三個對象成員Connection、Command和Recordset對象,以及幾個集合對象Errors、Parameters和Fileds等組成。

        2.2.2 VB利用ADO接口訪問數(shù)據(jù)庫

        在VB使用ADO控件訪問Access前,先要在Access中進行歸檔數(shù)據(jù)庫環(huán)境設置。在Access中建立一個名為溫度的數(shù)據(jù)庫,并在該數(shù)據(jù)庫的子目錄中新建一張表,命名為現(xiàn)場溫度記錄,這張表用于存儲從WinCC服務器中獲得的現(xiàn)場溫度數(shù)據(jù)。接著,在VB的開發(fā)環(huán)境下開發(fā)與數(shù)據(jù)庫連接的程序,本次使用的VB控件主要是Timer和Adodc,相應的程序設計步驟如下。

        1)建立VB與歸檔數(shù)據(jù)庫鏈接。在VB中使用Adodc控件前,必須先對其進行設置,具體方法是:

        首先,通過“工程”——“部件”菜單命令選擇“Microsoft ADO Data Control 6.0(SP6)(OLEDB)”選項,將ADO數(shù)據(jù)控件添加到工具箱,點擊ADO數(shù)據(jù)控件,將其添加到窗體上。

        然后,設置Adodc2的ConnectionString屬性,在Adodc2控件上右鍵“Adodc屬性”——使用連接字符串——單擊“生成”按鈕——選擇 Microsoft Jet 4.0 OLE DB Provider——單擊“下一步”按鈕——選擇或輸入數(shù)據(jù)庫名稱——單擊“測試連接”按鈕——彈出測試連接成功對話框—點擊“確定”按鈕即可。

        最后,設置Adodc2的RecordSource屬性,選擇命令類型為2-adCmdTable,在表名項選擇現(xiàn)場溫度記錄。

        根據(jù)工藝要求,本項目需要同步傳輸23個數(shù)據(jù),所以需要23個Text控件,這些控件是通過編程來顯現(xiàn)在VB的窗體上的,對于這些控件的ADO屬性設置,我們也需編程實現(xiàn),部分代碼如下:

        Set Text1(I).DataSource=Adodc2'將所有 Text控件的 DataSource 屬性設置為Adodc2

        設置所有Text控件的DataFiled屬性

        For I=1 To 8

        Text1(I).DataField="體熱風"& I& "溫度"

        Next

        For I=9 To 16

        Text1(I).DataField="帽熱風"&I-8&"溫度"Next

        Text1(17).DataField="體水槽溫度"

        Text1(18).DataField="體膠罐溫度"

        Text1(19).DataField="體膠液溫度"

        Text1(20).DataField="帽水槽溫度"

        Text1(21).DataField="帽膠罐溫度"

        Text1(22).DataField="帽膠液溫度"

        Text1(23).DataField="廠房溫度"

        2)實現(xiàn)實時數(shù)據(jù)的存儲。在窗體上插入一個定時器控件,命名為Timer1,將其Interval屬性設置為100,在Timer1_Timer()事件中編程。為了不產生冗余,建了一個數(shù)據(jù)緩沖數(shù)組,把每次提取出來的數(shù)據(jù)同之前的數(shù)據(jù)緩沖組中的值作對比,若不同就插入數(shù)據(jù)庫,同時更新數(shù)據(jù)緩沖數(shù)組中的值。部分代碼如下:

        PrivateSub Timer1_Timer()

        Dim Update As Boolean

        Dim I As Integer

        SyncRead OPCCache,vtItemValues,lErrors

        //同步讀取WinCC的數(shù)據(jù)

        For I=1 To 23

        If vtItemValues(I)<>a(I)Then//將OPC標簽數(shù)組中的數(shù)和緩沖數(shù)組中的數(shù)進行對比

        Update=True

        Exit For

        End If

        Next

        If Update Then

        Adodc2.Recordset.AddNew//向 Access數(shù)據(jù)庫中插入數(shù)據(jù)

        Adodc2.Recordset.Fields("日期及時間")=Now//向 Access數(shù)據(jù)庫中插入當前的日期和時間

        For I=1 To 23

        Text1(I).Text=vtItemValues(I)

        a(I)=vtItemValues(I)

        Next

        Adodc2.Recordset.Update//保存插入到數(shù)據(jù)庫中的數(shù)據(jù)

        End If

        End Sub

        部分實時數(shù)據(jù)進入表后如圖4。

        圖4 數(shù)據(jù)存入Access數(shù)據(jù)庫

        3 實時數(shù)據(jù)的查詢

        由圖4可知,只要WinCC從下位機采集的這一組數(shù)據(jù)中的任何一個數(shù)據(jù)有變化,那么該組數(shù)據(jù)就會傳入到數(shù)據(jù)庫中。根據(jù)工藝要求可知,每個采集點的溫度均有一定的范圍,超過這個范圍就會對設備或產品產生一定的損害,所以需建立一個查詢,當溫度高于該范圍時,將其篩選出來,插入到該數(shù)據(jù)庫的另外一個表中,供以后的分析。構造的SQL語句通式如下:

        Insert into+“表名”+select+“選擇內容”+from+“表名”+where+“條件”

        建立查詢的相關步驟如下:

        1)在數(shù)據(jù)庫溫度中再建立一張新表,命名為查詢溫度,用來存儲查詢出來的超出范圍的溫度。

        2)在VB窗體上再布局一個ADO控件,命名為Adodc1,將其的ConnectionString設置的與Adodc2一樣,RecordSource屬性設置為查詢溫度。然后編寫代碼:Adodc1.RecordSource="SQL語句"即可以進行相關的查詢。

        4 結束語

        利用VB設計的OPC客戶端數(shù)據(jù)接口,傳輸數(shù)據(jù)穩(wěn)定,實時性好,能同時傳輸大批量數(shù)據(jù)。ADO數(shù)據(jù)庫接口簡單,傳輸穩(wěn)定,實時性好,技術成熟。通過OPC技術和ADO接口有效地完成了WinCC到數(shù)據(jù)庫轉儲功能。為企業(yè)進一步分析數(shù)據(jù),利用數(shù)據(jù),提供了可靠的數(shù)據(jù)源。

        [1]甄立東.西門子 WinCC V7基礎與應用[M].北京:機械工業(yè)出版社,2011.

        [2]日本OPC協(xié)會.OPC應用程序入門[M].日本:2002.

        [3]韋源,于平.Visual Basic程序設計基礎[M].北京:清華大學出版社,2001.

        [4]朱翠苗,鄭廣成.VB訪問SQL Server數(shù)據(jù)庫的幾種方案[J].河南科技大學學報,2004,3(25):66-69.

        [5]林啟寬.用 VB開發(fā) WinCC的OPC客戶機[J].工業(yè)控制計算機,2006,19(8):80-81.

        [6]趙秀梅.基于WinCC工控組態(tài)軟件的關系數(shù)據(jù)庫的研究[J].微型機與應用,2010,29(6):1-2.

        猜你喜歡
        窗體控件客戶端
        試談Access 2007數(shù)據(jù)庫在林業(yè)檔案管理中的應用
        檔案天地(2019年5期)2019-06-12 05:12:02
        關于.net控件數(shù)組的探討
        軟件(2018年7期)2018-08-13 09:44:42
        縣級臺在突發(fā)事件報道中如何應用手機客戶端
        傳媒評論(2018年4期)2018-06-27 08:20:24
        孵化垂直頻道:新聞客戶端新策略
        傳媒評論(2018年4期)2018-06-27 08:20:16
        基于Vanconnect的智能家居瘦客戶端的設計與實現(xiàn)
        電子測試(2018年10期)2018-06-26 05:53:34
        基于LayeredWindow的異形窗體局部刷新
        中文信息(2014年2期)2014-03-06 23:49:14
        巧設WPS窗體控件讓表格填寫更規(guī)范
        客戶端空間數(shù)據(jù)緩存策略
        就這樣玩會VBA中常見的自定義控件
        電腦迷(2012年24期)2012-04-29 00:44:03
        WinCE.net下圖形用戶界面的開發(fā)
        7777精品伊人久久久大香线蕉| 色婷婷精品久久二区二区蜜臀av | 激情97综合亚洲色婷婷五| 亚洲综合网站精品一区二区| 提供最新的在線欧美综合一区| 一区二区三区日本大片| 中文字幕日韩精品亚洲精品| 狠狠cao日日橹夜夜十橹| 国产女主播喷水视频在线观看| 亚洲精品中文字幕不卡在线| 亚洲天堂一区二区三区| 无码专区亚洲综合另类| 人妻精品无码一区二区三区| 第九色区Aⅴ天堂| 人妻夜夜爽天天爽三区麻豆av| 国产精品女人呻吟在线观看| 亚州综合激情另类久久久| 黑丝美女喷水在线观看| 丝袜美腿在线观看一区| 美女视频黄的全免费视频网站| 日韩丝袜亚洲国产欧美一区| 亚洲日本视频一区二区三区| 国产av精品麻豆网址| 天美传媒一区二区| 国产亚洲sss在线观看| av在线一区二区三区不卡| 亚洲 欧美 日韩 国产综合 在线| 亚洲影院天堂中文av色| 亚洲国产精品第一区二区三区 | 老熟妇乱子伦牲交视频| 久热综合在线亚洲精品| 久久精品无码一区二区三区不卡| 在线日本国产成人免费精品| 免费无码a片一区二三区| 国产午夜亚洲精品不卡福利| 青青草免费激情自拍视频| 亚洲97成人在线视频| 男男啪啪激烈高潮cc漫画免费| 色伊人国产高清在线| 亚洲精品中文字幕乱码无线| 日本三级吃奶头添泬|