WINCC报表详细设计步骤

无锡康博自动化设备工程有限公司

WINCC报表详细做法

2014年2月10日珍藏版

(如有雷同,就是盗版)

一、报表的需求分析

从需求上讲报表一般分为:

①内容上的需求:涉及求和、平均、最大值和最小值的计算,同时还有复杂报表中混合排列上的处理。

②样式上的需求:简单报表的样式多为固定格式,固定内容。复杂报表的样式可以有用户自己设计和决定显示的内容,甚至涉及历史趋势及报警信息。

③任务上的需求:报表不仅能显示查看,重要的是打印任务,WINCC的全局脚本能够实现事件触发打印或者定时打印。

报表实例:汉阴污水厂

二、WINCC的数据存储

④WINCC自带强大的数据归档功能,WINCC的数据记录已包含周期记录

归档、非周期动作触发、动作触发的周期记录,甚至在数据处理中可以自动统计出平均值、最大值、最小值以及求和等数据信息。

④对于过程归档的访问,我们可以使用WINCC的在线表格,报表编辑器中

自带的打印控件实现报表数据记录功能。

④对于存储数据的访问,WINCC提供了另外一个数据存储和处理工具就是

用户归档。

报表实例:用户归档界面

三、报表的具体做法

关键词:

④①报表编辑

④②用户归档

④③全局脚本

④④创建打印任务

④⑤画面编辑

关于报表编辑器

④WINCC的报表制作完成后存储在当前项目下的PRT文件夹内,可以直接

复制粘贴到其他项目内使用,只需要修改数据库链接变量即可。

④对于大量数据信息存储的项目,可以创建多张报表进行分类,更准确直

接的查看和生成报表。

④每一张报表对应一个新的打印作业,并且需要与用户归档里记录的数据

库信息一一对应,下面将一一介绍详细。

报表编辑器—编辑报表

报表编辑器—编辑报表动态数据库的创建链接

报表编辑器—编辑报表动态数据库的创建链接

报表编辑器—编辑报表静态文本的编辑

报表编辑器—编辑报表

一张完整的报表格式,可以查询10个数据,如果数据较多,可以创建多张报表

关于用户归档

④WINCC变量记录是系统的存储部分,使用的是SQL数据块。而用户归档

是基于数据库而生成的记录表。简单的说变量记录相当于缓冲区域,用户归档相当于配方功能。

④使用WINCC用户归档制作报表时,创建记录的数据要与所制作表格的数

据一一对应。

④多张表格将对应多个用户归档功能。

用户归档(USER ARCHIVE)创建

当ID等于-1,指令等于6时就可以把过程值存储到数据库中

用户归档数据创建

继续创建用户归档数据,在WINCC用户归档控件中需要的数据类型有记录日期(0-23整点记录)、时间(0-23整数值,打印中显示)、需记录的数据。可以根据打印设备的纸张自定义设计数据列栏,以10个数据为例。

日报触发在每小时变化的整点记录。

添加系统信息设备

用户归档数据创建

依次创建10个需要存储记录的数据变量。

关于全局脚本与打印任务

④WINCC通过编辑VBS全局脚本能够实现定时触发记录数据,WINCC系

统时间为DD/MM//YY和MM/DD/YY时间,此例通过脚本将时间格式转换成YY/MM/DD。

④打印作业与报表一一对应,多张报表对应多个打印任务。并与在线的归

档插件相关联

编写全局脚本,定时生成报表数据

【精编推荐】birt动态分组报表制作

【精编推荐】birt动态分组报表制作

1 BIRT报表开发环境准备 3 1.1 BIRT报表开发准备 3 1.2 建立Web Project 3 1.3 配置交叉报表数据源 6 1.3.1 建立公共资源的文件夹 6 1.3.2 建立公共资源Library 7 2 动态分组交叉报表11 2.1 建立报表文件夹11 2.2 建立报表文件12 2.3 复用报表数据源13 2.4 配置交叉报表结果集14 2.5 配置交叉报表分组字段17 2.5.1 新建Data Cuber 17 2.5.2 新建Groups 18 2.6 配置交叉报表求和字段19 2.7 交叉报表表样制作20 2.7.1 新建Cross Tab 20 2.7.2 完成报表表样制作21 2.8 报表分页实现21 2.9 预览交叉报表21 3 部署交叉报表22 4 运行交叉报表22

1BIRT报表开发环境准备 1.1 BIRT报表开发准备 (1)、Ecplise:这里我使用的是Eclipse Platform Version: 3.6.2。 (2)、BIRT插件:可以通过Ecplise中的Install New Software 添加Birt插件。插件地址:https://www.360docs.net/doc/c011190208.html,//birt/update-site/2.6/ (3)、Tomcat:这里我使用的是apache-tomcat-6.0.16 1.2 建立Web Project (1)、新建Web Project 为了体现BIRT与实际应用项目相结合的特点,首先建立一个Web Project,工程命名为myReport。

birt报表技巧

Birt中的分页显示报表: 方法如下: 1、将鼠标停在表格上,选择明细数据行(Row Detail) 。 2、选择脚本(script)标签,在onPrepare方法中加入: count=0; 在onCreate方法中加入: count++; if(count % 10==0) { this.getStyle().pageBreakAfter="always"; } 然后放到服务器上运行,则实现分页显示。 Birt中报表参数的用法(一) Birt中有两种参数,一种是数据集参数,一种是报表参数。数据集参数一般是用于select语句中的?所代表的参数的。而报表参数一直则是整个报表的参数,定义它的目的一方面是和数据集参数绑定,一方面是在脚本中使用它。例如:我想设计一个报表,通过参数传递一个数据库中的表名,显示相应表中的数据,所有的表的结构一样!做法如下: 先定义数据源;然后定义数据集,查询选项中的语句写select * from [要传入的表名中的任意一个];然后定义一个报表参数table,设置一个默认值(默认表名);然后再数据集的脚本的beforeOpen方法中加入:this.queryText="select * from "+params["table"]; ;完成。 如何在Tomcat中配置使得能显示Birt Chart报表: 今天看了一本关于Birt方面的书,提到了在Tomcat中成功部署Birt的方法。我试了一下,果然可以,即可访问普通报表,又可访问chart报表,而且方法也比较简单。现介绍如下: 1、从网上下载birt-runtime-version.zip并解压 (https://www.360docs.net/doc/c011190208.html,/birt/downloads/build.php?build=R-R1-2_1_3-200707051847)。 2、将解压后根目录中的WebViewerExample文件加复制到Tomcat根目录下的webapps 下面,并更名为birt_viewer2.2(因为我下的是2.2版本) 3、复制第三方软件:iText.jar(复制到 birt_viewer2.2\WEB-INF\platform\plugins\com.lowagie.itext_1.5.2.v20070626\lib 下)

WINCC报表详解

在工业生产中报表一直占有非常重要的部分,它一般用来记录现场的工艺参数和统计信息。早期是由人工抄录然后统计出相关的报表。进入计算机控制阶段,这份工作就需要工控软件来实现。对于工控行业的工程师来说:如何开发适合用户需求的报表一直是个难题。论坛上很多人都在寻求灵活高效的解决方法。 经过这段时间的网上讨论。综合网友们的意见和建议,我们做了总结。并结合WinCC软件本身作了相关的说明。希望能对大家在以后的报表开发中有所帮助。 接下来就从报表的需求分析、WinCC报表系统的应用、复杂报表的WinCC报表系统实现这几个部分来分别介绍。最后总结出WinCC报表系统在应用的优缺点和常见的问题的解决方法。 一.报表的需求分析 从需求上来讲报表一般分为:内容上的需求、样式上和任务上的需求。 1.内容需求内容上一般涉及到数据的求和、平均、最大值、最小值等计算,同时也会涉及到关系的处理,比如班组相关对应信息的统计分析等。下面是一个很典型的报表需求,就很能说明这样的问题: 图1. 月报表分析 此报表是典型的工业现场应用,在数据采集没有难度。唯一的难度在于四班三倒后,每个月班的出勤日是不一样的,这样对于月报来说,计算出本月每个班的出勤日是需要些算法。此类报表在连续生产的行业需求很广泛。比如:钢铁冶金行业需要一天24小时不停运转的系统。 还有一种内容上是分总的关系,就是一部分是简单的数据记录,另一部分是对上一部分 数据的统计,比如汇总、求和、平均等。如下图也是很典型的应用。

图2. 总分报表 另外一种就是涉及到混合排列的问题,一张表上既有分项数据,中间也涉及到统计信息,同时也会添加一些实时的信息在上面。如下图。 图3. 复杂报表 这是一个复杂的报表,中间涉及到分项的记录,数据求平均,和一些操作信息的记录。既有历史数据也有实时信息。 当然更复杂的报表需求也是有的,比如说涉及到一张报表上既有实时信息又有历史信息同时还涉及趋势视图、报警信息等。用户自己可以灵活的定义报表的内容和样式。比如下图。

birt教程之多层交叉汇总报表

birt教程之多层交叉汇总报表 1.1多层交叉汇总报表 1.1.1加入汇总 1.在3.8所建立的报表MultilayerCrosstab.rptdesign基础上,点击布局编辑器中Cross Tab左下角的“Cross Tab”图标选中本交叉表。在Property Editor属性编辑器中选择“Row Area”,(可参考图3-11)。 2.在左边的选项栏中选择第一个选项“Sub Totals”,点击编辑器右边的“Add”按钮,弹出加入次级汇总(本例即根据客户类型进行汇总)的窗口: 全部选择默认数据:点击“OK”完成创建。 3.在左边的选项栏中选择第二个选项“Grand Totals”,点击编辑器右边的“Add”按钮,弹出窗口加入行汇总,同样,数据全选默认。点击“OK”完成创建。4.在属性编辑器Property Editor视图中选择“Column Area”,同样在左边的选项栏中选择第二个选项“Grand Totals”,点击编辑器右边的“Add”按钮,弹出窗口加入列汇总,同样,数据全选默认。点击“OK”完成创建。 创建完毕后,布局编辑器如下图:

1.1.2格式化与预览 格式化后如下图: 预览结果如下:

同为比较常用的报表工具,FineReport对多层交叉汇总报表的解决方案和实现方法与BIRT有所不同,在finereport交叉汇总是利用层次坐标实现的,以一个简单示例为例,解释具体实现思路和步骤,供BIRT使用者借鉴: 1.问题描述 逐层累计与跨层累计都是纵方向上的累计,也可以横向进行累计,如下图各个销售员每个月订单金额的累计:

2.示例 2.1新建报表,设计表样 新建工作薄,添加数据集,SQL语句为select雇员ID,strftime('%m',订购日期)as月份,应付金额from订单where strftime('%Y',订购日期)= '2011',查询出2011年每个雇员,每月订单金额。 如下制作一张交叉表: 数据列设置如下: 单元格数据 集 数据列属性

最新wincc生成excel

1 给wincc中通过vbs写excel的方式做报表的初学者一点脚本我对该帖子不做任何限制,都可以自由拷贝使用。方便初学者学习! //log子程序,40个数据记录,总共记录一周时间,写入excel,放到wincc 全局脚本中一分钟运行一次 //如果是要整点报表也简单,判断一下当前的系统时间,t的初始值根据当前时间定义。 //本程序主要是演示数据记录的过程。 //在c:\建立一个excel文件,该文件可以是你的报表模版 Option Explicit Function action Dim objExcelApp,objExcelbook,objExcelSheet Dim tagshijian,sheetname,username,zhushi Dim tagday Dim a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a1 8,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a3 5,a36,a37,a38,a39,a40

Dim i,j,t,count Dim msg Dim patch,fn Dim d,m,y,oh,mm,ss d=" " m="-" y="-" oh=":" mm=":" ss="" msg="记录报表成功" fn=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now)) patch="c:\"&fn&".xls" Set a1=HMIRuntime.Tags("a1") Set a2=HMIRuntime.Tags("a2") Set a3=HMIRuntime.Tags("a3") Set a4=HMIRuntime.Tags("a4") Set a5=HMIRuntime.Tags("a5")

Eclipse BIRT 简单报表开发

Eclipse BIRT 简单报表开发 帮助文档: https://www.360docs.net/doc/c011190208.html,/documentation/BIRT_231/wwhelp/wwhimpl/js/html/wwhelp.htm 1新建报表: 1.1运行向导建立工程,如下图: 1.2选择新建的工程,如下图:

1.3建立报表文件,如下图

这里选中Report templates:Blank Report

已经完成建立报表文件。 2连接数据库 2.1建立Data Source 这里我们会连接SQL Server 2005的示例数据库:AdventureWorks ●请确认已经安装这个示例数据库 ●请确认Sql server 2005已经打开TCP/IP连接,如下图: 打开建立Data Source向导,如下图:

这里要注意如果刚安装的Eclipse BIRT是没有(如下图): Com.microsoft.sqlserver.jdbc.SQLServerDriver (v1.2) 下载地址: https://www.360docs.net/doc/c011190208.html,/download/8/B/D/8BDABAE2-B6EA-41D4-B903-7916EF36 90EF/sqljdbc_1.2.2323.101_enu.exe 安装方法: ●把文件解压 ●Manage Drivers ●Add-> 选中解压出来的文件:sqljdbc.jar ●添加成功 连接串:jdbc:sqlserver://localhost:1433;databasename=AdventureWorks

birt报表修改表格宽度的学习总结

修改birt报表的表格宽度的学习总结 一、原因 Birt做的报表表格宽度是根据表格里面的内容自动显示宽度,每列的宽度是与表头(header的label)或者表body(detail的data)里面内容最多的一格的宽度一致,有时候表头里面文字很长,但是该表头的那一列表body里面的内容却很少,就照成了除表头以外,body下面每一格特别的空,这样的列若是比较多的话表格就很不好看,而且浪费空间,以我碰到的问题为例,如图: 这个报表分为两部分,前一部分是直接用报表设计器设计的,表头是居顶的,后一部分是用代码加上去的,表头居中,而且他的内容全是数字,相对来说比较少,感觉空的地方很多,看上去不美观。 二、试着调试 由于网上资料比较少,我自己调试时都是自己摸索的,可能有些地方不是很简洁,但是效果还是出来了。 (1)、首先调整直接用报表设计器设计的报表,可以有两种方法调试, 1.第一种是手工代码调试:xml resource 先调整表头,所以在

下面的你想设计宽高的那一列下面,添加属性,根据里面的内容设计宽和高,这里我设计的是宽1.5cm,高0.7cm,注意是在label下面添加设置语句,: 0.7cm 1.5cm

如图:

点击table,然后选中你想要调整的那一行或者那一列,打开属性编辑器(birt 高级版本可以右击哪一行或者列直接打开,低版本的需要点击eclipse左下角的 下面的属性版本 ) 想要修改那一行或者列的宽或者高时,先以调整列宽为例,选中一列,在属 里面, 调整行高度跟列宽度类似,这里就不写出来了。 (2)调整由代码插入进来的行宽列高 这个就比较简单,在插入列以及header下直接写代码 MyLable.setWidth(“1.5”); myLabel.setHeight("0.7cm"); myDataItem2.setHeight("0.3cm"); myDataItem2.setWidth("1.5cm");

BIRT详细开发手册

BIRT详细开发手册

目录 1BIRT开发环境 (3) 1.1新建Project (3) 1.2新建Report (4) 1.3调整工作窗口 (5) 2BIRT报表开发 (6) 2.1新建数据源(Data Sources) (6) 2.2新建数据集(Data Set) (7) 2.3BIRT报表条件 (10) 2.3.1一般条件 (10) 2.3.2日期条件 (11) 2.3.3条件脚本 (11) 2.4BIRT表格 (13) 2.4.1Insert table (13) 2.4.2设置报表表头 (14) 2.4.3表头样式 (14) 2.4.4表格网络线 (15) 2.5绑定数据集 (15) 2.6表格数据添加分组(分组可以不用设根据需求添加) (16) 2.7报表标题(Master Page) (19) 2.8固定布局与自由布局 (20) 2.9报表预览 (21) 2.10数据操作 (23) 2.10.1列求和 (23) 2.10.2数据格式 (26) 3图表制作 (26) 3.1饼状图 (26) 3.2折线图 (32) 3.3柱状图 (38) 3.4图表效果展示 (42)

此文档为本人结合网上资料与本人BIRT开发经验整理的BIRT详细的开发手册,适用于初学者快速掌握BIRT开发。 1BIRT开发环境 BIRT开发环境是带有BIRT插件的eclipse 1.1新建Project 菜单栏file→new→other选择report project→nex,然后给project取名,完成后点击finish即可完成新建project

新建完成后的project 1.2新建Report 在新建的项目上右键new→orher , Report→next, file name为报表名称是以”. rptdesign”为结尾的文件,点击finsh即可完成新建Report.

birt报表使用简要说明

Birt报表使用指南 1Birt的安装方法 把birt整合到了Myeclipse6.5中,(eclipse的官方网站上提供有一个birt-report-designer-all-in-one-2_2_2.zip,你直接解压缩这个就可以了,就免去了birt与Myeclipse6.5的整合)。 如果要把birt安装到Myeclipse6.5中,要注意一些事情 1.1eclipse的版本 就是说你的eclipse版本要和适当的birt版本配合,当前birt的最新稳定版是birt2.3。 如果使用的是eclipse3.3版本,你应该用birt-report-framework-2_2_2.zip,如果使用的是eclipse3.4,你应该用birt-report-framework-2_3_0.zip版本不一致会出一些问题。 1.2在Myeclipse6.5中装birt。 MyEclipse6.5自带的是eclipse3.3,所以只能下载birt-report-framework-2_2_2.zip (下载地址:https://www.360docs.net/doc/c011190208.html,/birt/downloads/index2.2.2.php) 而birt-report-framework-2_3_0.zip是针对eclipse3.4的。 把下载下来的birt-report-framework-2_2_2.zip包解压,解压后的features文件夹下的所有文件拷贝到MyEclipse6.5安装目录下的..\myeclipse\eclipse\features 下,解压后的plugins文件夹下的所有文件拷贝到..\myeclipse\eclipse\plugins下。 重新启动MyEclipse就好了。

wincc生成excel

给wincc中通过vbs写excel的方式做报表的初学者一点脚本 我对该帖子不做任何限制,都可以自由拷贝使用。方便初学者学习! //log子程序,40个数据记录,总共记录一周时间,写入excel,放到wincc 全局脚本中一分钟运行一次 //如果是要整点报表也简单,判断一下当前的系统时间,t的初始值根据当前时间定义。//本程序主要是演示数据记录的过程。 //在c:\建立一个excel文件,该文件可以是你的报表模版 Option Explicit Function action Dim objExcelApp,objExcelbook,objExcelSheet Dim tagshijian,sheetname,username,zhushi Dim tagday Dim a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21, a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,a40 Dim i,j,t,count Dim msg Dim patch,fn Dim d,m,y,oh,mm,ss d=" " m="-" y="-" oh=":" mm=":" ss="" msg="记录报表成功" fn=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now)) patch="c:\"&fn&".xls" Set a1=HMIRuntime.Tags("a1") Set a2=HMIRuntime.Tags("a2") Set a3=HMIRuntime.Tags("a3") Set a4=HMIRuntime.Tags("a4") Set a5=HMIRuntime.Tags("a5") Set a6=HMIRuntime.Tags("a6") Set a7=HMIRuntime.Tags("a7") Set a8=HMIRuntime.Tags("a8") Set a9=HMIRuntime.Tags("a9") Set a10=HMIRuntime.Tags("a10") Set a11=HMIRuntime.Tags("a11") Set a12=HMIRuntime.Tags("a12") Set a13=HMIRuntime.Tags("a13") Set a14=HMIRuntime.Tags("a14") Set a15=HMIRuntime.Tags("a15")

简单报表开发介绍

适用范围: 以收证查询为例:要实现这样的效果

1语义模型设计 1.1添加分类。序号与菜单注册的编码相同。 1.2添加语义模型。保存时,弹出提示框“是否启动设计向导”,点“是”。进入设计器 1.3选择【元数据】或者【元定义】,都可以。区别在于【元定义】比【元数据】多了“语义模型”的选择。 我们选【元定义】。

说明: a有些基础档案,我们需要显示它们的名称,例如财务组织,币种。这里有两种实现。b这里先说第一种: 可以继续选择【元定义】,找到对应的基础档案的元数据,有多个就都选择上。

1.4. 做好之后保存,点下一步。进入【连接条件】,通过主键关联将刚才选择的几张表关联起来。保存。 1.5点下一步之后进入【选择字段】,选择你要用来做展示的字段。 说明 a财务组织PK,集团PK,币种PK必须选择,用来处理精度 b这里也可以实现基本档案,或者其他需要显示名称的字段。如图中红色字段标识。

1.6.保存进入下一步。进入【描述器】,这里要做的是添加一些约束条件。 1.7点击下一步,进入【选项】,这里不用做什么修改,直接保存,点击完成。这样语义模型就设计完成了。 2自由报表预置 自由报表是用来展示数据的。这里会有:小计合计、数据格式、查询注册、联查、穿透等内容。

2.1跟语义模型一样,先建立分类,然后新增一个报表。保存,点【格式设计】2.2如图,右上角,关联刚才建立的语义模型。 2.3设置可扩展区域。右键-设置可扩展区域,如下图。 2.4设置表格字段的格式。 2.5设置几个隐藏字段,这是后期用来处理精度的 2.6插入小计合计 如图点1.红色区域2是分组字段。红色区域4是合计字段,小计与合计,红色区域5是设置是否合计

BIRT报表参数详解

在使用birt报表的时候感觉页面的BIRT Report Viewer头标题没有用,想去掉在网上一查原来有详细的参数设置,看来birt的功能还是很强大啊。现在转帖如下: BIRT作为一款功能强大的开源报表工具,其版本的升级更新速度也非常快,从1.0到2.0,一直到最新的2.2.1版本,无论从功能上还是性能上都得到了极大的提高和扩充。BIRT也提供了一个标准的J2EE实现组件,可以发布到支持J2EE应用的web server服务器上,可以对生成的报表进行预览等操作。在大家使用BIRT Viewer的时候,可能会对它日益纷繁的参数设置如云里雾里,在网上论坛里也有很多人碰到这样哪样的问题,同时官方的文档也不细致不全。所以我就对这些参数进行了一个简单系统的总结,希望能对大家的BIRT开发有所帮助。这些参数以2.2.1版本为准,请大家特别注意。 1.Servlet模式说明 查看BIRT Viewer自带的web.xml文件,可以看到有以下几个pattern: frameset----采用Ajax框架,可以显示工具条,导航条和TOC面板,实现复杂的操作,如分页处理,导出数据,导出报表,打印等等。该模式下会自动生成report document文件(预览report design文件)到特定的目录(用户可以用参数指定,也可以定义在web.xml里)。采用Ajax,速度较慢。 run----也采用Ajax框架,但不实现frameset的复杂功能,不会生成临时的report document 文件(预览report design文件),也不支持分页,这个主要是应用在BIRT Designer里的preview tab里,可以支持cancel操作,其它不怎么常用。采用Ajax,速度较慢。 preview---没有用到Ajax框架,直接调用底层Engine API对报表进行render,把生成的报表内容直接输出到浏览器。这种模式和run模式调用的是相同的Engine API,唯一区别在于run采用Ajax获取报表内容,而preview直接输出到浏览器。如果要支持分页,用户需要在URL上定义__page和__pagerange参数,这两个参数也会在后面详细说明。需要特别说明的是,在这几种预览模式中,preview的速度是最快的。 document---该模式主要是为了从report design文件生成report document文件。用户可以在URL上提定document文件生成存放的路径(存放在server端),如果未指定,会直接生成rptdocument发送到客户端浏览器,用户可以下载到客户端。 output---该模式类似于frameset,会自动生成report document文件(预览report design 文件),区别在于output不采用Ajax,而是将生成的报表内容直接输出到浏览器。 parameter---该模式主要用于生成一个参数对话框,一般用户不常用,用户可以直接通过提供的JSP Tag--parameterPage去实现参数对话框,不需要直接调用。 download---用于导出报表数据为CSV格式,当你使用frameset工具条里的导出数据功能时,会用到这个模式。 2.web.xml里的参数设置 web.xml文件里有许多参数,用户应该根据自已的需求出发对这些参数有一个深入的了解。

WinCC和EXCEL数据传递

1、DDE简介 动态数据交换(DDE)是基于Windows的消息机制,两个Windows应用程序通过相互之间传递消息进行“对话”,这两个程序被分别称为“服务器”和“客户”。DDE服务器是一个维护着其他Windows程序可能使用的数据程序,而DDE 客户则是从服务器获得这些数据的程序。 DDE对话是由客户程序发动的。客户程序将一条称为WM_DDE_INTITIATE的消息发给当前运行的所有Windows 程序,这条消息指明了客户程序所需要的数据类别,拥有这些数据的DDE服务器可以响应这条消息,这样一个对话就 开始了。 DDE的对话方式有3种: ①服务器数据变化时,直接把数据送给客户,由客户对这些数据进行处理,这类对话方式称为热链;②服务器的数据变化时,服务器通知客户,再由客户取数据,这种方式称为温链;③由客户申请数据、 服务器发送数据的方式称为冷链。 一、Wincc作为DDE的客户端,Excel作为DDE服务器(本地) 1、在变量管理上按鼠标右键--添加新的驱动程序--选“windows dde.chn” 图1 2、在DDE上按鼠标右键--新驱动程序连接--点属性,在其连接属性中: “计算机名称”为空;“应用程序”为excel;“主题”为[]工作表名,比如[DDE.xls]sheet1。

图2 3、在DDE\excel下建变量,在变量属性中选择地址,条目名称填:r行数c列数,比如r1c1(表示第一行 第一列的单元格),重复步骤3可以加入更多的DDE变量 图3 4、Excel程序 图4 Wincc程序 图5 5完成

用OPC做比较省事。 WinCC做OPC Server,Excel做OPC Client。 这种情况下,WinCC端不需要做任何设置,只要在Excel 里用少量的代码就能实现双方的通讯。 对于WINCC与S7-300的通讯,首先要确定PLC的通讯口类型,PLC一般都集成了MPI/DP口,还可以安装通讯模块。计算机(PC)上安装适当的通讯卡(不同的通讯卡支持的通讯协议不同)。看你需要啦! 其次是WINCC软件里的通讯协议要与PC机对应。WINCC提供了SIMATIC S7 PROTOCOL SUITE 通讯驱动程序,包含了多种通讯协议! 最终还有自己亲自实际操作了才有深刻的了解的!! Sub X6309X94AE9X0000X6539_OnClick(Byval Item) Dim fso,myfile Set fso = CreateObject("scripting.FileSystemObject") Set MyFile = fso.GetFile("d:\Excelcode.xls") Dim ObjExcelApp Set objExcelApp = CreateObject("Excel.Application") 'objExcelApp.Visible = True objExcelApp.Workbooks.Open MyFile '上面的程序段是为了打开d盘下叫Excelcode.xls名字的excel文件 objExcelApp.worksheets ("sheet1").Cells(1, 1).VAlue = HMIRuntime.Tags("usercodenew1").read objExcelApp.ActiveWorkbook.Save '上面两行的作用是将wincc变量"usercodenew1"的值写到Excel表中的A1格子里面,并且保持一下 Dim coldold Set coldold=HMIRuntime.Tags("usercodeold1") coldold.Value = objExcelApp.worksheets ("sheet1").Cells(1, 1).value '上面这两句的作用是将刚才保持到Excel表格中的数据重新读回wincc,存到"usercodeold1"变量中,当然现在其实并没有存入"usercodeold1"变量,只是存在了叫coldold的临时变量里面 objExcelApp.Workbooks.Close objExcelApp.Quit Set ObjEXceLapp = Nothing '到这里为止,我们可以通过上面的语句关闭刚才打开的excel程序了 coldold.Write '最后是把读到的excel值从临时变量coldold中写入它对应的"usercodeold1"变量中 End Sub 上面这个例子已经调试通过。网上有很多wincc值写入excel中的例子,一直找不到从excel中读取数据到wincc中的例子,结合网上朋友的一些经验,这里给出个小例子,供大家参考。

birt报表入门教程之图表报表

birt报表入门教程之图表报表 图表报表 图形报表是非常常见的一种报表样式,用于直观地表现数据规律。常用的类型包括:柱状图、饼图、折线图、甘特图、雷达图等。Eclipse的Birt插件为我们提供了多种图表的表现形式。 这里我们利用3.6的交叉报表,为它做一张简单直观的柱形图。 为报表插入图表 本例我们直接利用3.6交叉报表的数据集,直接在3.6所创建的报表上插入图表。在选用板“Palette”视图中拖拽一个“Chart”至布局编辑器中交叉报表“Cross Tab”的下方。 设定图表属性 1.选择图表类型 进行上一步拖拽之后,会弹出如下窗口:在此窗口我们首先要进行图表基本属性的设定。系统提供给我们有13种可供选择的图表,这里我们选择第一种“Bar”即柱形图。 在窗口中部右方的“Select Subtype”部分有三种类型可供我们选择,这里我们选择第一个,其他的数据设定:Dimension:2D With Depth(设定图形维度) Output Format:SVG(设定输出图表的格式)Multiple Y Axis:none

选择“Next”进入下一步:

2.设定好图表基本类型之后,进行图表的数据设定。窗口哦界面如上图。 在窗口中部的Select Data Set中,选择Use Data Set,然后从它的下拉菜单中选择我们所创建的唯一数据集contract,此时,Data Preview窗口出现了数据集中的各个数据项:

3.将数据项中的AMOUNT拖拽至左上方“Value(Y)Series”中的“∑” 框内。表示在图表的Y轴的变量设定为amount变量。(也可以通过点击“∑”框左边的函数符号来进行设定。点击进入后,在下方三个小窗口依次选择“Available Column Bindings”→“Chart-New Chart”→“AMOUNT”,点击“AMOUNT”时进行双击。或者可以直接在编辑窗口输入“row["AMOUNT"]”即可。点击“Ok”完成)

在wincc 中怎么做才能把报表生成按日期的excel 文件

在wincc 中怎么做才能把报表生成按日期的excel 文件在wincc 中怎么做才能把报表生成按日期的Excel 文件 VBS脚本实现,就是把文件名称以变量的形式表示。参考 '关闭保存 Dim patch,filename filename=CStr(Year(Now))&CStr(Month(Now))&CStr(Day(Now))&CStr(Hour(N ow))+CStr(Minute(Now))&CStr(Second(Now)) patch= "d:\"&filename&"demo.xls" objExcelApp.ActiveWorkbook.SaveAs patch objExcelApp.Workbooks.Close objExcelApp.Quit Set objExcelApp= Nothing 对于Excel报表,用VBS最灵活,Excel 定义好格式后wincc来填空,平均累计值就用Excel 的功能。 Dim excelapp Dim aa,bb,cc Set excelapp = CreateObject("Excel.Application") Set aa = HMIRuntime.tags("tag1") excelapp.visible = False'True excelapp.workbooks.open "D:\excel.xls" bb = Now 'getcurrent_datetime() aa.Read MsgBox CStr(bb) excelapp.cells(1,1).value = "rrrrrr"'111111 excelapp.cells(1,2).value = CStr(bb)

birt教程之交叉报表

birt教程之交叉报表 交叉报表 构建数据源 方法同上。 构建数据集 1.在定义好数据集的基本信息之后,进入SQL SELECT语句查询界面,输入如下SQL语句,进行数据集的创建: select EBANK.CUSTOMER.CUSTOMER_NAME, EBANK.PRODUCT.PRODUCT_NAME,EBANK.CONTRACTSUM.* from EBANK.CUSTOMER,EBANK.PRODUCT,EBANK.CONTRACTSUM where EBANK.CONTRACTSUM.CUSTOMER= EBANK.CUSTOMER.CUSTOMER_ID and EBANK.CONTRACTSUM.PRODUCT= EBANK.PRODUCT.PRODUCT_ID 2.如果创建正确,在结果预览窗口“Preview Relusts”中将看到一下信息:

点击“Ok”完成数据集的创建。 在报表中加入交叉报表 1.同上例,先在布局编辑器中建立一个1列2行的Grid。 2.从选用板“Palette”视图中拖拽一个“Cross Tab”至第二行的网格中。 在布局编辑器中可以看到我们创建的Cross Tab的样式。 数据准备 1.选择数据资源管理器“Data Explorer”。右键单击“Data Cubes”,选择“New Data Cube”,进入如下交叉表数据编辑界面: 2.默认选择的是“Dayaset”,Name:为Cube命名,Customer Cube Primery dataset:选择相关的数据集。打开下拉菜单选择之前建立的数据

集contract 3.在左边的主菜单中选择第二项“Groups and Summeries”,出现如下窗口(),在将Available Fields中的CUSTOMER_NAME拖拽到右边Groups (Dimensions)中标有“(Drop a field here to create a group)”的地方,如下图。

Wincc报表Excel

Sub OnClick(Byval Item) Dim MyVar1 Dim MyVar2 Dim objExcel Dim wb Dim xlsheet Dim rangee Dim Years,mounth,Days,hours,min,sec,daysweek Dim jj,kk,year1,mounth1,Days1,hours1,min1,sec1 Dim yi,er,san,si,wu,i,i1,lei,lei1,lei2,lei3,lei4,lei5 Dim zhou,yue,nian Dim shi,feng,miao,mytime Dim MyHour,MyMinute,myday,mymonth,myyear,a,b,c,d,e,f Set MyVar1=HMIRuntime.Tags("MyVar1") MyVar1.Write Date Set MyVar2=HMIRuntime.Tags("MyVar2") MyVar2.Write Time year1 = CStr(MyVar1.value) mounth1 = CStr(MyVar2.value) kk="d:\report2\" jj=".xls" Set yi = HMIRuntime.Tags("hunhe_1") yi.Read Set er = HMIRuntime.Tags("hunhe_2")

er.Read Set san = HMIRuntime.Tags("hunhe_3") san.Read Set si = HMIRuntime.Tags("hunhe_4") si.Read Set wu = HMIRuntime.Tags("hunhe_5") wu.Read Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Set wb=objExcel.Workbooks.Open ("c:\ExcelExample2.xls") Set xlsheet = wb.sheets("Sheet1") xlsheet.range("B4").Value=yi.Value xlsheet.range("C4").Value=er.Value xlsheet.range("D4").Value=san.Value xlsheet.range("E4").Value=si.Value xlsheet.range("F4").Value=wu.Value wb.SaveAs kk & year1 & jj wb.CLOSE objExcel.quit wb=Nothing

wincc的excel报表实例

因为ms word和excel的文档都支持html文本格式,因此可以先用word或excel做好模版,另存为Web 页,然后将该html改成jsp,将数据部分动态填入即可,不用很辛苦的调整格式 word页面只要在jsp头设置如下指令: <%@page contentType="application/msword;charset=GBK" %> excel如下: <%@page contentType="application/vnd.ms-excel;charset=GBK" %> 使用这种方式客户端必须安装有office软件,用户访问时将在ie中直接用word或excel打开该页面。 此方法优势是模板设计、调整方便,无需在服务器端使用复杂的POI或jxl技术,也无需在客户端使用ActiveX控件技术,更安全、方便,轻松实现较好的打印效果。 microsoft关于服务器端动态创建office文档的资料(asp示例): https://www.360docs.net/doc/c011190208.html,/default.aspx?scid=KB;en-us;301044& 简单示例: 使用word建立一文档,画表格如下: ---------------------------- | 用户名 | 真实姓名 | 性别 | ---------------------------- | guest | 路人甲 | 男 | ---------------------------- 保存为Web页test.htm,将test.htm改名为test.jsp,修改其中guest、路人甲、男为从数据库动态查询,如下: <%@ page contentType="application/msword;charset=GBK" %> <%@ page import="java.sql.*" %> 用户信息