故事作者:RENHQ

最近创作

看看TA的故事

【内行说】用变量归档实现报表一---表格控件显示数据

已锁定

RENHQ

西门子1847工业学习平台

  • 帖子

    12108
  • 精华

    59
  • 被关注

    1919

论坛等级:至圣

注册时间:2008-12-28

钻石 钻石 如何晋级?

【内行说】用变量归档实现报表一---表格控件显示数据

3970

16

2022-06-25 22:31:39

star star

4.1前言

一直以来很想写个关于报表的文章,但是给自己的理由是没有碰到需求,其实是太懒的原因,一直没有写,最近碰到了两个需求,于是根据朋友的要求,用项目上的归档数据进行测试,做了个简单的报表,说是报表,要求都是比较简单的,其实都类似于定时记录数据,然后根据日期把数据给显示出来。 都是日报表的形式,需求有点小的区别,一个是一个小时记录一次,一个是4个小时记录一次,数据用了两种方式来实现的:一是在项目的SQL数据库上新建了一个数据表,是用全局脚本把报表相关的数据定时插入数据库,显示的时候再是用脚本查询出来;另一个是用WinCC自带的变量记录功能,按小时进行归档,数据查询的时候,直接按日期把每天的数据查询出来,显示在表格里面,然后第三种,又测试了是用在线表格控件实现,也是用变量归档的方式,结果效果也挺好的,是用控件自带的打印和导出功能。 在比较早的时候,大约在12年左右吧,那个时候我还在处于对WinCC的摸索学习过程中,也做了一个报表项目,其实算是定时抄表功能,当时领导要求操作工,每个小时把设备运行的数据记录一遍,并签字形成纸质的存档,为了让操作工更专心的进行操作,同时也保证数据的准确,利用VBS全局脚本,每个班组开始的时候,使用报表模板文件,创建Excel文件,然后每个小时执行一次,把需要抄表的设备数据对应的变量值填入Excel文件中,到了班组结束时间,再自动打印出来,同时为了防止操作人员修改报表内容,还对每个班组的报表文件设置了只读密码。当时脚本逻辑做的虽然不是很简洁,但是18年我调离生产线之前,这个抄表系统运行还算稳定,只是有时候打印机有问题的时候可能自动打印会出错。最近好像有的网友也还有这种需求。 报表的实现方法很多,还有利用用户归档实现,或者购买第三方报表控件等等,这里主要是介绍一下使用WinCC自带的变量归档实现日报表的方式。

4.2 项目组态

先介绍是用变量归档的方式,这个是在一个项目内测试的,原来客户要求的数据就是一个小时记录一次,所以数据也就用的原来的项目组态,基本没有改变,这里也就截图大体介绍一些。 项目原来组态的归档时间都设置的为1个小时归档一次,归档为当前值,



报表的变量比较多,这里只截取了一小部分,其他的组态都是一样的。这里的归档可以选择当前值、最大值、最小值、平均值,如果你的报表需要选择最大或者平均值的话,可以再填一条归档,设置为最大值或者平均值就行,一个变量可以归档N次,只要名称不同就行。 为了使归档时间统一,后期的数据查询显示方便,还要统一在一个时刻里面进行记录,在定时器->周期时间里面设置定时器“1小时”的开始时间为为0分0秒进行归档。您也可以根据您的需要创建自己的归档周期。



4.3 在线表格显示数据

如果对表格界面要求不高的话,用WinCC自带的在线表格控件显示数据不失为一个很好的选择,其实表格控件设置一下,显示效果也是不错的,用在线表格控件有个最好的优点就是,刷新速度较快。如果根据画面的全局样式,对表格的背景颜色等做些设计,其实显示效果也很好,这里在论坛里面了个坛友做好的样式,帖子里面有分享的详细做法,可能比我的还要好一些,如果想要的话,可以点击文档左下方的阅读原文,到西门子官方论坛进行查看,截个图效果如下下面还是要简单介绍一下自带表格控件的一些设置


帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1754662&b_id=5



4.3.1 控件组态

表格数据的显示,还是要对控件进行一定的设置,主要的设置有下面几个:

常规选项卡里面的 打开画面->开始刷新取消勾选,如果勾选了之后,在显示其他其他的时候,还需要用脚本控制停止刷新,如果不需要自动刷新的功能,这里最好取消勾选。不取消勾选的话,需要用脚本控制停止刷新。



数值列选项卡,是设置报表内容,长度可以设置这一列表格显示的宽度,小数位可以根据你需要设置显示数值的精确小数点位数,或者不要设置成0



时间列的设置,这里主要设置时间范围,改为1-开始到结束的时间,这样才能使用脚本设置报表的起止时间,然后根据需要可以设置时间的格式,这里我设置成年-月-日 时:分:秒的样式,都带前导0,如果显示不完整,修改长度,改的大一些就能显示出来了。



组态到这里就差不多了,然后就是按钮脚本的编辑

4.3.2 按钮脚本及执行效果

按钮根据选择的日期,修改表格控件的起止时间,时间的选择是使用的DTPicker控件,控件的使用这里暂时不进行介绍。按钮通过选择日期,查询选择日期的时间0:0:0到第二天的0:0:0的数据。按钮完成脚本如下


Dim sStartTime,sEndTime
Dim DT,CO_EX
Set CO_EX = ScreenItems("AxOnlineTable1") '设置在线表格控件
Set DT = ScreenItems("DATA_ST") '设置DTPicker控件对象
sStartTime = DateValue(DT.Value) & " 00:00:00"'查询起始时间
sEndTime =  DateADD("d",1,sStartTime)'查询结束时间
CO_EX.Visible = True    '报表控件我默认设置为隐藏,如果直接显示的话,该行可以省略。
co_ex.TimeColumnRangeType = 1   '如果时间列没有设置成开始到结束时间,也可以使用改属性修改。
CO_EX.TimeColumnBeginTime = sStartTime
co_ex.TimeColumnEndTime = sEndTime


执行效果如下,报表



刷新效果根据计算机性能和硬盘,如果配置高一些应该是基本上秒刷。

4.3.4 数据的导出到EXCEL

对于数据的导出,如果要求不高的话,控件自带的导出功能就可以实现,在控件工具栏里面有导出按钮,或者使用控件的Export函数也能弹出导出的对话框。

如果在工具栏里面没有,可以在控件属性里面的工具栏选项卡里面勾选"导出数据"后即可显示出来



点击导出按钮之后,默认就可以弹出导出数据选项卡,在选项卡里面可以设置导出数据的路径,范围,格式(7.4版本智能导出为csv格式),还有就是csv格式的分隔符,然后点击确定,



就能在你选择的路径找到你设置的文件名的文件,你可以使用office或者wps软件打开,这里使用的是免费版的wps软件打开,然后设置一下数据分裂,显示效果还是可以的



如果您不想导出的显示对话框,那可以在,控件属性的导出选项卡进行设置



如果这种导出csv格式的文件,不是很喜欢,感觉打开的时候或者打开之后的样式都不是很满意,那么就只能用脚本获取表格里面数据的内容,然后打开EXCEL模板,把数据复制到Excel表格里面去,复制的过程研究了几天,也没有什么很好的办法,从控件里面挨个单元格的进行读取然后对应的填充到EXCEL表格里面。 从帮助里面找了一段脚本,然后添加上写入到EXCEL的部分,完整的脚本如下:

Dim oExcel,oWBook,co
Dim lCellIndex,lCellCount
Dim lRowIndex,lRowCount
Dim headingRow,selectedRow,selectedRows
Set co = ScreenItems("AxOnlineTable1")
Set headingRow = co.GetRow(0)
co.SelectAll()
Set selectedRows = co.GetSelectedRows
Set oExcel = CreateObject("Excel.Application")
Set oWBook = oExcel.workbooks.open(HMIRuntime.ActiveProject.Path & "\template.xls")
oExcel.visible = True
lCellCount = headingRow.CellCount
lRowCount = selectedRows.Count
For lRowIndex = 1 To lRowCount
Set selectedRow = selectedRows(lRowIndex)
For lCellIndex = 1 To lCellCount
oWBook.Sheets("Sheet1").cells(lRowIndex+1,lCellIndex).value=selectedRow.CellText(lCellIndex)
Next
Next
oWBook.saveas "E:\1.xls"
oWBook.close()
Set oWBook=Nothing
Set oExcel=Nothing

执行完成后,导出的表格部分截图如下:



效果和上面导出的效果倒是差不很多,如果模板做好的话,有点就是可以保持模板的样式,打开之后效果更好一些,如果打印的话,也更方便进行打印


【内行说】用变量归档实现报表一---表格控件显示数据 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3227条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。