WinCC 中使用备份归档,并在需要时自动链接备份归档

December 09, 2023
测试
测试
测试
测试
7 分钟阅读

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 所示。

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多