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无码| 美女高潮全身流白浆福利区| 色吊丝av中文字幕| 伊伊人成亚洲综合人网7777| 国产手机在线ΑⅤ片无码观看| 国产第一页屁屁影院| 久久久久无码精品| 99视频免费观看| 欧美精品啪啪| 在线看AV天堂| 精品亚洲欧美中文字幕在线看| 国产在线专区| 成人在线亚洲| 欧美日韩免费| 国产毛片片精品天天看视频| 国产尤物视频网址导航| 亚洲av无码久久无遮挡| 国产手机在线观看| 国产成人无码AV在线播放动漫| 91人妻日韩人妻无码专区精品| 亚洲一区二区精品无码久久久| 久久久久亚洲精品成人网| 激情亚洲天堂| 男女猛烈无遮挡午夜视频| 99久久无色码中文字幕| 成人一区在线| 亚洲国产成人麻豆精品| 国产成人亚洲毛片| 天天摸夜夜操| 国产91丝袜在线播放动漫| 国产精品黑色丝袜的老师| 日韩成人免费网站| 青青草原国产免费av观看| 大学生久久香蕉国产线观看| 亚洲伊人天堂| 久久黄色毛片| 国产精品刺激对白在线| 欧美成在线视频| 亚洲色精品国产一区二区三区| 99精品国产电影| 激情综合网激情综合| 福利视频一区| 久久男人视频| 丰满的少妇人妻无码区| 国产一区在线观看无码| 久久青草视频| 在线视频亚洲色图| 精品日韩亚洲欧美高清a| 久久综合色天堂av| 精品国产成人a在线观看| 9久久伊人精品综合| 男人的天堂久久精品激情| 在线人成精品免费视频| 欧美高清三区| 丰满少妇αⅴ无码区| 97国内精品久久久久不卡| 日韩成人午夜| 亚洲精品综合一二三区在线| 99精品国产高清一区二区| 97se亚洲综合不卡| 欧美视频在线观看第一页| 国产精品毛片一区| 国产精品嫩草影院av| 午夜福利无码一区二区| 伊人久综合| 国产情精品嫩草影院88av| 成人日韩视频| 国产97视频在线| 久久亚洲日本不卡一区二区| 国产美女主播一级成人毛片| 欧美性天天| 欧美日韩北条麻妃一区二区| 国产麻豆va精品视频| 亚洲动漫h| 婷婷色一二三区波多野衣| 制服丝袜一区| 一级一级特黄女人精品毛片| 国产91精品调教在线播放| 国产在线麻豆波多野结衣| 浮力影院国产第一页| 91青青草视频在线观看的| 国产在线麻豆波多野结衣|