Excel,读取WinCC,数据库的程序

2016-09-27 百科 阅读:

Excel,读取WinCC,数据库的程序(一)
WinCC数据库SQL访问

WinCC V6.2 数据库访问

我们现在的WinCC教材是以WinCC V6.0 SP3为软件平台而开发的,而之后,Siemens又推出了V6.2、V7.0版本的WinCC。目前,BU大力推的是V7.0的WinCC,我们的WinCC教材也准备升级为V7.0版本。但从用户的角度来说,对V7.0版本的WinCC还有一个逐步接受的过程,以后,我们碰到的客户,可能很多还是使用V6.2版本的软件。所以,我们还是有必要熟悉一下WinCC V6.2。本文主要介绍WinCC V6.2的数据库访问,由于WinCC V7.0和WinCC V6.2采用的都是SQL Server 2005数据库,故本文对了解WinCC V7.0的数据库访问也是有帮助的。

(一)若采用WinCC V6.2,原来的教材中有关操作和界面的变化 1. 打开SQL Server管理工具

SQL Server 2005和SQL Server 2000在界面上还是有很大不同的,原来的企业管理器变成了SQL Server Management Studio (SSMS)。

图1. 启动SSMS

2. 选择身份认证方式:

WinCC 系统在SQL Server中注册了自己的账户,如 WinCCAdmin、WinCCConnect等,所以,WinCC使用到了SQL Server的认证方式。外部程序访问数据库时,可以采用Windows 集成的认证方式。

图2. 选择身份认证方式

图3. WinCC在SQL Server中注册的用户

3. 查看ValueID和ValueName的对应关系

图4. 查看ValueID和ValueName的对应关系

4. 查看组态的消息

图5. 查看组态的消息

5. 查看归档片段的消息

图6. 查看归档片段的消息

6.数据传输服务

图7. 选择数据导出服务

图8. 选择数据源(与原来的DTS类似)

图9. 设置数据源

Excel,读取WinCC,数据库的程序(二)
如何在Excel中访问WinCC变量归档数据

1 功能说明

在Microsoft office Excel中访问WinCC的历史数据,实现如下图所示的报表:

图1: Excel中访问WinCC的历史数据生成报表【Excel,读取WinCC,数据库的程序】

选择日期后,可以生成当天的风机参数日报表(报表数据来自WinCC)。

2 软件环境

本地计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2003 远程计算机:Windows XP SP3英文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 2003

3 WinCC/Connectivity Pack 介绍

WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过 WinCC/Connectivity Pack提供的OLE-DB接口才能够解压并读取这些数据。

3.1 连接字符串

“Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;“

其中:

Catalog:WinCC运行数据库的名称

注意:当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。

建议使用WinCC系统变量 “@DatasourceNameRT” 获得当前的Catalog。

Data Source :服务器名称

本地:“.\WinCC” 或者 “<计算机名称>\WinCC”

远程:“<计算机名称>\WinCC”

3.2 查询语句

“TAG:R,<ValueID or ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]” 其中:

ValueName:格式为“ArchiveName\Value_Name”,可以使用多个名称。 TimeBegin,TimeEnd:时间范围,格式 “YYYY-MM-DD hh:mm:ss.msc”。 SQL_Clause:SQL 语法中的过滤标准。

3.3 查询结果【Excel,读取WinCC,数据库的程序】

注意,WinCC的归档数据是使用UTC(协调世界时)时间保存的。

4 本地计算机访问

4.1 WinCC组态

4.1.1 WinCC中创建变量

Fan1_T1:进口温度

Fan1_T2:出口温度

Fan1_P1:进口压力

Fan1_P2:出口压力

4.1.2 变量归档组态

1)对以上变量进行归档,归档周期为1小时:

图2: 变量归档

2)设置整点归档

选择“1小时”定时器,右键,选择“属性”:

图3:定时器设置

在定时器属性对话框中,设置输入循环起始点为0分0秒:

图4:定时器属性设置

4.2 Excel组态

4.2.1 创建Excel模板

创建如下图所示的Excel模板:

Excel,读取WinCC,数据库的程序(三)
WinCC和EXCEL数据传递

1、

DDE简介

动态数据交换(DDE)是基于Windows的消息机制,两个Windows应用程序通过相互之间传递消息进行“对话”,这两个程序被分别称为“服务器”和“客户”。DDE服务器是一个维护着其他Windows程序可能使用的数据程序,而DDE

客户则是从服务器获得这些数据的程序。

DDE对话是由客户程序发动的。客户程序将一条称为WM_DDE_INTITIATE的消息发给当前运行的所有Windows程序,这条消息指明了客户程序所需要的数据类别,拥有这些数据的DDE服务器可以响应这条消息,这样一个对话就

开始了。

DDE的对话方式有3种: ①服务器数据变化时,直接把数据送给客户,由客户对这些数据进行处理,这类对话方式称为热链;②服务器的数据变化时,服务器通知客户,再由客户取数据,这种方式称为温链; ③由客户申请数据、

服务器发送数据的方式称为冷链。

一、Wincc作为DDE的客户端,Excel作为DDE服务器(本地)

1、在变量管理上按鼠标右键--添加新的驱动程序--选“windows dde.chn”

图1

2、在DDE上按鼠标右键--新驱动程序连接--点属性,在其连接属性中:

“计算机名称”为空;“应用程序”为excel;“主题”为[]工作表名,比如[DDE.xls]sheet1。

图2

3、在DDE\excel下建变量,在变量属性中选择地址,条目名称填:r行数c列数,比如r1c1(表示第一行

第一列的单元格),重复步骤3可以加入更多的DDE变量

图3

4、Excel程序

图4

Wincc程序

图5

5 完成

用OPC做比较省事。

WinCC做OPC Server,Excel做OPC Client。

这种情况下,WinCC端不需要做任何设置,只要在Excel 里用少量的代码就能实现双方的通讯。

对于WINCC与S7-300的通讯,首先要确定PLC的通讯口类型,PLC一般都集成了MPI/DP口,还可以安装通讯模块。计算机(PC)上安装适当的通讯卡(不同的通讯卡支持的通讯协议不同)。看你需要啦!

其次是WINCC软件里的通讯协议要与PC机对应。WINCC提供了SIMATIC S7 PROTOCOL SUITE 通讯驱动程序,包含了多种通讯协议!

最终还有自己亲自实际操作了才有深刻的了解的!!

Sub X6309X94AE9X0000X6539_OnClick(Byval Item)

Dim fso,myfile

Set fso = CreateObject("scripting.FileSystemObject")

Set MyFile = fso.GetFile("d:\Excelcode.xls")

Dim ObjExcelApp

Set objExcelApp = CreateObject("Excel.Application")

'objExcelApp.Visible = True

objExcelApp.Workbooks.Open MyFile

'上面的程序段是为了打开d盘下叫Excelcode.xls名字的excel文件

objExcelApp.worksheets ("sheet1").Cells(1, 1).VAlue = HMIRuntime.Tags("usercodenew1").read

objExcelApp.ActiveWorkbook.Save

'上面两行的作用是将wincc变量"usercodenew1"的值写到Excel表中的A1格子里面,并且保持一下

Dim coldold

Set coldold=HMIRuntime.Tags("usercodeold1")

coldold.Value = objExcelApp.worksheets ("sheet1").Cells(1, 1).value

'上面这两句的作用是将刚才保持到Excel表格中的数据重新读回wincc,存到"usercodeold1"变量中,当然现在其实并

没有存入"usercodeold1"变量,只是存在了叫coldold的临时变量里面

objExcelApp.Workbooks.Close

objExcelApp.Quit

Set ObjEXceLapp = Nothing

'到这里为止,我们可以通过上面的语句关闭刚才打开的excel程序了

coldold.Write

'最后是把读到的excel值从临时变量coldold中写入它对应的"usercodeold1"变量中【Excel,读取WinCC,数据库的程序】

End Sub

上面这个例子已经调试通过。网上有很多wincc值写入excel中的例子,一直找不到从excel中读取数据到wincc中的

例子,结合网上朋友的一些经验,这里给出个小例子,供大家参考。

估计考虑到后些天要用到EXCEL与WINCC的通讯,我看了些

书,在西门子的论坛上看到了一个现场做好的通讯成功例子.通过自己来做,通讯成功.

例子地址:/club/bbs/post.asp?b_id=5&a_i

d=53940&s_id=0&num=49#anch

现总结一下:

1 WINCC作为OPC服务器,勿需添加OPC通道.在例子中,只在内部变量中,建立6个内部变量,内部变量为有符号的16位数,名称分别为,a,b,c,d,e,f.(当然如果身边有PLC在,可以建立过程变量,为了方便运行,建立内部变量),分别在a,b,c,d,e,f中的限制/报表中,设置其开始值,为1,2,3,4,5,6.

注意:计算机-->属性中的计算机名称要与本计算机名称一致

在WINCC中建立一页面,用按钮来改变a,b,c,d,e,f的值,如果通讯成功,在EXCEL中也会随之改变.

2 新建立一个EXCEL文件,打开文件,工具-->宏-->VB编辑器,打开EXCEL的VB编辑器.

3 在VB编辑器里,工具-->引用,在弹出窗口中,找Siemens OPC DAAutomation 2.0,勾上 :)

4 双击sheet1,打开sheet1的代码窗口,然后将程序(程序代码在页面的最后)复制到代码窗口.

【Excel,读取WinCC,数据库的程序】

5 在EXCEL的上分别对应

C2-->计算机名 C3-->a C4-->b C5-->c C6-->d C7-->e C8-->f

6 在EXCEL总,工具-->宏,选择sheet1.startclient,启动

7 完了

代码:

Option Explicit

Option Base 1

Const ServerName = "OPCServer.WinCC"

【Excel,读取WinCC,数据库的程序】

Dim WithEvents MyOPCServer As OPCServer

Dim WithEvents MyOPCGroup As OPCGroup

Dim MyOPCGroupColl As OPCGroups

Dim MyOPCItemColl As OPCItems

Dim MyOPCItems As OPCItems

Dim MyOPCItem As OPCItem

Dim ClientHandles(6) As Long

Dim ServerHandles() As Long

Dim Values(1) As Variant

Dim Errors() As Long

Dim ItemIDs(6) As String

Dim GroupName As String

Dim NodeName As String

Dim itemv(6) As Variant

Dim ii As Integer

'-------------------------------------------------

--------------------

' Sub StartClient()

' 目的:连接至OPC_server,创建组和添加条目

'-------------------------------------------------

--------------------

Sub StartClient()

' On Error GoTo ErrorHandler

'----------- 可以自由选择ClientHandle和GroupName

【Excel,读取WinCC,数据库的程序】

For ii = 1 To 6

ClientHandles(ii) = ii

Next ii

GroupName = "MyGroup"

'----------- 从单元“A1”得到ItemID

NodeName = Range("c2").Value

ItemIDs(1) = Range("c3").Value

ItemIDs(2) = Range("c4").Value

ItemIDs(3) = Range("c5").Value

ItemIDs(4) = Range("c6").Value

ItemIDs(5) = Range("c7").Value

ItemIDs(6) = Range("c8").Value

'----------- 得到一个OPC服务器的实例

Set MyOPCServer = New OPCServer

Excel,读取WinCC,数据库的程序

http://m.zhuodaoren.com/shenghuo430537/

推荐访问:excel读取sql数据库

百科推荐文章

推荐内容

上一篇:中国近代师范教育 下一篇:企业财务报表分析的影响因素