WINCC报表.pdf

上传人:紫竹语嫣 文档编号:5473192 上传时间:2020-05-17 格式:PDF 页数:35 大小:2.99MB
返回 下载 相关 举报
WINCC报表.pdf_第1页
第1页 / 共35页
WINCC报表.pdf_第2页
第2页 / 共35页
WINCC报表.pdf_第3页
第3页 / 共35页
WINCC报表.pdf_第4页
第4页 / 共35页
WINCC报表.pdf_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《WINCC报表.pdf》由会员分享,可在线阅读,更多相关《WINCC报表.pdf(35页珍藏版)》请在三一文库上搜索。

1、 WinCC 数据报表实现方法介绍WinCC 数据报表实现方法介绍 How use WinCC create data report Getting-started Edition (2010 年年4 月月) 摘摘 要要 本文对数据报表的需求进行了分析,结合 WinCC 就复杂数据报表的实现进行了介绍。 关键词关键词 WinCC,报表 Key Words WinCC, Report IA /Return-Type: BOOL SetTagBit(“AarcB“,1); /Return-Type: BOOL SetTagBit(“BarcE“,1); /Return-Type: BOOL Set

2、TagBit(“BarcB“,0); /Return-Type: BOOL else if(!strcmp(GetTagChar(“CurrentUser“),“erban“) SetTagBit(“BarcE“,0); /Return-Type: BOOL SetTagBit(“BarcB“,1); /Return-Type: BOOL SetTagBit(“AarcE“,1); /Return-Type: BOOL SetTagBit(“AarcB“,0); /Return-Type: BOOL 该动作通过 WinCC 内部变量CurrentUser 的变化来触发。 图 14.触发条件 这

3、样在项目中 A 班的用户登录就触发 ATagArc 变量的归档,B 班的用户登录就触发 BTagArc。从而达到分班统计的目的。过程变量属性在这里我们选择实际值。 IA“ sDsn=“Catalog=CC_FXReport_09_02_08_13_58_39R;“ sSer = “Data Source=.WinCC“ sCon = sPro + sDsn + sSer BeginTime.Read EndTime.Read sSql=“Tag:R,MyPAATagArc,“ + BeginTime.Value + “,“+ EndTime.Value +“ MsgBox “Opened wi

4、th “ & vbCr & sCon & vbCr & sSql & vbCr, vbOKCancel Set conn=CreateObject(“ADODB.Connection“) conn.ConnectionString = sCon conn.CursorLocation = 3 conn.Open Set oRs=CreateObject(“ADODB.Recordset“) Set oCom=CreateObject(“ADODB.Command“) oCom.CommandType = 1 Set oCom.ActiveConnection = conn oCom.Comma

5、ndText = sSql Set oRs = oCom.Execute n=oRs.RecordCount返回的数据集数 MsgBox n If (n0)Then oRs.MoveFirst n = 0 Sum = 0 Avg = 0 Min = oRs.Fields(2).Value Max = oRs.Fields(2).Value Do While Not oRs.EOF n = n + 1 IA&DT Service & Support Page 16-35 V = oRs.Fields(2).Value Sum = Sum + V If VMax Then Max = V If V

6、1) Then Avg = Sum / n HMIRuntime.Tags(“incount“).Write n HMIRuntime.Tags(“AavgTag“).Write FormatNumber(Avg,2) HMIRuntime.Tags(“AmaxTag“).Write FormatNumber(Max,2) HMIRuntime.Tags(“AMinTag“).Write FormatNumber(Min,2) Else HMIRuntime.Trace “selection return no fields“&vbNewLine End If conn.Close Set o

7、Com= Nothing Set oRs=Nothing Set conn=Nothing 打印调用(创建了一个全局动作通过 Printer 的变化调用打印作业) Printer0.Read If Printer0.Value = 0 Then Printer0.Write 1 Else Printer0.Write 0 End If 上面的方法就能得出 A 班的最大值、最小值和平均值,并把这些值存放在预先定义的 内部变量里。同样的方法可以求出别班的数据信息。 最后就是布局设计。这个布局的设计原理很简单,就是把“变量”添加到布局中。排列 对齐就可以了。如下图: IA&DT Service &

8、Support Page 17-35 图 16.报表布局 最后组态输出界面。在画面中组态如下界面,调用脚本和打印任务就可以了。 图 17.操作界面 该程序可以实现对任意时间范围呢的数据进行统计打印。输出结果如下图: 图 18.打印输出 IA&DT Service & Support Page 18-35 3.2 用户归档实现分总式报表 3.2 用户归档实现分总式报表 报表图 2 涉及到数据的统计。单纯的存储不难,关键如何统计。从报表上分析,一天只 会产生一条记录。完全可以选择使用用户归档实现。 首先在用户归档中创建一个归档,分别连接相应的需要记录的变量。并创建一个字符串 类型的域用于存储日期。

9、 图 19.用户归档 针对用户归档创建如下控制变量: 图 20.控制变量 关于控制变量的说明参考: WinCC Information system选项-用户归档-组态-组态用户归档-控制变 量的属性。当 ID=-1 指令=6 时,就可以把过程值存放到归档数据库中。 IA&DT Service & Support Page 19-35 关于日期可以通过如下脚本得到: riqi=CStr(Year(Now)&“-“&CStr(Month(Now)&“-“&CStr(Day(Now) 可以新建一个系统变量选择日期函数,通过每天的变化触发用户归档控制变量的指令和 ID 的变化,从而达到定时触发的目的

10、。如图: 图 21.系统变量定义 这样我们就得到了每天的数据记录。下一步组态页面。在页面布局中添加一个用户归档 表格控件、一个静态文本和一个 ODBC 数据库表。为了实现分页功能需要对静态文本的属性作 如下设置: 图 22.页面布局 IA&DT Service & Support Page 20-35 图 23.静态文本属性设置 下面我们分别设置用户归档和 ODBC 数据库表控件的参数。 图 23.归档控件设置 图 23.ODBC 控件设置 IA&DT Service & Support Page 21-35 画面中查寻按钮的代码: Dim riqivar Set riqivar = HMIR

11、untime.Tags(“riqivar“) Dim xinjiangFilter Set xinjiangFilter = HMIRuntime.Tags(“xinjiangFilter“) Dim xinjiangorder Set xinjiangorder = HMIRuntime.Tags(“xinjiangorder“) Dim mytestsql Set mytestsql = HMIRuntime.Tags(“mytestsql“) riqivar.Read xinjiangFilter.Read xinjiangFilter.Write “ MyDate like “&riq

12、ivar.Value&“%“ xinjiangorder.Read xinjiangorder.Write “MyDate ASC“ mytestsql.Read mytestsql.Write “select sum(picishu)as 批次数,sum(zongzl) as 总重量 ,sum(zhuliao) as 主料,sum(fuliao1) as 1#辅料,sum (fuliao2) as 2#辅料,sum(fuliao3) as 3#辅料,sum(fuliao4) as 4#辅料 ,sum(fuliao5) as 5#辅料,sum(fuliao6) as 6#辅料 from UA#

13、peixianchengzhong where MyDate like “&riqivar.Value&“%“ 至此在画面中输入查询日期的条件执行上面的代码就能返回相应的数据集。最后调用打印任 务就可以了。 打印中常见问题的说明希望对大家有所帮助。 整点触发问题整点触发问题: 可以通过在变量管理? SYSTEM INFO 下创建变量用于取得系统小时值。这个值是随着系统时 钟而变化的。一旦改变就可以用来触发归档或者打印任务。 也可以通过脚本实现,参照网上的例子:如何整点启动归档: http:/ 对齐问题对齐问题:WinCC 提供很好的数据接口,那么在报表格式上来讲如何控制一直是个难题。下 面是一

14、些细节介绍希望对大家能有所帮助。 通过菜单栏中的放大功能可以很好的查看控件的对齐效果。 IA&DT Service & Support Page 22-35 图 24. 放大功能 通过菜单栏 工具设置,可以把页面精确设置到毫米,同时可以设定控件是否和网 格对齐。从而方便我们的排版设计。 图 25. 网格设置 IA&DT Service & Support Page 23-35 4.WinCC 报表功能总结 4.WinCC 报表功能总结 通过上面的分析我们不难看出,WinCC 的报表系统提供了很好的数据接口,我们可以很 方便的就取出 WinCC 的归档数据和外部数据库的数据。无需很多的编程知识。

15、同时在过程归 档可以很容易的就得到变量的最大值、最小值、平均值等信息。 过程值归档中无法建立关系和对字符串进行归档。这些功能使用用户归档可以实现。其 实很多人不使用 WinCC 自带的报表功能,很大程度上是因为布局不好掌控。确切来讲在格式 的控制上 WinCC 是有些不适合中国国情。 延伸话题:其实数据的报表打印就是对数据的存储记录工作,有时候我们需要的并不是 打印出一张纸,而是需要对数据的分析和整理。从这个角度出发,WinCC 如果能提供一个强 大的前台数据统计分析控件就更完美了。当然对于数据的分析统计,在现场应用中很大程度 上是由 MIS 系统和 ERP 系统来实现的。WinCC 在这个环

16、节是作为一个数据源的身份出现的。 但是它的 DatMonitor 工具提供了很好的数据接口,用于分析和输出数据。也不失为一个很 好的数据分析统计选件。 5.使用脚本和 EXCEL 实现实时数据报表 5.使用脚本和 EXCEL 实现实时数据报表 论坛中很多人使用 VBS 和 EXCEL 实现报表功能。下面做了一个示例仅供参考: 5.1 在 WINCC 中使用 VBS 脚本通过 EXCEL 实现实时数据报表 5.1 在 WINCC 中使用 VBS 脚本通过 EXCEL 实现实时数据报表 使用 VBS 脚本和 EXCEL 工具,同样可以生成需要的报表。一般的思路是:预先使用 excel 设计好报表的

17、样式,然后在 WinCC 中使用 VBS 脚本把相应的数据写入事先定义好的表格中。 下面给出实现的方法。 右键点击按钮打开属性对话框,在事件页右键单击鼠标动作选择 VBS 动作。如下图: 图 26. 动作定义 IA&DT Service & Support Page 24-35 在该事件中写入如下脚本: 定义变量 Dim objExcelApp,objExcelBook,objExcelSheet Dim tagwendu,tagyali,tagliuliang,tagzhongliang,tagyuanliao,tagchengfen Dim tagshijian,sheetname,use

18、rname,zhushi Dim qushi1,qushi2,qushi3,qushi4,qushi5,qushi6,qushix,tagstring,qushivalue Dim x,y,z,i,j Dim msg 声明 Set tagwendu=HMIRuntime.Tags(“wendu“) Set tagyali=HMIRuntime.Tags(“yali“) Set tagliuliang=HMIRuntime.Tags(“liuliang“) Set tagzhongliang=HMIRuntime.Tags(“zhongliang“) Set tagyuanliao=HMIRun

19、time.Tags(“yuanliao“) Set tagchengfen=HMIRuntime.Tags(“chengfen“) Set username=HMIRuntime.Tags(“CurrentUserName“) Set zhushi=HMIRuntime.Tags(“zhushi“) msg=“ok“ sheetname=“sheetdemo“ 判断是否打开模版,如果打开先关闭保存 On Error Resume Next Dim ExcelApp,ExcelBook Set ExcelApp = GetObject(,“Excel.Application“) If TypeN

20、ame(ExcleApp) = “Application“ Then For Each ExcelBook In ExcelApp.WorkBooks If ExcelBook.FullName = “D:excelreportwinccvbsexcel.xls“ Then ExcelApp.ActiveWorkbook.Save ExcelApp.Workbooks.Close ExcelApp.Quit IA&DT Service & Support Page 25-35 Set ExcelApp= Nothing Exit For End If Next End If 创建对象 Set

21、objExcelApp =CreateObject(“Excel.Application“) open file objExcelApp.Visible=True objExcelApp.Workbooks.Open“D:excelreportwinccvbsexcel.xls“ objExcelApp.Worksheets(sheetname).Activate 清除模版数据 With objExcelApp.Worksheets(sheetname) For i=5 To 25 For j=1 To 7 .cells(i,j)=Null Next Next For i=26 To 26 F

22、or j=1 To 6 .cells(i,j)=Null Next Next End With 实时数据写入 tagshijian=Now objExcelApp.Worksheets(sheetname).cells(2,2).value= tagshijian username.Read objExcelApp.Worksheets(sheetname).cells(2,7).value= username.Value zhushi.Read objExcelApp.Worksheets(sheetname).cells(27,7).value= zhushi.Value IA&DT Se

23、rvice & Support Page 26-35 objExcelApp.Worksheets(sheetname).cells(27,7).Font.Bold = TRUE objExcelApp.Worksheets(sheetname).cells(27,7).Interior.ColorIndex = 25 objExcelApp.Worksheets(sheetname).cells(27,7).Font.ColorIndex = 7 objExcelApp.Worksheets(sheetname).cells(27,7).Font.size=18 tagstring=“qus

24、hi“ For i=1 To 6 For j=30 To 35 qushix=tagstring&CStr(i) Set qushivalue=HMIRuntime.Tags(qushix) qushivalue.Read objExcelApp.Worksheets(sheetname).cells(j,2).value= qushivalue.Value Next Next For i=5 To 25 With objExcelApp.Worksheets(sheetname) .cells(i,1).value= tagshijian tagwendu.Read .cells(i,2).

25、value= tagwendu.Value tagyali.Read .cells(i,3).value= tagyali.Value tagliuliang.Read .cells(i,4).value= tagliuliang.Value tagzhongliang.Read .cells(i,5).value= tagzhongliang.Value tagyuanliao.Read .cells(i,6).value= tagyuanliao.Value tagchengfen.Read .cells(i,7).value= tagchengfen.Value End With Nex

26、t IA&DT Service & Support Page 27-35 MsgBox msg 关闭保存 Dim patch,filename filename=CStr(Year(Now)&CStr(Month(Now)&CStr(Day(Now)&CStr(Hour(Now)+CStr (Minute(Now)&CStr(Second(Now) patch= “d:“&filename&“demo.xls“ objExcelApp.ActiveWorkbook.SaveAs patch objExcelApp.Workbooks.Close objExcelApp.Quit Set obj

27、ExcelApp= Nothing 输出结果如下图: 图 27. 输出结果 IA&DT Service & Support Page 28-35 5.2 如何使用 EXCEL 访问 WinCC 中的实时数据实现报表 5.2 如何使用 EXCEL 访问 WinCC 中的实时数据实现报表 如果项目已经做好了,不想改动现有项目。那么可以使用 EXCEL 通过 OPC 方式访问 WinCC 项目的数据。预先定义好 EXCEL 表格样式,通过以下方式实现。 通过以下步骤打开 EXCEL 中的 VB 编辑器。 图 28.打开编辑器 引用 WinCC 提供的 OPC客户端 Control 控件: Sieme

28、ns OPC DAAutomation 2.0( SOPCDAAuto.dll)。 图 29.打开引用界面 IA&DT Service & Support Page 29-35 图 30.对象引用 创建起始画面 图 31.创建画面 编程实现 变量声明 IA&DT Service & Support Page 30-35 Option Explicit Option Base 1 Const ServerName = “OPCServer.WinCC“ Dim WithEvents MyOPCServer As OPCServer Dim WithEvents MyOPCGroup As OPC

29、Group Dim MyOPCGroupColl As OPCGroups Dim MyOPCItemColl As OPCItems Dim MyOPCItems As OPCItems Dim MyOPCItem As OPCItem Dim ClientHandles(10) As Long Dim ServerHandles() As Long Dim Values(1) As Variant Dim Errors() As Long Dim ItemIDs(10) As String Dim GroupName As String Dim NodeName As String Dim

30、 fxItemValue(10) As Variant 在按钮“启动 OPC 客户端”中添加以下代码 - 目的: 连接到 OPC_server,创建组并添加条目 - 发生错误则转到 ErrorHandler - 可以自由选择 ClientHandle 和 GroupName Dim i As Integer On Error GoTo HANDLEeRROR For i = 1 To 7 ClientHandles(i) = i 先配置名柄索引 这将在读取 OPC 标签值时可要用到 Next i ClientHandles(1) = 1 GroupName = “MyGroup“ IA&DT

31、Service & Support Page 31-35 - 从窗口对话框中取得 ItemID NodeName = txtNoteName.Value ItemIDs(1) = Range(“j5“).Value从 EXCEL 表格 j5 中读取变量名称 ItemIDs(2) = Range(“j6“).Value ItemIDs(3) = Range(“j7“).Value ItemIDs(4) = Range(“j8“).Value ItemIDs(5) = Range(“j9“).Value ItemIDs(6) = Range(“j10“).Value - 取得 OPC-Server

32、 实例 Set MyOPCServer = New OPCServer MyOPCServer.Connect ServerName, NodeName Set MyOPCGroupColl = MyOPCServer.OPCGroups - 设置用于添加组的默认活动状态 MyOPCGroupColl.DefaultGroupIsActive = True - 将我们的组添加到集合中 Set MyOPCGroup = MyOPCGroupColl.Add(GroupName) Set MyOPCItemColl = MyOPCGroup.OPCItems - 调价一个条目,即返回 Server

33、Handle MyOPCItemColl.AddItems 10, ItemIDs, ClientHandles, ServerHandles, Errors - 订阅的组收到异步通知 MyOPCGroup.IsSubscribed = True Exit Sub ErrorHandler: MsgBox “Error: “ & Err.Description, vbCritical, “ERROR“ 在按钮“停止 OPC 客户端”中添加以下代码 - 目的: 释放对象并断开与服务器的连接 - - 释放组和服务器对象 MyOPCGroupColl.RemoveAll - 断开与服务器的连接并清除

34、 IA&DT Service & Support Page 32-35 MyOPCServer.Disconnect Set MyOPCItemColl = Nothing Set MyOPCGroup = Nothing Set MyOPCGroupColl = Nothing Set MyOPCServer = Nothing 创建实时刷新数据的函数 目的: 组中的数值、质量或时间标志改变时,该事件激活 - 如果安装了 OPC-DA Automation 2.1,使用: Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Lon

35、g, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date) - 将数据表单元格的值设置为读取的数值 Dim ii As Integer For ii = 1 To NumItems fxItemValue(ClientHandles(ii) = ItemValues(ii) Next ii Range(“A5“).Value = CStr(TimeStamps(1) Range(“B5“).Value = CStr(

36、fxItemValue(1) Range(“C5“).Value = Hex(Qualities(1) Range(“C5“).Value = CStr(fxItemValue(2) Range(“D5“).Value = CStr(fxItemValue(3) Range(“E5“).Value = CStr(fxItemValue(4) Range(“F5“).Value = CStr(fxItemValue(5) Range(“G5“).Value = CStr(fxItemValue(6) End Sub 打印预览的代码 UserForm.Hide Sheet1.PrintPrevie

37、w 退出画面 UserForm.Hide IA&DT Service & Support Page 33-35 打开 EXCEL 激活宏。运行的界面如下,在服务器名称中输入相应的计算机节点名称,点 击“启动 OPC 客户端”。就能得到相应的数据。 图 32.操作界面 至此完成了使用 EXCEL 通过 OPC 方式访问 WinCC 项目中数据的方法。 如果您对该文档有任何建议,请将您的宝贵建议提交至如果您对该文档有任何建议,请将您的宝贵建议提交至下载中心留言板下载中心留言板。 该文档的文档编号:该文档的文档编号:A0300 IA&DT Service & Support Page 34-35 附

38、录推荐网址附录推荐网址 SIMATIC HMI 人机界面人机界面 西门子(中国)有限公司 工业自动化与驱动技术集团 客户服务与支持中心 网站首页: WinCC下载中心下载中心: http:/ 9&CatThird=-1 HMI全球技术资源全球技术资源:http:/ “找答案”“找答案”WinCC版区: http:/ 注意事项注意事项 应用示例与所示电路、设备及任何可能结果没有必然联系,并不完全相关。应用示例不表示 客户的具体解决方案。它们仅对典型应用提供支持。用户负责确保所述产品的正确使用。这 些应用示例不能免除用户在确保安全、专业使用、安装、操作和维护设备方面的责任。当使 用这些应用示例时,

39、应意识到西门子不对在所述责任条款范围之外的任何损坏/索赔承担责 任。我们保留随时修改这些应用示例的权利,恕不另行通知。如果这些应用示例与其它西门 子出版物(例如,目录)给出的建议不同,则以其它文档的内容为准。 声明声明 我们已核对过本手册的内容与所描述的硬件和软件相符。由于差错难以完全避免,我们不能 保证完全一致。我们会经常对手册中的数据进行检查,并在后续的版本中进行必要的更正。 欢迎您提出宝贵意见。 版权 西门子(中国)有限公司 2001-2008 版权保留 复制、传播或者使用该文件或文件内容必须经过权利人书面明确同意。侵权者将承担权利人 的全部损失。权利人保留一切权利,包括复制、发行,以及改编、汇编的权利。 西门子(中国)有限公司西门子(中国)有限公司 IA&DT Service & Support Page 35-35

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料


经营许可证编号:宁ICP备18001539号-1