1 概述 在工业生产中,WinCC 归档的生产历史数据起到很重要的作用。一部分历史数据可以反映设备运行状态的变化,一部分历史数据可以用来分析某些参数改变对生产效果的影响,还有一部分数据用来进行生产故障分析。所以需要尽可能多的保存历史数据。但是,随着在线历史归档数据的增多,WinCC 的性能也会受到影响,所以 WinCC 提供了归档数据备份功能,在满足存储在线归档数据的基础上,还能保证历史归档数据不丢失。因此,本文档将介绍如何使用 WinCC V7.5 SP1 的归档备份功能。 2 WinCC 归档数据的限制 在 WinCC 归档组态中可以组态变量记录和报警记录的归档大小,如图 1 所示。其中单个分段就是一个 SQL 数据库文件,所有分段是 WinCC 所保存的所有的在线归档数据。
在 WinCC 项目文件夹下的 ArchiveManager 文件夹中保存的是 WinCC 在线归档数据。 其中 TagLoggingFast 文件夹下保存的是快速归档文件,如图 2 所示:
在归档组态中,需要保证所有单个归档(包括快速归档,慢速归档和报警归档)片断的总数不超过某一个固定值。经过测试比较,SQL 数据库所能连接的归档片断最大可行的数量为 200 个。归档片断个数不能过多地超过这个数量,否则会影响 Microsoft SQLserver 运行性能。这反过来会导致数据管理错误。 同时 WinCC V7.5 SP1 中单个归档片断大小不应该超过 2G。 详细信息可以参考: https://support.industry.siemens.com/cs/cn/zh/view/34473263 3 WinCC 归档备份功能 可以在 WinCC 归档组态中启用归档备份功能,如图 3 所示。
激活备份功能之后,所有归档文件在归档分段文件完成 15 分钟后或达到分段最大尺寸之 后都会被放到备份归档路径下。其中备份路径可以是本地路径,也可以是网络路径,如图 4 所示。
如果同时也选择了“备份到两个路径”选项,那么会同时在两个路径下保存备份归档,如图 所示:
4 链接备份归档的方法 WinCC 可以直接查看在线归档数据,例如通过在线表格或在线趋势控件加载在线归档数据。备份出去的归档数据则无法直接查看,需要先链接备份归档之后才能查看这些归档 数据。目前,在 WinCC V7.5 SP1 中存在以下几种链接备份归档的方法: 在变量记录编辑器中链接 使用 WinCC 在线表格或在线趋势控件链接 通过脚本链接归档 4.1 在变量记录编辑器中链接归档 打开变量记录编辑器,选择“归档”并右键,然后依次选择“归档组态”“快速变量记录”(或“慢速变量记录”)“链接归档”,如图 6 所示。
然后在弹出的窗口中选择备用路径及归档即可,链接成功后提示如图 7 所示。
同样可以断开与备份归档的链接,在图 6 中选择“断开与归档的连接”条目即可。在弹出的数据库选择”对话框中选择需要断开的归档
断开成功的提示如图 9 所示。
4.2 使用在线表格或在线趋势控件链接归档 还可以通过在线表格或在线趋势控件上的“连接接归档”和“断开链接”工具来链接或断开备份归档。 默认情况下,“连接备份”和“断开备份”工具不会显示在控件上,需要在控件属性中把它们显示出来。如图 10 所示。
连接备份”和“断开备份”工具显示在控件工具栏中,如图 11 所示
点击“连接备份” ,弹出选择备份归档的对话框,如图 12 所示。选择备份路径及归档 文件后,点击“确定”按钮即可把相应归档链接到 WinCC 运行系统。
同样,点击“断开备份” 可以断开所链接的备份归档,如图 13 所示:
4.3 通过脚本链接归档 可以使用 VBS 脚本来链接或断开备份归档。其中链接备份归档的语法如下: HMIRuntime.Logging.DataLogs.Restore [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 | 路径错误 |
断开备份的语法: HMIRuntime.Logging.DataLogs.Remove [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”和“Trend”,如图 20 所示。
在“Trend”画面中添加选项组控件用来选择是否要自动链接备份归档,添加 Date and Time Picker 控件用来设置曲线的开始时间和结束时间,并添加查询按钮、趋势控件,如 图 21 所示。
为趋势控件选择加载的归档变量,如图 22 所示。
并设置趋势控件的时间基准为“本地时区”,如图 23 所示。
在查询按钮的事件中编写曲线查询脚本,如图 24 所示
在脚本中判断结束时间是否晚于开始时间,是否加载备份归档,并判断设置的时间范围是否在在线归档范围之外,如果是则加载对应的备份归档。需要注意,在执行 Restore令加载备份归档之前,需要把设定的时间范围转换成 UTC 时间。具体脚本如下:
Dim OP1,myTrend
Set OP1 =ScreenItems("OP1") '在线趋势控件名称
Set myTrend =ScreenItems("myTrend") '在线趋势控件名称
Dim BeginTime,endTime
Set BeginTime=ScreenItems("BeginTime")'开始时间控件名称
Set endTime=ScreenItems("endTime")'结束时间控件名称
If DateDiff("s",BeginTime.value,endTime.value)>0 Then'结束时间晚于开始时间
If OP1.Process =1 Then'自动连接备份归档
Dim BeginTime_restore,endTime_restore
Dim restore_bool
restore_bool=0
BeginTime_restore=FormatDateTime(BeginTime.value)
endTime_restore= FormatDateTime(endTime.value)
If DateDiff("s",endTime.value,DateAdd("h", -2, Now))<=0 Then
'结束时间在归档时间范围内
If DateDiff("s",BeginTime.value,DateAdd("h", -2, Now))>0 Then
'开始时间在归档时间范围外
endTime_restore= DateAdd("h", -2, Now)
restore_bool=1
End If
Else
'结束时间在归档时间范围外
restore_bool=1
End If
If restore_bool=1 Then'查询时间超过在线归档数据时间范围之外
BeginTime_restore=DateAdd("h", -8, BeginTime_restore)
endTime_restore=DateAdd("h", -8, endTime_restore) '转换为 UTC 时间
HMIRuntime.Trace "归档连接开始时间:" & CStr(BeginTime_restore)
& ",结束时间:" & CStr(endTime_restore) & vbNewLine
HMIRuntime.Trace "归档连接结果= " &
HMIRuntime.Logging.DataLogs.Restore("E:\db1",CStr(BeginTime_restore),CStr(endTime_resto
re),-1,1) & vbNewLine
End If
End If
myTrend.TimeAxisIndex =0 '时间轴索引
myTrend.Online =0
myTrend.TimeAxisRangeType =1 '时间轴类型-时间范围
myTrend.TimeAxisBeginTime = BeginTime.value '起始时间
myTrend.TimeAxisEndTime =endtime.value '结束时间
else
Msgbox "结束时间应该晚于开始时间!"
End If
在画面关闭事件下断开备份归档的链接,脚本如图 25 所示。
5.4 运行结果 在 WinCC 项目属性中取消“只能对项目目录进行写保护访问”选项,如图 26 所示,并在计算机属性中启用“变量记录运行系统”,然后激活 WinCC 项目
打开 WinCC 变量模拟器,来模拟变量的变化,设置如图 27 所示。
切换到趋势画面,开始时选择“不加载备份归档”,然后选择在线归档时间范围之外的某个时间范围,本例中选择如图 28 所示,然后点击查询按钮。
可以看到在这个时间范围内并没有数据显示出来。 接下来选择“自动加载备份归档”选项,设置相同的时间范围,点击查询按钮。对应的历史归档数据就会从备份归档中被重新加载,并呈现在曲线中。如图 29 所示
此时,点击“断开备份”工具可以看到已经链接到 WinCC 运行系统的归档,如图 30 所示。
切换到主画面,趋势画面被关闭,会触发断开备份的脚本。然后再切换回趋势画面,点击“断开备份”工具可以看到所有链接到 WinCC 运行系统的归档已经被断开,如图 31 所示。