1概述
在工业生产中,WinCC归档的生产历史数据起到很重要的作用。一部分历史数据可以反映设备运行状态的变化,一部分历史数据可以用来分析某些参数改变对生产效果的影响,还有一部分数据用来进行生产故障分析。所以需要尽可能多的保存历史数据。但是,随着在线历史归档数据的增多,WinCC的性能也会受到影响,所以WinCC提供了归档数据备份功能,在满足存储在线归档数据的基础上,还能保证历史归档数据不丢失。因此,本文档将介绍如何使用的归档备份功能。
2WinCC归档数据的限制
在WinCC归档组态中可以组态变量记录和报警记录的归档大小,如图1所示。其中单个分段就是一个SQL数据库文件,所有分段是WinCC所保存的所有的在线归档数据。
在WinCC项目文件夹下的ArchiveManager文件夹中保存的是WinCC在线归档数据。
其中TagLoggingFast文件夹下保存的是快速归档文件,如图2所示:
在归档组态中,需要保证所有单个归档(包括快速归档,慢速归档和报警归档)片断的总数不超过某一个固定值。经过测试比较,SQL数据库所能连接的归档片断最大可行的数量为200个。归档片断个数不能过多地超过这个数量,否则会影响MicrosoftSQLserver运行性能。这反过来会导致数据管理错误。
同时中单个归档片断大小不应该超过2G。
详细信息可以参考:
3WinCC归档备份功能
可以在WinCC归档组态中启用归档备份功能,如图3所示。
激活备份功能之后,所有归档文件在归档分段文件完成15分钟后或达到分段最大尺寸之
后都会被放到备份归档路径下。其中备份路径可以是本地路径,也可以是网络路径,如图4所示。
如果同时也选择了“备份到两个路径”选项,那么会同时在两个路径下保存备份归档,如图所示:
WinCC可以直接查看在线归档数据,例如通过在线表格或在线趋势控件加载在线归档数据。备份出去的归档数据则无法直接查看,需要先链接备份归档之后才能查看这些归档
数据。目前,在中存在以下几种链接备份归档的方法:
在变量记录编辑器中链接
使用WinCC在线表格或在线趋势控件链接
通过脚本链接归档
4.1在变量记录编辑器中链接归档
打开变量记录编辑器,选择“归档”并右键,然后依次选择“归档组态”“快速变量记录”(或“慢速变量记录”)“链接归档”,如图6所示。
然后在弹出的窗口中选择备用路径及归档即可,链接成功后提示如图7所示。
同样可以断开与备份归档的链接,在图6中选择“断开与归档的连接”条目即可。在弹出的数据库选择”对话框中选择需要断开的归档
断开成功的提示如图9所示。
4.2使用在线表格或在线趋势控件链接归档
还可以通过在线表格或在线趋势控件上的“连接接归档”和“断开链接”工具来链接或断开备份归档。
默认情况下,“连接备份”和“断开备份”工具不会显示在控件上,需要在控件属性中把它们显示出来。如图10所示。
连接备份”和“断开备份”工具显示在控件工具栏中,如图11所示
4.3通过脚本链接归档
可以使用VBS脚本来链接或断开备份归档。其中链接备份归档的语法如下:
[SourcePath][TimeFrom][TimeTo][TimeOut]
[Type]
各参数含义如下:
SourcePath:归档的备份路径。
TimeFrom、TimeTo:要恢复数据的时间段,这里要用UTC时间。
TimeOut:是否等待。因为链接归档需要时间,此参数为-1时,脚本会等待链接结果。
Type:所链接的归档类型。1代表快速归档,2代表慢速归档,3代表快速归档和慢速归档。
注意:
不写参数时将链接备份路径下所有的归档文件到WinCC运行系统。
TimeFrom和TimeTo的时间格式错误时也会链接备份路径下所有的归档文件到WinCC行系统。
链接函数是有返回结果的。返回结果为0时正常,为1时代表归档已经链接或备份路径下没有备份归档,此两种结果都可以认为是正常。其它错误信息如表1所示。
表1错误代码
错误代码
错误原因
0x80047200
WinCC没有激活
0x80047201
无效的归档类型
0x80047202
无效的时间下边界
0x80047203
无效的时间上边界
0x80047204
无法在项目文件夹下创建'CommonArchiving'
0x80047205
超时
0x80047206
WinCC取消激活
0x80047207
无效签名
0x80047208
无法加载数据库
0x80047209
不能复制数据到'CommonArchiving'
0x8004720A
数据库名称无效
0x8004720B
无数据库列表
0x8004720C
数据库已经断开
0x8004720D
数据库无法断开
0x8004720F
未签名的数据连接
0x80047210
路径错误
断开备份的语法:
[TimeFrom][TimeTo][TimeOut][Type]
参数含义和链接归档语法相同。
5应用举例
下面以趋势显示时自动加载归档数据为例介绍WinCC备份归档的组态及自动链接。在查询历史数据时,如果所查询的时间范围超过了在线归档数据的时间范围,则自动加载备份归档。
5.1变量组态
在WinCC中创建内部变量,如图14所示。
5.2归档组态
在WinCC变量记录编辑器中创建过程值归档,如图15所示。
设置归档属性,单个分段时间范围为1小时,所有分段时间范围为2小时,这样可以查询最近2个小时的归档数据。如图16所示
启动归档备份,设置备份路径,如图17所示。
5.3画面组态
在WinCC中创建以下画面,并设置“Start”为起始画面。
在“Start”添加画面切换按钮以及画面窗口,如图19所示。
两个画面切换按钮分别连接画面“Main”和“Tr”,如图20所示。
在“Tr”画面中添加选项组控件用来选择是否要自动链接备份归档,添加DateandTimePicker控件用来设置曲线的开始时间和结束时间,并添加查询按钮、趋势控件,如
图21所示。
为趋势控件选择加载的归档变量,如图22所示。
并设置趋势控件的时间基准为“本地时区”,如图23所示。
在查询按钮的事件中编写曲线查询脚本,如图24所示
在脚本中判断结束时间是否晚于开始时间,是否加载备份归档,并判断设置的时间范围是否在在线归档范围之外,如果是则加载对应的备份归档。需要注意,在执行Restore令加载备份归档之前,需要把设定的时间范围转换成UTC时间。具体脚本如下:
DimOP1,myTrSetOP1=ScreenItems("OP1")'在线趋势控件名称SetmyTr=ScreenItems("myTr")'在线趋势控件名称DimBeginTime,TimeSetBeginTime=ScreenItems("BeginTime")'开始时间控件名称SetTime=ScreenItems("Time")'结束时间控件名称IfDateDiff("s",,)0Then'结束时间晚于开始时间=1Then'自动连接备份归档DimBeginTime_restore,Time_restoreDimrestore_boolrestore_bool=0BeginTime_restore=FormatDateTime()Time_restore=FormatDateTime()IfDateDiff("s",,DateAdd("h",-2,Now))=0Then'结束时间在归档时间范围内IfDateDiff("s",,DateAdd("h",-2,Now))0Then'开始时间在归档时间范围外Time_restore=DateAdd("h",-2,Now)restore_bool=1IfElse'结束时间在归档时间范围外restore_bool=1IfIfrestore_bool=1Then'查询时间超过在线归档数据时间范围之外BeginTime_restore=DateAdd("h",-8,BeginTime_restore)Time_restore=DateAdd("h",-8,Time_restore)'转换为UTC时间"归档连接开始时间:"CStr(BeginTime_restore)",结束时间:"CStr(Time_restore)"归档连接结果="("E:\db1",CStr(BeginTime_restore),CStr(Time_restore),-1,1)=0'时间轴索引=0=1'时间轴类型-时间范围='起始时间='结束时间elseMsgbox"结束时间应该晚于开始时间!"If在画面关闭事件下断开备份归档的链接,脚本如图25所示。
5.4运行结果
在WinCC项目属性中取消“只能对项目目录进行写保护访问”选项,如图26所示,并在计算机属性中启用“变量记录运行系统”,然后激活WinCC项目
打开WinCC变量模拟器,来模拟变量的变化,设置如图27所示。
可以看到在这个时间范围内并没有数据显示出来。
人们中眼的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件。按比例计算就是:如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。我从信捷(干了五年)出来后,做过步科独立销售,做过北辰自己单干过,可是我发现通用品越来越难做,生意越来越难做,但是生活还得继续下去,我就在想,白天想,夜里想突然想到2011年认识的巨控的总经理,他有好的产品,无线远程监控模块GRM500,于是我从无锡硕放飞广州,经培训成了巨控产品经理,在巨控负责销售和技术,并且一直努力专注下去!一直不忘初心,经常奔赴第一现场,进行项目评估,项目实施,数据采集,工业物联通讯,上位机,APP组态等。
西门子WINCC社区