999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VB的WinCC數據歸檔及報表輸出的研究和應用

2016-05-04 02:09:42徐新樂王克偉應小昆沈明艷
新技術新工藝 2016年1期

蘇 震,徐新樂,王克偉,孫 林,應小昆,曹 虎,沈明艷

(中國兵器工業新技術推廣研究所,北京 100089)

?

基于VB的WinCC數據歸檔及報表輸出的研究和應用

蘇震,徐新樂,王克偉,孫林,應小昆,曹虎,沈明艷

(中國兵器工業新技術推廣研究所,北京 100089)

摘要:隨著信息化步伐的加快,企業對生產數據歸檔的要求越來越高,利用傳統方式實現WinCC數據歸檔已不能滿足生產需要。為了解決WinCC數據歸檔過程中無法記錄文本型數據,不能隨意查詢、更改歸檔數據等問題,采用了應用開發效率高的VB軟件和數據存儲功能強大的SQL軟件對WinCC進行二次開發的可行方案。該方案實現了對WinCC過程數據的高級歸檔,滿足了企業對數據歸檔的要求,同時避免了使用西門子專用歸檔選件帶來的高開發成本。目前,該方案已在工程應用中取得了較好效果,具有一定的應用推廣價值。

關鍵詞:WinCC;數據歸檔;VB;SQL;ADO

WinCC是西門子公司在自動化領域一款功能強大的HMI組態監控軟件,它可以歸檔生產過程數據到SQL數據庫,并以曲線或者表格的形式顯示出來;但WinCC過程數據歸檔無法記錄文本類型的數據,且本文涉及的SQL是由SIEMENS為WinCC做了二次開發的,采用了一些獨有的技術,只能通過WinCC DataMonitor系統組件和系統選件Connectivity Pack才能實現歸檔數據的訪問[1]。使用這2個工具都需要購買授權軟件,而且僅能只讀訪問,WinCC禁止用戶對其歸檔數據進行修改和復雜查詢,并且WinCC自帶的報表功能格式死板,缺乏靈活性。為了彌補這些不足,可利用VB這類開發工具實現對WinCC的二次開發,將WinCC、VB和SQL有機集成,實現WinCC數據高級歸檔。

1系統概述

某熱處理生產線的控制系統采用西門子公司現場控制設備搭建,主要實現溫度、壓力和流量等數據的監控,現場信號由AI通道和ModBus轉Profibus-DP通道送到300PLC主站,PLC把各站送來的數據按要求處理后,通過以太網送到上位機WinCC,對這些數據進行分析處理后進行儲存和報表輸出。整個系統結構示意圖如圖1所示。

圖1 系統結構示意圖

2技術策略

2.1ADO

ADO是一種程序對象,用于表示用戶數據庫中的數據結構和所包含的數據。在Microsoft Visual Basic編輯器中,可以使用ADO對象以及ADO的附加組件(稱為Microsoft ADO Extensions for DLL and Security(ADOX))來創建、修改、查詢和檢驗數據庫,或者訪問外部數據源,還可在代碼中使用ADO來操作數據庫中的數據。也就是說,ADO是一個面向對象的COM組件庫,用ADO訪問數據庫,就是利用ADO對象來操作數據庫中的數據。它的最大特點是簡單、易用。

2.2VB和SQL

Visual Basic是由Microsoft公司開發的一種基于BISIC可視化、面向對象和采用事件驅動方式的結構化高級編程設計語言,可用于開發Windows環境下的各類應用程序[2]。VB作為一款應用成熟、穩定易學的開發工具,與ADO是完全兼容的。

結構化查詢語言(Structured Query Language,SQL)是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統。SQL語言以其好學好用、結構簡單和兼容性強等特點在其他領域得到了廣泛應用,SQL支持包括字符型、文本型、數值型、邏輯型和日期型等幾乎所有常用數據類型。

2.3歸檔模型

系統通過PLC等控制器采集現場數據到自身存儲器,上位機WinCC和下位機通信實現現場監控,VB通過ADO對象訪問數據并進行分析處理,將數據存儲到指定的SQL數據庫中,最后通過對SQL數據庫的操作實現對過程數據的高級歸檔和報表輸出。數據歸檔模型如圖2所示。

圖2 數據歸檔模型

3高級歸檔的實現

報表系統通過PLC采集現場數據,應用VB軟件中的ADO數據接口訪問WinCC中的數據,經過分析處理存入SQL數據庫中,然后通過VB軟件對SQL數據庫進行查詢,將查詢結果傳輸到控件(本系統采用Microsoft Windows Common Controls 6.0控件)中以報表的形式顯示、輸出。

使用ADO技術開發數據庫應用程序主要有2種方法:1)在應用程序中使用ActiveX控件,該方法可以最大程度地簡化應用程序設計,只需要將ADO控件的屬性設置好,便可以訪問數據庫中的數據;2)在應用程序中直接聲明或新建ADO對象對數據進行操作。第1種方法的特點是操作簡單,但是效率低,對程序的控制相對較弱;第2種方法對程序的操作要靈活的多,效率高。本文采用第2種方法進行開發。

3.1連接到數據源

首先,配置SQL數據庫的環境。在SQL中建立數據庫,起名為report6182,并根據需求在數據庫中建立2個數據表(area1data、area2data)及其關系。然后,在VB環境下進行數據庫的連接。

要使用ADO對象應先為當前工程引用ADO對象庫,方法是:執行“工程”菜單中的“引用”命令,在對話框中選中“Microsoft ActiveX Data Object 2.0 Library”。隨后開發數據庫源連接對象代碼,在該對象中配置數據庫驅動程序、數據庫服務器地址、數據庫名稱、數據庫端口號以及用戶名和密碼,配置信息正確后即可連接成功。代碼如下:

Public cn As New ADODB.Connection

Public WinCC As Object

Set WinCC = CreateObject("WinCC-Runtime-Project")

cn.Open "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;DATABASE=report6182;

UID=root;PWD=root;OPTION=3;stmt=SET NAMES GBK"

3.2指定訪問數據源的命令

數據庫連接成功后,就可以通過ADO進行數據的采集、處理和轉存了。在VB軟件中加入計時器控件,利用計時器時間和邏輯判斷語句,按照用戶要求在指定條件下按指定周期采集WinCC中的變量值,進行求和、平均等處理后寫入數據庫,以備報表查詢。讀取變量主要代碼如下:

If formercharge <> charge And charge >= 1 Then

If stuff2 = 0 Or chargecount >= Val(tempsectioncount) Then

startrecordtime1 = Format(Now(), "yyyy-mm-dd hh:MM:ss")

sqlstr = "insert into area1data(recordtime,thick,number,action,tem1up,tem1dn,tem2up,tem2dn) values ('" + taketime + "'"

sqlstr = sqlstr + ",'" + Trim(Str(WinCC.getValue("BoardThick"))) + "'"

sqlstr = sqlstr + ",''"

sqlstr = sqlstr + ",'出爐'"

sqlstr = sqlstr + ",'" + Trim(Str(Round(WinCC.getValue("TE101")))) + "'"

sqlstr = sqlstr + ",'" + Trim(Str(Round(WinCC.getValue("TE102")))) + "'"

sqlstr = sqlstr + ",'" + Trim(Str(Round(WinCC.getValue("TE103")))) + "'"

sqlstr = sqlstr + ",'" + Trim(Str(Round(WinCC.getValue("TE104")))) + "')"

End If

cn.Execute sqlstr

End If

3.3將命令執行結果顯示輸出

將數據庫中的數據查詢出來的結果送到Microsoft Windows Common Controls 6.0控件中進行顯示輸出(見圖3)。

圖3 輸出界面

顯示輸出主要代碼如下:

Function displaydata()

Dim recordsetFields As New ADODB.Recordset

recordsetFields.CursorLocation = adUseClient

recordsetFields.Open "select * from area1data order by recordtime desc limit 500", cn, adOpenKeyset, adLockOptimistic

With frmMain

.listTables.ColumnHeaders.Clear

.listTables.ListItems.Clear

.listTables.Refresh

Dim clmX As ColumnHeader

Set clmX = .listTables.ColumnHeaders.Add(, , "一段", 800)

Set clmX = .listTables.ColumnHeaders.Add(, , "時間", 2200)

Set clmX = .listTables.ColumnHeaders.Add(, , "厚度", 800)

Set clmX = .listTables.ColumnHeaders.Add(, , "批號", 1500)

Set clmX = .listTables.ColumnHeaders.Add(, , "動作", 800)

Set clmX = .listTables.ColumnHeaders.Add(, , "一區上溫度", 1200)

Set clmX = .listTables.ColumnHeaders.Add(, , "一區下溫度", 1200)

Set clmX = .listTables.ColumnHeaders.Add(, , "二區上溫度", 1200)

Set clmX = .listTables.ColumnHeaders.Add(, , "二區下溫度", 1200)

For i = 1 To recordsetFields.RecordCount

Set itmX = .listTables.ListItems.Add(, , CStr(i))

itmX.SubItems(1) = NullCellProcess(recordsetFields.fields(1).Value)

itmX.SubItems(2) = NullCellProcess(recordsetFields.fields(2).Value)

itmX.SubItems(3) = NullCellProcess(recordsetFields.fields(3).Value)

itmX.SubItems(4) = NullCellProcess(recordsetFields.fields(4).Value)

itmX.SubItems(5) = NullCellProcess(recordsetFields.fields(5).Value)

itmX.SubItems(6) = NullCellProcess(recordsetFields.fields(6).Value)

itmX.SubItems(7) = NullCellProcess(recordsetFields.fields(7).Value)

itmX.SubItems(8) = NullCellProcess(recordsetFields.fields(8).Value)

recordsetFields.MoveNext

Next

End With

End Function

3.4查詢打印等功能輸出

有了WinCC中各項生產過程數據,就可以在VB軟件中構造不同的SQL語句來實現復雜報表的各種功能,構造SQL語句通式如下:strSql = "select 選擇內容 from 表名 where 條件",查詢界面如圖4所示。按用戶要求,使用printer或者將數據送入Excel軟件中排版并進行打印。

圖4 查詢界面

4結語

在ADO技術的基礎上,應用VB軟件實現了WinCC數據的高級歸檔。該方案解決了WinCC不能歸檔文本型變量的問題,結構簡單,制作報表方便,便于修改、刪除歸檔中的數據,具有良好的接口,也有很強的可擴展性和通用性,可直接移植到其他項目。實踐證明,該方案不必采購WinCC的授權軟件就可實現WinCC數據高級歸檔和輸出,具有一定的推廣應用價值。

參考文獻

[1] 西門子(中國)有限公司自動化與驅動集團. 深入淺出西門子WinCC V6[M]. 北京:北京航空航天大學出版社,2004.

[2] 李明輝,張秦. 利用VB實現WinCC數據高級歸檔的研究和應用[J]. 自動化儀表,2012(6):36-37.

責任編輯鄭練

Research and Application of WinCC Data Archiving and Report Output based on VB

SU Zhen, XU Xinle, WANG Kewei, SUN Lin, YING Xiaokun, CAO Hu, SHEN Mingyan

(Advanced Technology Generalization Institute of CNGC, Beijing 100089, China)

Abstract:With the rapid development of information and the increasing demand for production data archiving, use traditional method to realize WinCC data archiving cannot meet the needs of production. In order to solve the problems of WinCC data archiving such as unable to record text data; cannot query and modify data, a feasible scheme that using VB with high developing efficient and SQL with powerful storage capabilities to secondary development for WinCC was used. The advanced data archiving of WinCC is implemented by this scheme that satisfies data archiving requirement of enterprises while avoid using high cost Siemens exclusive option. Currently it has achieved good results in engineering application and has a certain application value.

Key words:WinCC, data archiving, VB, SQL, ADO

收稿日期:2015-10-09

作者簡介:蘇震(1985-),男,工程師,碩士,主要從事控制理論與控制工程等方面的研究。

中圖分類號:TP 311

文獻標志碼:A

主站蜘蛛池模板: 亚洲三级片在线看| 欧洲在线免费视频| 精品一区二区无码av| 在线观看国产精品一区| 亚洲免费福利视频| 欧美一级片在线| 亚洲国产精品不卡在线| 亚洲欧美一区在线| 国产内射一区亚洲| 国产18在线| 亚洲国产成人久久77| 国产中文在线亚洲精品官网| 2019年国产精品自拍不卡| a毛片在线免费观看| 久久网综合| 日韩视频福利| 狠狠干综合| 天堂成人在线| 亚洲精品视频网| 日韩一级二级三级| 日本高清在线看免费观看| 久久精品国产999大香线焦| 在线精品欧美日韩| 国产精品成人AⅤ在线一二三四| 久久精品最新免费国产成人| 欧美一区国产| 免费观看欧美性一级| 成年人国产网站| 日韩av无码精品专区| 日韩精品毛片| 在线国产你懂的| 国产丝袜丝视频在线观看| 国产精品成人不卡在线观看| 亚洲精品波多野结衣| 欧洲欧美人成免费全部视频| 亚洲国产精品一区二区高清无码久久| 亚洲最新在线| 亚洲V日韩V无码一区二区| 国产黄色免费看| 97无码免费人妻超级碰碰碰| 亚洲天堂精品在线| 在线毛片网站| 亚洲人在线| 欧美日韩国产精品综合| 日韩国产一区二区三区无码| 日本成人精品视频| 亚洲A∨无码精品午夜在线观看| 日本一区二区不卡视频| 午夜福利视频一区| 精品1区2区3区| 日韩a级毛片| 亚洲精品视频免费| 伊人久久大香线蕉综合影视| 黄色在线不卡| 国产在线观看高清不卡| 香蕉国产精品视频| 蜜桃视频一区二区| 久久久久久尹人网香蕉| 最新国语自产精品视频在| 精品成人一区二区三区电影| 欧美成人一级| 亚洲精品自拍区在线观看| 亚洲欧美成人在线视频| 国产精品yjizz视频网一二区| 一级不卡毛片| 国产极品粉嫩小泬免费看| 欧美日韩综合网| 日本高清视频在线www色| 色综合狠狠操| 久久精品亚洲专区| 国产噜噜噜视频在线观看| 日韩 欧美 小说 综合网 另类| 亚洲欧美精品一中文字幕| 97在线免费| av在线5g无码天天| 欧美午夜网站| 国产中文一区a级毛片视频| 欧美精品亚洲精品日韩专区| 国精品91人妻无码一区二区三区| 欧美综合成人| 久草中文网| 日本人妻丰满熟妇区|