VBA如何读取WINCC变量归挡的内容 包括归档的时间值

作者&投稿:住莲 (若有异议请与网页底部的电邮联系)
如何读取WINCC变量归档时间~

可以生成变量CSV文件,之后使用脚本读取时间。

摘 要 本文通过制作一个日报表的过程,介绍了在本地或远程计算机上如何通过Excel访问WinCC的变量归档数据。
关键词 WinCC、Excel、VBA、脚本、连通性软件包
Key Words WinCC、Excel、VBA、Script、Connectivity Pack


目 录

1 功能说明
2 软件环境
3 WinCC/Connectivity Pack 介绍
3.1 连接字符串
3.2 查询语句
3.3 查询结果
4 本地计算机访问
4.1 WinCC组态
4.1.1 WinCC中创建变量
4.1.2 变量归档组态
4.2 Excel组态
4.2.1 创建Excel模板
4.2.2 在Excel中编写脚本
4.2.3 调用脚本
4.2.4 运行Excel中的脚本
5 远程计算机访问
5.1 OLE-DB接口
5.2 WinCC运行数据库名称的获得


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

图1: 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,,,[,][,]”
其中:
ValueName:格式为“ArchiveName\Value_Name”,可以使用多个名称。
TimeBegin,TimeEnd:时间范围,格式 “YYYY-MM-DD hh:mm:ss.msc”。
SQL_Clause:SQL 语法中的过滤标准。
3.3 查询结果

注意,WinCC的归档数据是使用UTC(协调世界时)时间保存的。
4 本地计算机访问
4.1 WinCC组态
4.1.1WinCC中创建变量
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模板:

图5:Excel模板
其中,每天整点的参数值从WinCC数据库中直接读取,平均值、最大值、最小值由Excel本身的函数实现。
关于如何插入日期控件:

第一步,显示控件工具箱:

图6:显示“控件工具箱”
第二步,在控件工具箱中选择“其它控件”,然后选择“Microsoft Date and Time Picker Control6.0”,把控件放到合适的位置并拖拽到合适大小。

图7:插入日历控件
4.2.2在Excel中编写脚本
1)VBA编辑器
点击“工具”菜单à“宏”à“Visual Basic 编辑器”,打开Excel VBA编辑器:

图8:打开VBA编辑器
2)创建读取WinCC历史数据的VBA子程序get_wincc_data:

图9:get_wincc_data


脚本包括以下几部分:
(1)获得WinCC运行数据库名称

以上脚本只能读取本地WinCC的变量值,并且需要插入“WinCC HMIRuntime 1.0 Type Library”对象:

图10:插入“WinCC HMIRuntime 1.0 Type Library”对象
(2)创建连接字符串:

(3)转换查询时间为UTC时间:

(4)四个参数值的查询(以查询“进口温度”为例):

4.2.3 调用脚本
在时间控件Change事件中调用子程序get_wincc_data :

4.2.4运行Excel中的脚本
首先要设置宏的安全性为“中”或“低”(不建议使用):

图11:“宏”安全性设置1


图12:“宏”安全性设置2
若宏的安全性为 “低”,脚本将直接运行,没有任何提示;若宏的安全性为 “中”,则打开Excel时将有如下提示:

图13 安全提示
此时,通过日期控件选择日期后,Excel读取WinCC的数据并写入到不同的单元格中:

图14:运行结果
DEMO程序请参考附件中的report_demo_local.xls 文件。
5 远程计算机访问
Excel访问远程计算机WinCC的历史数据,需要注意:
5.1 OLE-DB接口
如果客户端计算机没有安装WinCC或者DataMonitor软件,则需要安装Connectivity Pack软件来提供OLE-DB接口。
5.2 WinCC运行数据库名称的获得
可以通过以下两种方法在Excel中中读取远程WinCC运行数据库的名称:
1)编写OPC客户端脚本
WinCC激活后将作为一个标准的OPC服务器,可以在Excel中编写OPC 客户端脚本读取变量“@DatasourceNameRT”的值。请参考文档《如何在Excel中访问WinCC变量归档数据》:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0554
注意,访问远程OPC服务器,需要设置DCOM,请参考《如何配置OPC DCOM》:
http://www.ad.siemens.com.cn/download/searchResult.aspx?searchText=A0265
2)使用以下脚本也可以获得远程WinCC运行数据库的名称:

使用以上脚本时需要注意:
(1)在Excel计算机用户管理下注册WinCC计算机的(可以登录WinCC/SQL)用户名和密码。
(2)修改Excel计算机Windows的hosts文件:

DEMO程序请参考附件中的report_demo_remote.xls文件。

如果您对该文档有任何建议,请将您的宝贵建议提交至下载中心留言板。
该文档的文档编号:A0567


附录-推荐网址

SIMATIC HMI人机界面
西门子(中国)有限公司
工业自动化与驱动技术与楼宇科技集团 客户服务与支持中心
网站首页:www.4008104288.com.cn
WinCC下载中心:http://www.ad.siemens.com.cn/download/DocList.aspx?TypeId=0&CatFirst=1&CatSecond=9&CatThird=-1
HMI全球技术资源:http://support.automation.siemens.com/CN/view/zh/10805548/130000
“找答案”WinCC版区:http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1032




注意事项

应用示例与所示电路、设备及任何可能结果没有必然联系,并不完全相关。应用示例不表示客户的具体解决方案。它们仅对典型应用提供支持。用户负责确保所述产品的正确使用。这些应用示例不能免除用户在确保安全、专业使用、安装、操作和维护设备方面的责任。当使用这些应用示例时,应意识到西门子不对在所述责任条款范围之外的任何损坏/索赔承担责任。我们保留随时修改这些应用示例的权利,恕不另行通知。如果这些应用示例与其它西门子出版物(例如,目录)给出的建议不同,则以其它文档的内容为准。


声明

我们已核对过本手册的内容与所描述的硬件和软件相符。由于差错难以完全避免,我们不能保证完全一致。我们会经常对手册中的数据进行检查,并在后续的版本中进行必要的更正。欢迎您提出宝贵意见。
版权© 西门子(中国)有限公司2001-2011 版权保留
复制、传播或者使用该文件或文件内容必须经过权利人书面明确同意。侵权者将承担权利人的全部损失。权利人保留一切权利,包括复制、发行,以及改编、汇编的权利。

读取变量归档的查询语句是:
TAG:R, <ValueID or ValueName>,<TimeBegin>,<TimeEnd>[,<SQL_clause>][,<TimeStep>]
其中TimeStep指的是时间间隔
这是我写的一段比较完整的脚本 将读取的字段写入内部变量;
Dim sPro
Dim sDsn
Dim sSer
Dim sCon
Dim sSql

Dim conn
Dim oRs
Dim oCom
Dim oItem

'Dim m,n,s

'connection string
sPro = "Provider=WinCCOLEDBProvider.1;"
sDsn = "Catalog=CC_GDSmartP_12_03_10_08_18_49R;" '数据库名
sSer = "Data Source=.\WinCC"
sCon = sPro + sDsn + sSer
'sCon="Provider=WinCCOLEDBProvider.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SSEJRecord;Data Source=.\WINCC"
'MsgBox "set sCon"

'sSQL为查询命令
sSql = "TAG:R,'ProcessValueArchive\AnalogTag','0000-00-00 00:00:20.000','0000-00-00 00:00:00.000'"
'建立连接
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = sCon
conn.CursorLocation = 3
conn.Open
'MsgBox "conn Open"

'进行查询
Set oRs = CreateObject("ADODB.Recordset")
Set oCom = CreateObject("ADODB.Command")
oCom.CommandType = 1
Set oCom.ActiveConnection = conn
oCom.CommandText = sSql
'MsgBox "set command"

'填充记录集
Set oRs = oCom.Execute
'm = oRs.Fields.Count
MsgBox oRs.EOF

If(oRs.EOF) Then
oRs.Close
Else
oRs.MoveFirst
Do While Not oRs.EOF
HMIRuntime.Tags("Text1").Write CStr(oRs.Fields(17).Value)
HMIRuntime.Tags("Text2").Write CStr(oRs.Fields(18).Value)
oRs.MoveNext
Loop
oRs.Close
End If

Set oRs = Nothing
conn.Close
Set conn = Nothing


Win7系统运行WindowsDefender提示错误代码0X800106BA如何解决
运行win7旗舰版系统总会遇到这样或那样的故障问题,这不有位用户说运行WindowsDefender时,出现提示错误代码0X800106BA应用程序初始化失败(如下图所示)出现这样的问题该如何解决呢?接下来小编和大家介绍几种解决运行WindowsDefender提示错误代码0X800106BA的方法。方法一:1、先来自动修复下:2、照向导进行...

为什么我的win7 64位 旗舰版系统无法识别4G内存,显示只有1.75G 我的配 ...
应该是主板限制了内存的容量,你应该在设备管理器那里可以看到,设备管理器那若是2g,那就是另一内存条没插好,

pci.sys 22ba 蓝屏,win7,频繁出现,怎么解?
一般是内存问题的多,也有驱动不兼容的较少,你可以把电脑小后盖打开,把内存条多拨插几次看看问题解决没(笔记本电脑)。台式的话打开偏盖方法同样。如果是驱动不兼容比较麻烦,你要记得最近装的程序将它们的驱动卸载重装,设置属性中兼容运行。另外有时你把电脑硬件的驱动升级也能造成,同样需要卸载恢复装...

Win10进入“凭据管理器”,显示错误,错误代码0x800706BA,RPC服务器不可 ...
1、按“win+R”键打开运行,在运行输入框中输入“services.msc”,如下图所示。2、进去服务列表之后,找到“Remote Procedure Call (RPC) Locator”服务。3、选中服务,双键点击进去,默认状态。4、将“RPC Loader”服务的启动类型改为“自动”。5、接着点击“启动”按钮,将此“RPC Loader”服务开启...

操作无法完成0x00006ba解决方法
重启电脑吧最简单的操作,按提示的了,启动后台服务控制面板管理工具服务print spooler 1按住 windows+r 键,打开 运行 输入 servicesmsc,打开 服务找到 Print Spooler 这个服务右击属性把启动类型改为自动。因为 Windows 7系统没有默认打开打印机的服务,我们把服务打开就可以了具体操作如下1连网状态下,...

打印机安装出现"错误0×00000ba,本地打印后台处理程序服务没有运行...
你在控制面板---管理工具--服务找到“Print Spooler“后把它的启动类型设为手动,开启。 然后就可以了!

windows7系统无法共享打印机出现0x000006ba错误如何解决
windows7系统无法共享打印机出现0x000006ba错误如何解决 具体方法如下 1、按WIN键,找到“运行”;   2、在框内输入services.msc后回车;、   3、在从服务中找到windows firewall此项服务,右键属性,点启动;   4、按WIN键-设备和打印机;&#...

Win7系统运行Windows Defender提示0x800106ba错误代码怎么办_百度知 ...
Windows Defender是一款win7系统中自带的杀毒程序,可用于帮助你的电脑抵御恶意软件和病毒的攻击,不过近日有用户却发现在运行Windows Defender的时候,提示0x800106ba错误代码,这是怎么回事呢?接下来给大家分享一下具体的解决方法吧。Win7运行Windows Defender报错“0x800106ba”的两种解决方法:方法一:1、...

t540p 20bfs0ba00开机怎么进入uefi
操作步骤如下:第一步:设置独立引导分区UEFI启动需要一个独立的分区,以win8 64位为例,打开资源管理器,右击—计算机---管理。在打开的窗口中切换到—计算机管理—存储—磁盘管理—右击左侧主分区,如下图所:Ps.一般选择系统C盘选择“压缩卷”。在打开的压缩卷窗口中,在“输入压缩空间量”处输入...

win10无法访问d盘怎么办?
如果你的Windows 10电脑无法访问D盘(或任何其他分区),可能是由多种原因引起的。以下是一些可能的解决步骤:1. 重新启动电脑 有时简单的重新启动可以解决临时的系统问题。2. 检查连接 如果D盘是一个外部硬盘或U盘,请检查连接是否松动或损坏。尝试拔下并重新插入,或者换一个USB端口。3. 磁盘管理 使用...

平定县18817779297: 如何在Excel中访问WinCC变量归档数据 -
豆卢应旨泰: 如何在Excel中访问WinCC变量归档数据 How to access WinCC Process Value Archive Database in Excel Getting-started Edition (2011年6月) 摘 要 本文通过制作一个日报表的过程,介绍了在本地或远程计算机上如何通过Excel访问WinCC的变...

平定县18817779297: 如何实现用vb读取wincc的归档数据?请哪位大侠帮忙指点一下,我用的WINCC6.0 -
豆卢应旨泰: 首先得和你说明一下,vb读取归档数据需要simatic wincc connectivity pack 这个授权安装包.否则你是无法通过脚本读取的.

平定县18817779297: 你好,请问一下,你的VB读取WINCC数据归档中的数据是怎么... -
豆卢应旨泰: 你好,请问一下,你的VB读取WINCC数据归档中的数据是怎么...档数据库名取决于第一次运行Wincc项目时生成的,因为你的Wincc重新安装过,因此其归档名已经改变,请修改你的VB程序中链接Wincc数据库语句中的归档名.

平定县18817779297: 如何用vbs读取wincc与plc通信完成 -
豆卢应旨泰: 1,测试硬件连接.电脑中使用ping命令测试硬件连接是否正常.2,测试通讯是否建立.wincc项目激活后,进入变量管理界面,相应PLC前面有绿勾则表示通讯建立. 或者使用安装wincc时,开始菜单中的channel diagnosis工具,绿勾表示通讯建立.

平定县18817779297: vb程序如何读取wincc里面的变量的值 -
豆卢应旨泰: wincc支持OPC,你用VB做opc客户端,读取wincc的数据.

平定县18817779297: 如何实现第三方软件读取WinCC里的实时数据 -
豆卢应旨泰: 可以用vba语句连接的

平定县18817779297: 用vc6.0访问wincc归档数据库方法?
豆卢应旨泰: 其实你只要学会如何用VC访问标准数据库就可以了,读取压缩归档数据库跟其差别不大的,主要是连接字符串以及SQL语句,其他基本一致,你可以参考书上的VB示例进行相应的更改.百度"VC ADODB",相关的资料很多.参考:http://hi.baidu.com/wj354/blog/item/6b6311b52c4adfcf36d3ca9f.html

平定县18817779297: 如何打开和修改WINCC归档的数据 -
豆卢应旨泰: 慢速归档数据在SQL中是正常的(未压缩),用SQL企业管理器可以打开浏览、编辑.也可以用标准的SQL语句Update进行修改,比较麻烦些.用WinCC在线表格控件修改是最方便的.总之,归档数据存储于数据库中,用什么方法来修改,只是方法、手段不同而已

平定县18817779297: 在外部程序中运用Wincc的内部数据? -
豆卢应旨泰: 读取wincc里面的变量可以用两个方法: 1、opc 2、wincc里面写脚本把变量写到外部数据库、excel中去 读取wincc的趋势和报警则只能在wincc里面写脚本或者用vb、vc写代码读取wincc的归档数据库,具体可以参考《深入浅出wincc6》里面有详细的代码

平定县18817779297: 如何用vb访问wincc数据库 -
豆卢应旨泰: 下载mysql-connector-odbc-5.1.6-win32.msi第二步:安装mysql-connector-odbc-5.1.6-win32.msi第三步:运行VB并新建一标准EXE工程, 通过菜单工程->引用 打开”引用”对话框, 找到 MicrosoftActiveX Data Objects x.x Library , 其中 x.x ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网