回复:技术专题探讨-WinCC实现报表的不同方法及其应用

WinCC训练营讲师

  • 帖子

    35
  • 精华

    1
  • 被关注

    3

论坛等级:游侠

注册时间:2008-01-29

黄金 黄金 如何晋级?

发布于 2009-03-10 14:28:24

0楼

对于“0精益求精0 ”和“妮妮1”发上来的报表。我有一个解决的方法,最终测试了一下没有问题。思路是这样的(供参考):
使用工具:用户归档+WinCC报表编辑器中ODBC数据表和数据域。
需要的基础:简单的SQL查询语句+WinCC中字符串相加+WinCC布局设计知识。
步骤:
1、数据存储结构设计
他们的要求基本上是一个小时一条记录,数据量不大。使用用户归档完全满足需要。首先按照表格字段创建归档,并增加一些字段(日期、MYID)等,利于查询和排序。
2、定时触发功能
数据的准确性是大家很关心的问题,那么如何定时触发呢?
我的思路是这样的,用简单的方法实现复杂的问题。
WinCC的变量管理里有一个system info 在这个通道下可以创建一个时间(小时)变量timetag。那么这个变量是随着系统的时间变化而变化的。我们可以用这个timetag,作为触发条件,控制用户归档的写入控制变量。从而达到定时存储的目的。
3、关于报表的展示。
通过WinCC布局中的ODBC数据表和数据域就可以实现。
比如说“妮妮1”发的报表,可以在布局中设计好表头,然后加入六个ODBC数据表。分别连接A班的数据、A班平均、B班数据、B班平均、C班数据、C班平均。
报表左侧的操作备注,可以通过矩形框实现,里面添加变量。
“0精益求精0 ”那张报表也类似。唯一不同的是在表上多加一些变量用于连接操作人员输入的料名称。
4、涉及到的部分脚本
取得系统时间存入数据库
Dim riqi
Dim riqijiu
Set riqijiu = HMIRuntime.Tags("riqijiu")
riqi=CStr(Year(Now))&"-"&CStr(Month(Now))&"-"&CStr(Day(Now))
riqijiu.Read
riqijiu.Write ""&riqi&""
如何处理跨天问题的脚本供参考:
xiaoshi=Hour(Now)
If xiaoshi=0 Then
shijianjilu.Read
shijianjilu.Write "23:00-24:00"
riqi=Date(Now)-1
riqijilu.Read
riqijilu.Write "'"&riqi&"'"
Else
xiaoshi1=Hour(Now)-1
shijianjilu.Read
shijianjilu.Write ""&xiaoshi1&":00-"&xiaoshi&":00"
riqi=CStr(Year(Now))&"-"&CStr(Month(Now))&"-"&CStr(Day(Now))
riqijilu.Read
riqijilu.Write ""&riqi&""


返回A班的每小时的数据集 (sqljiua绑定在ODBC数据表上)
sqljiua.Write "select shijianjiu,var1,var2,var3,var4,var5,var6,var7,var8,var9,var10 from UA#jiu where riqijiu like '"&sqlriqijiu.Value&"%' and shijianjiu between 0 and 7 order by shijianjiu"
返回A班平均的数据集(sqljiuaavg绑定在ODBC数据表上)
sqljiuaavg.Write "select avg(var1),avg(var2),avg(var3),avg(var4),avg(var5),avg(var6),avg(var7),avg(var8),avg(var9),avg(var10) from UA#jiu where riqijiu like '"&sqlriqijiu.Value&"%' and shijianjiu between 0 and 7 "
5、操作界面
在画面中创建一个I/O域,用于输入查询条件(sqlriqijiu)。
做一个按钮,执行上面的代码,返回的结构就输入到页面部局的控件中了。
然后执行打印任务!当然也可以同时执行上述的动作。因为VBS不支持wincc自带的打印函数,那么我们可以通过VBS控制变量变化,通过变量变化然后执行C动作实现打印!
6、其它
在页面组态时对齐一直是个很麻烦的事情。我一般这样处理。
通过 工具-->设置-->网格 此处可以设置网格的宽度和高度(精确到毫米),同时设置是否和网格对齐。
通过 视图--〉缩放 功能可以放大页面,查看对齐效果。
有时候会出现动态部分把静态部分覆盖的情况。设置 页面右键--〉属性--〉几何 里面的动态部分上边距调整该部分参数即可。
关于定时打印问题,可以在打印作业属性--〉常规中设置。也可以在全局动作中使用定时器触发。

管理员注:本帖已被纳入此次探讨发帖整理之方案汇总,请点此详阅
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32575条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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