wincc报表 功能如下: 日报表:每日24点数据,如果设置的是累计值,计算每小时的差值,和最终汇总一日总累计 月报表:每日0点数据显示,如果设置的是累计值,计算每日的差值,和最终汇总一月总累计 年报表:每月1日0点数据显示,如果设置的是累计值,计算每月的差值,和最终汇总一年总累计 时段报表:可自由选择时间段查询,可以设置时间间隔:1、5、10、20、30、60 的分钟间隔,显示值为左侧时间点数据实际值 报表表格 宽度可以自由配置,报表界面大小可以自由拖动大小,报表参数方便配置,不需要任何编程 不需要sql基础,适用wincc任何版本! 不需要sql基础,适用wincc任何版本!

工厂老师傅最头疼的不是设备故障,而是月底做生产报表时对着WinCC抓耳挠腮。今天咱们聊聊怎么不用SQL、不写代码,用WinCC自带的工具整出各种花式报表。(文末有配置参数避坑指南)

痛点直击:传统做法要在全局脚本里写VBS查数据库,光是处理时间戳就让人头大。现在直接用WinCC Report Control控件,搭配这个参数配置表:

字段名称 数据类型 备注
@StartTime DateTime 查询开始时间
@Interval Int 间隔分钟数(时段报表)
@TagPrefix String 变量名前缀

日报表实战

`vb

' 在按钮事件中调用日报生成

Sub GenerateDayReport()

Dim rt = CreateObject("WinCC.ReportRuntime")

rt.ReportName = "DailyReport"

rt.SetParameter "@Mode", 1 '1=日报模式

rt.PrintToPDF "D:\Reports\日报_" & FormatDateTime(Now, 2) & ".pdf"

End Sub

`

wincc报表 功能如下: 日报表:每日24点数据,如果设置的是累计值,计算每小时的差值,和最终汇总一日总累计 月报表:每日0点数据显示,如果设置的是累计值,计算每日的差值,和最终汇总一月总累计 年报表:每月1日0点数据显示,如果设置的是累计值,计算每月的差值,和最终汇总一年总累计 时段报表:可自由选择时间段查询,可以设置时间间隔:1、5、10、20、30、60 的分钟间隔,显示值为左侧时间点数据实际值 报表表格 宽度可以自由配置,报表界面大小可以自由拖动大小,报表参数方便配置,不需要任何编程 不需要sql基础,适用wincc任何版本! 不需要sql基础,适用wincc任何版本!

重点说下累计值处理技巧:在变量归档里勾选"差分计算",系统会自动用当前值减去前一个小时的最后值。总累计直接取当日23:59:59的归档值即可。

时段报表的骚操作

  1. 在画面中拖入MSFlexGrid控件
  2. 绑定这个预置查询:

`sql

SELECT

DATEADD(minute, (DATEDIFF(minute, @StartTime, Timestamp)/@Interval)*@Interval, @StartTime) AS TimeSlot,

AVG(Value) AS AvgValue

FROM Archive

WHERE TagName LIKE @TagPrefix + '%'

GROUP BY DATEADD(minute, (DATEDIFF(minute, @StartTime, Timestamp)/@Interval)*@Interval, @StartTime)

`

虽然用了SQL语法,但实际配置时就像填Excel公式——把@开头的参数替换成画面上的输入框即可。

避坑指南

  • 时间区间建议用DateTimePicker控件,避免手动输入格式错误
  • 累计量必须启用"周期差分"归档,否则差值计算会出鬼
  • 表格宽度配置在控件的Property中搜索"ColumnWidths",用逗号分隔的像素值,比如"80,120,200"

实测这套方案在7.2到7.5版本都能跑,老系统记得打上最新的Hotfix。报表界面用Anchor属性设置停靠方式,拖动时自动拉伸的效果比默认的固定尺寸顺眼多了。

最后提醒:配置完参数后务必点"Test"按钮跑一遍模拟,有时候时间区间包含无效数据会导致整个报表崩掉。实在搞不定的话...其实可以偷偷把报表任务丢给夜班维护工程师(手动狗头)

Logo

一站式 AI 云服务平台

更多推荐