通过WinCC 的Global Script 实现报表功能
- 格式:pdf
- 大小:631.84 KB
- 文档页数:9
西门子wincc数据报表的实现方式【摘要】随着工业领域的不断发展,用户需求一种以人机界面为控制主体的视窗控制体系的过程监控系统,以此来取代原来的以现场操作按钮和仪表为主的操作体系。
通过开放性、灵活性的可视化界面,迅速并直接的处理生产过程中的事件信息。
凭借这种战略思想,WINCC,运行于Windows系统下的控制中心,已发展成为工业市场领域的领导者,乃至业界遵循的标准。
Wincc集生产自动化和过程自动化于一体,应用于各种工业自动化领域,是提高工厂生产效率的上乘之选,并支持多种语言。
工业生产中,报表系统通常是控制系统中非常重要的一部分,是企业管理的基本措施和途径,它通常用来记录重要的现场工艺参数和统计信息。
早期,都是由人工记录的方式进行统计汇总,数据也只能有一种几乎只有记录员才能理解的表现形式,且这种形式难于更改。
当进入计算机时代后,报表这部分工作完全可以由计算机软件来实现,数据动态化,格式多样化,用户可以自己修改数据或格式。
针对自动化工程师而言,如何利用wincc软件来开发适合用户需求的报表,并且高效灵活的解决统计数据是自动化工程师必须掌握的一门技术,也是企业日常生产维护和管理中不可或缺的管理手段之一。
报表的变现形式分为许多种,大体上可分为两种形式:曲线格式和表格格式。
曲线形式主要是利用WINCC自带控件来实现,在控件属性中,可对趋势、常规、字体、趋势窗口、时间轴、数值轴、工具栏、状态栏、在线组态、导出中具体参数进行设置,以符合用户的生产需求和审美要求。
例如,时间轴可设成1分钟,1小时或者1天的形式,数值轴可以设置成根据实际测量值实时改变数值轴的范围。
应用在线趋势曲线的前提条件是,用户需要在变量记录里设置需要归档的变量内容和归档周期等一系列参数。
针对于一些特殊归档要求,曲线形式的归档可能满足不了用户的需求,往往用户需要生成一种支持打印功能并以表格形式查询的数据归档报表。
针对于这类复杂的报表,可以通过用户归档和Wincc报表编辑器来实现此类功能。
WinCC数据报表实现方法介绍在工业生产中报表一直占有非常重要的部分,它一般用来记录现场的工艺参数和统计信息。
早期是由人工抄录然后统计出相关的报表。
进入计算机控制阶段,这份工作就需要工控软件来实现。
对于工控行业的工程师来说:如何开发适合用户需求的报表一直是个难题。
接下来就从报表的需求分析、WinCC报表系统的应用、复杂报表的WinCC报表系统实现这几个部分来分别介绍。
最后总结出WinCC报表系统在应用的优缺点和常见的问题的解决方法。
1.报表的需求分析从需求上来讲报表一般分为:内容上的需求、样式上和任务上的需求。
内容需求内容上一般涉及到数据的求和、平均、最大值、最小值等计算,同时也会涉及到关系的处理,比如班组相关对应信息的统计分析等。
下面是一个很典型的报表需求,就很能说明这样的问题:图1. 月报表分析此报表是典型的工业现场应用,在数据采集没有难度。
唯一的难度在于四班三倒后,每个月班的出勤日是不一样的,这样对于月报来说,计算出本月每个班的出勤日是需要些算法。
此类报表在连续生产的行业需求很广泛。
比如:钢铁冶金行业需要一天24小时不停运转的系统。
还有一种内容上是分总的关系,就是一部分是简单的数据记录,另一部分是对上一部分数据的统计,比如汇总、求和、平均等。
如下图也是很典型的应用:图2. 总分报表另外一种就是涉及到混合排列的问题,一张表上既有分项数据,中间也涉及到统计信息,同时也会添加一些实时的信息在上面。
如下图:图3. 复杂报表这是一个复杂的报表,中间涉及到分项的记录,数据求平均,和一些操作信息的记录。
既有历史数据也有实时信息。
当然更复杂的报表需求也是有的,比如说涉及到一张报表上既有实时信息又有历史信息同时还涉及趋势视图、报警信息等。
用户自己可以灵活的定义报表的内容和样式。
比如下图:图4.用户定制报表样式内容上的需求就本质来讲是对客户关心信息的总结和整理。
内容的需求也就决定了报表的样式和可能采用的数据处理方式。
WinCC中全局脚本VBS归档到Excel中用一个变量触发数据归档到Excel中,请高手看看我写的为何不能运行。
Sub procedure1If Item.OutputValue = "NewTag" ThenDim oVar,oBlendingVar,objExcelApp,oWorkBook,ExcelTableFull,oFileNameOn Error Resume NextExcelTableFull=0Set objExcelApp=CreateObject("Excel.Application")objExcelApp.Visible=FalseSet oWorkBook=objExcelApp.Workbooks.Open("D:\BKHL_HXBJ\模板\Receipt_Table.xls") Dim iBlankLineiBlankLine=oWorkBook.ActiveSheet.Columns(1).Find("0").Row'MsgBox("iBlankLine="&iBlankLine)If iBlankLine<504 ThenobjExcelApp.Cells(iBlankLine,1).Value=HMIRuntime.SmartTags("Recipe_Number").Value objExcelApp.Cells(iBlankLine,2).Value=HMIRuntime.SmartTags("BaseOil_Percent_1").Value objExcelApp.Cells(iBlankLine,3).Value=HMIRuntime.SmartTags("BaseOil_Percent_2").Value objExcelApp.Cells(iBlankLine,4).Value=HMIRuntime.SmartTags("BaseOil_Percent_3").Value objExcelApp.Cells(iBlankLine,5).Value=HMIRuntime.SmartTags("BaseOil_Percent_4").Value objExcelApp.Cells(iBlankLine,6).Value=HMIRuntime.SmartTags("BaseOil_Percent_5").Value objExcelApp.Cells(iBlankLine,7).Value=HMIRuntime.SmartTags("BaseOil_Percent_6").Value objExcelApp.Cells(iBlankLine,8).Value=HMIRuntime.SmartTags("BaseOil_Percent_7").Value objExcelApp.Cells(iBlankLine,9).Value=HMIRuntime.SmartTags("BaseOil_Percent_8").Value objExcelApp.Cells(iBlankLine,10).Value=HMIRuntime.SmartTags("Additive_Percent_1").Value objExcelApp.Cells(iBlankLine,11).V alue=HMIRuntime.SmartTags("Additive_Percent_2").Value objExcelApp.Cells(iBlankLine,12).Value=HMIRuntime.SmartTags("Additive_Percent_3").Value objExcelApp.Cells(iBlankLine,13).Value=HMIRuntime.SmartTags("Additive_Percent_4").Value objExcelApp.Cells(iBlankLine,14).Value=HMIRuntime.SmartTags("Additive_Percent_5").Value objExcelApp.Cells(iBlankLine,15).Value=HMIRuntime.SmartTags("Additive_Percent_6").Value objExcelApp.Cells(iBlankLine,16).Value=HMIRuntime.SmartTags("Additive_Percent_7").Value objExcelApp.Cells(iBlankLine,17).Value=HMIRuntime.SmartTags("Additive_Percent_8").ValueElse'MsgBox("Data Table Full,Copy to the backup file,continue ?")objExcelApp.displayalerts=FalseoFileName=CStr("D:\BKHL_HXBJ\模板\运行数据_"&Month(Date)&"月"&Day(Date)&"日"&"_"& Hour(Time)&"时"&Minute(Time)&"分"&".xls")oWorkBook.Saveas(oFileName)ExcelTableFull=1objExcelApp.displayalerts=TrueEnd IfoWorkBook.SaveobjExcelApp.Workbooks.CloseobjExcelApp.QuitSet objExcelApp=NothingSet oWorkBook=NothingIf ExcelTableFull=1 Then'MsgBox("Data Table Full, Clear the current data table, continus?")Set objExcelApp=CreateObject("Excel.Application")objExcelApp.Visible=FalseSet oWorkBook=objExcelApp.Workbooks.Open("D:\BKHL_HXBJ\模板\Receipt_Table_Templet.xls")objExcelApp.displayalerts=FalseoWorkBook.Saveas("D:\BKHL_HXBJ\模板\Receipt_Table.xls")objExcelApp.displayalerts=TrueoWorkBook.SaveobjExcelApp.Workbooks.CloseobjExcelApp.QuitSet objExcelApp=NothingSet oWorkBook=NothingEnd IfEnd IfEnd Sub本文转自亿万论坛:/a/a.asp?B=302&ID=1218853&q=1&r=140751。
21.Wincc控件制作报表以及导出EXCEL⽅法介绍假设希望做这样⼀个报表界⾯,可以根据⽇期查询:希望导出的excel报表⽂件在C盘根⽬录,是这个样⼦:接下来我们⼀步步实现这个功能。
1. Wincc历史趋势的数据库表结构有点不好理解,我们新建⼀个数据库名字叫做Report,新建⼀张表,结构是这个样⼦:注意开放sa⽤户,设置sa⽤户有管理report数据库权限,使⽤sql登陆模式。
2. 我们每5秒往report表写⼊⼀条记录,在全局VBS脚本写⼊如下代码:Option ExplicitFunction action'添加纪录Dim T1,T2,P1,P2,F1,F2,L1,L2,A1,A2,S1,S2Dim ors,conn,con,ssql,ocomDim PCNamePCName=hmiruntime.Tags("@LocalMachineName").ReadT1=HMIRuntime.Tags("温度1").ReadT2=HMIRuntime.Tags("温度2").ReadP1=HMIRuntime.Tags("压⼒1").ReadP2=HMIRuntime.Tags("压⼒2").ReadF1=HMIRuntime.Tags("流量1").ReadF2=HMIRuntime.Tags("流量2").ReadL1=HMIRuntime.Tags("液位1").ReadL2=HMIRuntime.Tags("液位2").ReadA1=HMIRuntime.Tags("分析仪1").ReadA2=HMIRuntime.Tags("分析仪2").ReadS1=HMIRuntime.Tags("转速1").ReadS2=HMIRuntime.Tags("转速2").Readcon="Provider = SQLOLEDB.1;password = sa;user id = sa;Initial Catalog =Report;Data Source = " & PCName & "\WINCC" Set conn=CreateObject("ADODB.Connection")conn.ConnectionString=conconn.Cursorlocation=3conn.openssql="insert into Report(CurDateTime,T1,T2,P1,P2,F1,F2,L1,L2,A1,A2,S1,S2) values(Getdate()," _& T1 & "," & T2 & "," & P1 & "," & P2 & "," & F1 & "," & F2 & "," & L1 & "," & L2 & "," & A1 & "," & A2 & "," & S1 & "," & S2 & ")"Set ors=CreateObject("ADODB.RecordSet")Set ocom=CreateObject("mand")Set ocom.activeconnection=connmandType=1mandText=ssqlSet ors=ocom.ExecuteSet ors=Nothingconn.closeSet conn=NothingEnd Function脚本中的函数不做解释。
基于高级编程语言的WINCC复杂报表管理实现徐志杰(国电南自新能源科技有限公司,南京市浦口高新区 210032)摘要:为解决西门子视窗管理中心(WINCC)报表功能的不足,本文介绍了某电厂烟尘减排控制系统上位机监控系统中采用高级编程语言VB和脚本编程语言VBSCRIPT与WINCC下的SQL2005数据库进行接口的方法,完成过程历史数据的存储、读取。
通过调用Spread Active控件进而实现复杂报表的查询、打印,和对数据的二次梳理分析,并可以方便的输出为EXCEL和HTML文件。
同时也为以B/S模式访问过程运行数据提供了接口。
关键词:VB;WINCC;SQL2005;数据库;报表0 引言WINCC(Windows Control Center)作为西门子公司开发的上位机组态软件,功能强大、应用灵活,为现场控制提供了一个高可靠性的监控平台,因此广泛应用于工控领域,尤其在电力系统的辅机控制方面,有许多采用WINCC+S7300(或400)的方案来实现稳定可靠控制的成功案例。
随着WINCC多年应用经验的积累,版本进行了多次升级,WINCC V6.2 SP3由于具有智能新选件、可扩展菜单(工具栏)、报警可隐藏,自定义数据库等诸多新特征,使其应用越来越广泛。
WINCC V6.2的归档方式与以前的版本所有不同,它的运行数据存放在数据片段当中。
当控制系统数据采集比较多,需要对数据关系进行二次梳理,而WINCC自带的报表编辑器有其局限性,用户要实现复杂报表存在很大难度。
本文针对上述情况,结合数据片段无法直接用VB读取的困难,采用自定义数据库来存放过程运行数据,然后采用VB通过字符串访问方式读取数据进行分析处理及复杂报表的查询打印等功能。
1 WINCC访问数据库的方式WINCC几乎集成了微软所有开放性技术,大量采用了标准化技术,如:OPC、DDE、ODBC、OLE-DB、Active X等,可以很方便的与其他应用程序交换数据。
《工业控制计算机》2007年20卷第2期摘要为了解决WinCC不在运行状态时,WinCC趋势控件不能访问已经记录的过程数据的问题,以及过程数据的采集周期受最短归档周期500ms的限制的问题,充分利用WinCC软件本身的特点,提出了一种利用过程数据进行存储和访问的方法,缩短了过程数据的采集周期。
利用WinCC内嵌的C语言编辑器和本身自带的丰富的函数库,通过编写CScript全局脚本程序,将过程数据以日志文件方式完成实时记录归档,并实现查询和报表功能。
关键词:CScript,WinCC,日志文件,查询,报表AbstractThetraditionalWinCCTrendControlcannotaccessrecordedprocessdatawhenWinCCisnotinruntime.BesidesthecollectioncycleofprocessdataislimitedbycompilingperiodinWinCC.Amethodofdatastorageandaccessisdevel-opedthroughusingprocessdatatoshortenthecollectioncycle.ThemethodfirstlycreatestheCScriptglobalactionbyusingCeditorandfunctionlibraryofWINCC.Thenintheglobalaction,theprocessdataisrecordedintheformofreal-timelogfileandthenthequeryandreportfunctionisrealized.Keywords:CScript,WinCC,logfile,query,reportWinCCOnlineTrendControl控件可以以趋势的形式显示在线过程数据,也可以表格的形式显示,但是用户不能对这些数据直接进行访问和处理。