前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WinCC V7.5 制作设备运行报表

WinCC V7.5 制作设备运行报表

作者头像
科控物联
发布2022-03-29 14:42:01
7.3K1
发布2022-03-29 14:42:01
举报
文章被收录于专栏:科控自动化

1 <概述> <在工业生产中存在很多设备,例如机床,压机等,在实际生产过程中需要对这些设备的启停时间、 耗电量以及生产产品的数量这些运行数据进行统计,作为分析企业生产运营情况的依据。 本文以 WinCC V7.5 SP1 为例,介绍 WinCC 如何实现设备运行数据统计并通过报表的形式展现统计数据,如图 1 所示。

可以实现如下功能: ➢ 自动记录各设备的运行数据 ➢ 自动统计各设备的运行时间 ➢ 按设备、日期呈现报表 本文档所使用的各软件版本如下: ➢ 操作系统版本:Windows Server 2016 ➢ WinCC 版本: SIMATIC WinCC V7.5 SP1 ➢ Office 版本:Microsoft Office 2016 2 < 创建数据库> <WinCC 自动存储设备运行数据到数据库,然后报表系统从数据库调取数据。这里使用 Access 数据库存储数据。因此需要首先创建 Access 数据库。关于数据库的结构和文件位置说明如下: 1、 每个设备创建一个数据表,表名称中只有编号不同,方便后面编程时定位相应设备的数据库表。 2、 所有表的结构都相同。表的结构如图 2 所示。

“ST_T”代表本次生产设备的启动时间,“EN_T”代表本次生产设备的停止时间。同时,报表会读取其差值作为本次生产所进行的时间。 本例中“Power_ST”和“Power_EN”分别代表设备每次启动和停止时电能表的数据,其差值就是本次生产所消耗的电能。同样“Connt_ST”和“Connt_EN”的差值代表本次所生产的产品数量。 3、 在 WinCC 项目文件夹下创建 report 文件夹。数据库文件存储在 report 文件夹下,如图 3 所示。

3 < WinCC 变量> < 本例中需要用到两种 WinCC 变量。一种是和设备运行数据相关的 WinCC 变量,包括运行状态、电能表数据、生产数量等。另外一种是用于标识 WinCC 全局动作执行的 WinCC 变量。> 3.1 <设备运行相关变量> <设备运行相关变量以结构变量形式创建。根据需要创建结构变量的元素,本例中包括 Running(运行状态) 、 Power(电能表数据) 、 Count (生产数量)三个元素,数据类型如图 4 所示。

为每个设备创建结构变量,各设备的变量名称中只有编号不同。如图 5 所示。

3.2 < 标识变量> <运行数据写入数据是通过 WinCC 全局动作实现的,设备运行状态发生变化时就执行数据写入,根据设备的不同状态写入不同的数据。但是 WinCC 启动后默认会执行一次全局动作,这样就会造成设备状态没有发生变化,但数据被更新的情况。因此需要使用一个标识变量来避免这一问题 为每个设备创建一个标识变量,数据类型为二进制变量。如图 6 所示。

这些变量的初始值设为 0。在 WinCC 运行后,第一次执行全局动作时, 置位相应的标识变量,当标识变量为 1 时才执行数据库写入操作。

4 <数据存储脚本> <各设备的运行数据是通过各自的 WinCC 全局动作写入数据库, WinCC 全局动作由 设备运行状态的变化触发脚本执行,全局动作脚本根据设备的状态写入不同的数 据。> 4.1 <创建项目函数> <打开 WinCC VBS 全局脚本编辑器,在项目模块下创建项目函数。 图 7 在项目函数中编写如下脚本:

代码语言:javascript
复制
Function dev_record (devno)
On Error Resume Next
Dim DEV_ID: DEV_ID = devno
Dim DeviceRunning,DeviceCount,DevicePower,flag '读取 WinCC 变量
Set DeviceRunning = HMIRuntime.Tags("Device" & DEV_ID & ".Running")
'WinCC 变量:设备运行状态
DeviceRunning.Read
Set DeviceCount = HMIRuntime.Tags("Device" & DEV_ID & ".Count") 'WinCC
变量:运行数据 1
DeviceCount.Read
Set DevicePower = HMIRuntime.Tags("Device" & DEV_ID & ".Power") 'WinCC
变量:运行数据 2
DevicePower.Read
Set flag = HMIRuntime.Tags("flag" & DEV_ID )
flag.Read
If flag.Value = 1 Then 'WinCC 启动后第一次不执行以下脚本
Dim Conn,adors,SQL
Set conn = CreateObject("ADODB.Connection")
Set adors = CreateObject("ADODB.Recordset")
Conn.ConnectionString = "Provider=microsoft.ace.oledb.12.0;" & "Data
Source=" & HMIRuntime.ActiveProject.Path &"\report\dev_data.accdb"
'dev_data.accdb:存储数据库名称
Conn.Open
If DeviceRunning.Value =1 Then
SQL = "insert into dev" & DEV_ID & "
(dev_no,ST_T,Power_ST,Count_ST) values (" & DEV_ID & ",#" & Now & "#," &
DevicePower.Value & "," & DeviceCount.Value & ")" '启动时插入数据
Conn.Execute SQL
Else
SQL = "select Max(ID) from dev" & DEV_ID
adors.Open SQL,Conn,1,3
SQL = "update dev" & DEV_ID & " set EN_T=#" & Now() &
"#,Power_EN=" & DevicePower.Value & ",Count_EN=" & DeviceCount.Value & "
where ID=" & adors.Fields(0) '停止时更新数据
Conn.Execute SQL
End If
Set Conn = Nothing
Set adors = Nothing
Else
flag.Write 1
End If
End Function

结果如图 8 所示:

全局函数以设备编号作为参数,在脚本中使用设备编号对应相应的数据库表名及变量名。>

4.2 <创建全局动作> <在全局动作中调用全局项目函数。分别为每个设备创建一个全局动作,如图 9 所示。

在全局动作中直接调用项目函数,并输入设备编号作为参数,如图 10 所示为设备 1 的全局动作。

设备运行状态发生变化时执行全局动作,在全局动作中根据设备的状态写入不同的 数据。因此需要设定设备状态变量作为全局动作的触发器。如图 11 所示为设备 1 的 全局动作触发器。

4.3 <运行结果> <使能 WinCC 的“全局脚本运行系统”,并激活 WinCC 运行。

当有设备启停时,会自动在数据库中记录此设备的启停时间,本次启停时刻的运行 数据,如图 13 所示为设备 1 的数据库记录结果。

5 <报表制作> <报表查询的实现过程是通过脚本查询数据库,把查询结果填充到 excel 模板并另存为 htm 文件,在 WinCC 画面中添加 web 控件显示 htm 报表文件。> 5.1 <创建报表模板> <创建 excel 模板,如图 14 所示:

模板文件存放在 WinCC 项目文件夹\report\模板下,如图 15 所示。

5.2 <制作报表画面> <在 WinCC 报表查询画面上,可以按照设备编号和日期来查询报表。需要在画面中添加日期选择控件、选项组控件和 web 控件, 如图 16 所示

按如下步骤添加 Microsoft Date and Timer Picker Control 和 Microsoft Web Browser。 第一步,在 ActiveX 控件上右键,选择“添加/删除”,然后在 OCX 控件列表中选择Microsoft Date and Timer Picker Control 和 Microsoft Web Browser。如图 17 所示。

第二步,添加控件到画面 分别拖拽 Microsoft Date and Timer Picker Control 和 Microsoft Web Browser 控件到画面中。如图 18 所示。

第三步,添加组合框控件 在画面上添加组合框控件,用来选择设备。可以从智能对象下拖拽组合框控件直接添加到画面,并设置属性。步骤如图 19 所示。

也可以直接从 excel 中拖拽文本到 WinCC 直接生成组合框。如图 20 所示。

首先在 excel 输入需要的文本,选择所有文本,移动鼠标到选中区域的右下角, 直到鼠标变成十字光标形状。 然后按着鼠标右键拖拽文本到 WinCC 画面,松开鼠标,在弹出对话框中选择“插入组合框”。最后,具有三项文本的组合框被插入到 WinCC 画面。 第四步,创建生成报表的脚本 在画面中添加按钮用来生成报表并显示在 Microsoft Web Browser 控件中,为按钮编写如下 VBS 脚本:

代码语言:javascript
复制
On Error Resume Next
item.Enabled = False
'获取设备编号和报表日期
Dim dev_ID,timepicker
Dim date_select,strStartTime,strEndTime
Set dev_ID = ScreenItems("组合框 2")'获取设备编号。"组合框 2"为组合框名称
Set timepicker = ScreenItems("控件 2")'获取报表日期。"控件 2"为时间控件名称
date_select = FormatDateTime(timepicker.Value,2)
strStartTime = date_select & " 00:00:00"
strEndTime = date_select & " 23:59:59"
'查询数据库
Dim Conn,adors,SQL
Set conn = CreateObject("ADODB.Connection")
Set adors = CreateObject("ADODB.Recordset")
Conn.ConnectionString = "Provider=microsoft.ace.oledb.12.0;" & "Data Source=" &
HMIRuntime.ActiveProject.Path & "\report\dev_data.accdb"
Conn.Open
'dev_ID.SelIndex:设备编号,时间范围:strStartTime~strEndTime
SQL = "select * from dev" & dev_ID.SelIndex & " Where EN_T >= #" &
strStartTime & "# and EN_T <= #" & strEndTime & "# Order By EN_T ASC"
adors.Open SQL,Conn,1,3
'查询结果写到 excel
Dim xlApp,xlBook,xlSheet
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open( HMIRuntime.ActiveProject.Path & "\report\
模板\日报表模板.xlsx")
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Cells(1, 1) = dev_ID.SelIndex & "号设备日报表" '报表标题
xlSheet.Cells(2, 1) = "报表日期:" & date_select
adors.MoveFirst
Dim i
For i = 1 To adors.RecordCount
xlSheet.Cells(i + 3, 2) = FormatDateTime(adors.Fields(2).Value, 4) '启动时间
xlSheet.Cells(i + 3, 3) = FormatDateTime(adors.Fields(3).Value, 4) '停止时间
xlSheet.Cells(i + 3, 4) = DateDiff("n", adors.Fields(2).Value,
adors.Fields(3).Value) '运行时长
xlSheet.Cells(i + 3, 5) =adors.Fields(7).Value - adors.Fields(6).Value '运行数据 1
xlSheet.Cells(i + 3, 6) =adors.Fields(5).Value - adors.Fields(4).Value '运行数据 2
adors.MoveNext
Next
xlBook.SaveAs HMIRuntime.ActiveProject.Path & "\report\日报表\web\日报
表.htm",44
xlBook.Close
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
Set Conn = Nothing
Set adors = Nothing
'报表显示
Dim wbCtrl
Set wbCtrl = ScreenItems("控件 1") '"控件 1"为 Web 控件名称
wbCtrl.Navigate HMIRuntime.ActiveProject.Path & "\report\日报表\web\日报表.htm"
item.Enabled=True

结果如图 21 所示:

5.3 <运行结果> <激活 WinCC 运行系统,分别选择要查看报表的设备名称和日期,如图 22 所示。

然后点击“生成报表”按钮, WinCC 从数据库读取设定日期的相应设备的数据,显示在 WinCC 画面中。如图 23 所示。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科控物联 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档