组态王报表()解析

合集下载

用组态王做日历查询数据报表说明

用组态王做日历查询数据报表说明

组态王简单报表组态王目前我们应用的主要有两个版本:6.55和7.5.在2021年后基本应用7.5版本。

下面以先做一个日历控件日报制作简单说明。

准备工作:历史数据报表是从组态王的历史库中查询相关变量的历史数据,并在历史数据报表内显示,因此对历史数据报表要查询的数据必须设置历史记录属性。

在组态王中,离散型、整型和实型变量支持历史记录,字符串型变量不支持历史记录。

组态王的历史记录形式可以分为数据变化记录、定时记录(最小单位为1分钟)和备份记录。

记录形式的定义通过变量属性对话框中提供的选项完成,需要查询到报表的变量都要进行记录设置,完成设置之后在数据词典中定义字符串变量“选择日期”用于日历控件的查询。

准备工作完成后开始设计报表。

一.因为组态王6.55版本自带HTconvertTime的函数,最大时间支持到2019,查函数手册如下所以组态王6.55版本的项目,2020年以后的报表数据无法通过日历控件查询,必须先更新HTconvertTime的函数。

组态王7.5版本的项目,不需要做此工作,6.55版本的项目更新方法如下:1、在命令语言里面,自定义函数命令里面新建一个函数。

2、函数声明里面选择LONG,后面的填NewHTconvertTime(long years,long months,long days,long hours,long minites,long seconds)。

(此名字随便起),填完名字把脚本拷贝粘贴进去。

(看不懂也没关系,粘进去就能用)脚本填写内容为:long rest;rest = 0;long yearsofdays; long monthsofdays; long ofdays;long ofminites; long utcyear;long utcmonth; long leapyears; long leapzt; yearsofdays = 0; monthsofdays = 0;utcyear = 1970;utcmonth = 1;leapyears = 0;while(utcyear < years){ if(utcyear % 4 ==0 && utcyear % 100 !=0 || utcyear % 400 ==0) leapyears = leapyears + 1;utcyear = utcyear + 1;}yearsofdays = (years - 1970) * 365 + leapyears;if (months == 1)if (months == 2)monthsofdays = 31;if (months == 3)monthsofdays = 59;if (months == 4)monthsofdays = 90;if (months == 5)monthsofdays = 120;if (months == 6)monthsofdays = 151;if (months == 7)monthsofdays = 181;if (months == 8)monthsofdays = 212;if (months == 9)monthsofdays = 243;if (months == 10)monthsofdays = 273;if (months == 11)monthsofdays = 304;if (months == 12)monthsofdays = 334;if (years % 4 ==0 && years % 100 !=0 || years % 400 ==0 && months >=3)ofdays = yearsofdays + monthsofdays + days;elseofdays = yearsofdays + monthsofdays + days - 1;if (hours >= 8)ofminites = ofdays * 24 * 60 + (hours - 8) * 60 + minites;if (hours < 8)ofminites = (ofdays - 1) * 24 * 60 + (hours + 16) * 60 + minites;//calculate resultszx;rest = ofminites * 60 + seconds;return rest;3、新建完成之后对于原来2020以前的项目,将以前用到的HTconvertTime函数替换成NewHTconvertTime不要漏掉(组态王7.5版本的项目,不需要做此工作),6.55版本新项目就直接用此函数。

组态王日报表制作

组态王日报表制作

组态王日报表制作步骤一、定义设备二、定义变量三、制作画面3.1添加画面3.2添加文本与报表3.3添加日历控件并在事件中编辑closeup插入通过控件,如图所示:选择后画到画面上,双击控件,在“常规”选项卡中为控件命名为“ADate”,点击“确定”,保存画面。

再次双击日历控件,选择“事件”选项卡,点击在“事件”选项卡中点击CloseUp事件,弹出控件事件函数编辑窗口,在函数声明中为此函数命名:CloseUp()在编辑窗口中编写脚本程序,在编写脚本程序之前在数据词典中定义字符串变量“选择日期”双击日历控件设置属性如下图程序如下:float Ayear;float Amonth;float Aday;long x;long y;long Row;long StartTime;string temp; Ayear=ADate.Year; Amonth=ADate.Month; Aday=ADate.Day;temp=StrFromInt( Ayear, 10 );if(Amonth<10)temp=temp+"-0"+StrFromInt(Amonth,10);elsetemp=temp+"-"+StrFromInt(Amonth,10);if(Aday<10)temp=temp+"-0"+StrFromInt(Aday,10);elsetemp=temp+"-"+StrFromInt(Aday,10);\\本站点\选择日期=temp;ReportSetCellString2("Report1",4,1,27,6,"");//清空单元格ReportSetCellString("Report1",2,2,temp);//填写日期StartTime=HTConvertTime(Ayear,Amonth,Aday,0,0,0);ReportSetHistData("Report1","\\本站点\IO实数1",StartTime,3600,"B4:B27");//ReportSetHistData("Report1","\\本站点\压力",StartTime,3600,"B4:B27");ReportSetHistData("Report1","\\本站点\温度",StartTime,3600,"C4:C27");ReportSetHistData("Report1","\\本站点\密度",StartTime,3600,"D4:D27");ReportSetHistData("Report1","\\本站点\电流",StartTime,3600,"E4:E27");ReportSetHistData("Report1","\\本站点\电压",StartTime,3600,"F4:F27");x=0;while(x<24){row=4+x;y=StartTime+x*3600;temp=StrFromTime(y,2);ReportSetCellString("Report1",row,1,temp);x=x+1;}添加选择日期变量如下图所示3.4添加打印和保存保存的程序如下:string filename;filename=InfoAppDir()+\\本站点\选择日期+".xls"; ReportSaveAs("Report0",filename);打印预览的程序如下ReportPrintSetup("Report0");详细设置请查看保存和打印文档四、进入运行系统运行系统结果如下图所示:。

用组态王报表

用组态王报表

用组态王报表实现显示设备启动、停止时间和运行时长的方法在对设备的状态进行监控中,往往要取得一些参数来记录和分析设备的运行状况。

这其中就包括设备的启动时间、停止时间和运行的时长。

当然,组态软件不会有这样的功能,让我们轻易实现。

不过,通过组态软件的报表功能,再通过二次开发,写一些脚本语言。

实现起来倒也不难。

以下,以组态王为例,是对操作过程的描述,希望能够对需要的人有一些帮助。

总体思路:以一个项目为例。

在这个工程中,有21台设备的运行状态需要记录,他们的运行状态依次记录在报表中。

报表中的每一行都表示,此设备的一个运行周期。

由于设备状态在报表中依次排列,因此需要相应的变量来保存该设备状态所在的行数。

这样,当停止该设备时,才能将“停止时间”和“运行时长”填充到正确的位置。

这样,就需要建立21个内存整形变量。

由于报表中的记录依次排列,因此还需要一个变量来保存报表中最后一条记录的行数,这样才能顺序填充记录。

1、新建报表,并命名为“报表1”。

2、创建内存整形变量。

21个内存变量分别保存21个设备状态所在的行数。

1个内存变量保存报表中最后一条记录的行数。

3、编写自定义函数,好处是减少代码量,修改方便。

脚本内容具体如下//"var"是变量的名称,"name"是要显示在报表中的字符串,"varRow"是保存记录的行数//用年月日,时分秒,系统变量来组合形成日期。

//不用日期变量,因为其格式长度不确定,在后来的分解中会很麻烦。

string strY=StrFromInt(\本站点$年, 10 );string strM=StrFromInt(\本站点$月, 10 );string strD=StrFromInt(\本站点$日, 10 );string strH=StrFromInt(\本站点$时, 10 );string strMi=StrFromInt(\本站点$分, 10 );string strS=StrFromInt(\本站点$秒, 10 );//确定日期的格式,并使长度和位置固定if(\本站点$月<10) strM="0"+strM;if(\本站点$日<10) strD="0"+strD;if(\本站点$时<10) strH="0"+strH;if(\本站点$分<10) strMi="0"+strMi;if(\本站点$秒<10) strS="0"+strS;//组合,定义格式string str=strY+"-"+strM+"-"+strD+" "+strH+":"+strMi+":"+strS;//启动设备时,将“序号”、“名称”、“启动时间”填充到报表中if(var==1){long num=报表当前行-1;string id=StrFromInt(num, 10 );ReportSetCellString("报表1", 报表当前行, 1, id);//序号ReportSetCellString("报表1", 报表当前行, 2, name);//名称ReportSetCellString("报表1", 报表当前行, 3, str);//开始时间varRow=报表当前行;//所在行=报表当前行报表当前行=报表当前行+1;}//停止设备时else{string startStr=ReportGetCellString("报表1", varRow, 3);//从报表中取得开始时间//开始时间转换秒 2011-05-06 12:23:34string midY=StrMid(startStr, 1, 4 );string midM=StrMid(startStr, 6, 2 );string midD=StrMid(startStr, 9, 2 );string midH=StrMid(startStr, 12, 2 );string midMi=StrMid(startStr, 15, 2 );string midS=StrMid(startStr, 18, 2 );long lY=StrToInt(midY);long lM=StrToInt(midM);long lD=StrToInt(midD);long lH=StrToInt(midH);long lMi=StrToInt(midMi);long lS=StrToInt(midS);long startTime= HTConvertTime(lY,lM,lD,lH,lMi,lS);long endTime= HTConvertTime(\本站点$年,\本站点$月,\本站点$日,\本站点$时,\本站点$分,\本站点$秒);//结束时间转换秒//计算时间差long timeLength=endTime-startTime;//单位秒//秒转换为小时//timeLength=timeLength/3600;string endStr=StrFromInt(timeLength, 10 )+"秒";//将“停止时间”和“运行时长”填充到报表中ReportSetCellString("报表1", varRow, 4, str);//结束时间ReportSetCellString("报表1", varRow, 5, endStr);//时间长度}4、建立设备启动或停止的运行事件命令。

组态王软件详细教程第七讲报表系统

组态王软件详细教程第七讲报表系统

组态王软件详细教程第七讲报表系统(总9页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除第七讲报表系统第一节组态王内嵌数据报表数据报表的用途数据报表是反应生产过程中的数据、状态等,并对数据进行记录的一种重要形式。

是生产过程必不可少的一个部分。

它即能反应系统实时的生产情况,也能对长期的生产过程进行统计、分析,使管理人员能够实时掌握和分析生产情况。

组态王提供内嵌式报表系统,工程人员可以任意设置报表格式,对报表进行组态。

组态王为工程人员提供了丰富的报表函数,实现各种运算、数据转换、统计分析、报表打印等。

即可以制作实时报表,也可以制作历史报表。

另外,工程人员还可以制作各种报表模板,实现多次使用,以免重复工作。

制作实时数据报表在组态王工具箱内选择“报表窗口”工具,在报表画面上绘制报表。

如下图所示:双击报表窗口的灰色部分(表格单元格区域外没有单元格的部分),弹出“报表设计”对话框,对话框定义如下图所示:在“报表控件名”对话框中输入报表控件名称:实时数据报表,这个控件名会在报表函数中引用。

在行数对话框中输入所要制作的报表的大致行数15本讲介绍报表系统的创建和格式设置介绍报表函数介绍报表系统的组态介绍报表模板在列数对话框中输入所要制作的报表的大致列数6单击对话框的“确认”按钮。

则组态王报表画面如下图所示:设置表头格式设计表头:选中“b1”到“e2”的单元格区域,从报表工具箱上单击“合并单元格”按钮,在报表工具箱的编辑框里输入文本“实时数据报表”,单击“输入”按钮;或双击合并的单元格,使输入光标位于该单元格中,然后输入上述文本。

单击报表工具箱中的“设置单元格格式”按钮,设置单元格格式如下:数字—常规;字体—隶书、规则、一号、红色;对齐方式:水平—居中,垂直—居中;图案—设置单元格底纹颜色为灰色。

如下图所示。

设计报表时间在单元格“d3”中显示当前日期,双击该单元格,然后输入函数“=Date($年,$月,$日)”。

组态王中的数据报表制作与保存

组态王中的数据报表制作与保存

组态王中的数据报表制作与保存组态王中的数据报表制作与保存摘要:本文主要介绍如果使用组态王来构建数据报表,并以EXCEL的格式在指定的文件路径保存。

关键字:组态王历史库数据报表制作保存一、引言数据报表是反应生产过程中的数据、状态等,并对数据进行记录的一种重要形式。

它既能反映系统实时的生产情况,也能对长期的生产过程进行统计、分析,使管理人员能够实时掌握和分析生产情况。

组态王提供内嵌式报表系统,工程人员可以任意设置报表格式,对报表进行组态。

组态王为工程人员提供了丰富的报表函数,实现各种运算、数据转换、统计分析、报表打印等。

既可以制作实时报表,也可以制作历史报表。

组态王还支持运行状态下单元格的输入操作,在运行状态下通过鼠标拖动改变行高、列宽。

另外,工程人员还可以制作各种报表模板,实现多次使用,以免重复工作。

二、数据报表的制作数据报表分为实时数据报表和历史数据报表2类。

报表的构建方法如下: 在画面内,使用工具箱中的报表窗口按钮创建一个报表窗口,如图1所示。

图1 创建后的报表窗口用鼠标双击报表窗口的灰色部分,弹出“报表设计”对话框,该对话框主要设置报表的名称、报表表格的行列数目以及选择套用表格的样式。

1、制作实时数据报表实时数据报表是实时显示相关变量的数据值,在报表窗口的单元格中直接引用变量来实现。

在报表的单元格中直接输入“=变量名”,既可在运行时在该单元格中显示该变量的数值,当变量的数据发生变化时,单元格中显示的数值也会被实时刷新。

2、制作历史数据报表历史数据报表是从组态王的历史库中查询相关变量的历史数据,并在历史数据报表内显示,因此对历史数据报表要查询的数据必须设置历史记录属性。

在组态王中,离散型、整型和实型变量支持历史记录,字符串型变量不支持历史记录。

组态王的历史记录形式可以分为数据变化记录、定时记录(最小单位为1分钟)和备份记录。

记录形式的定义通过变量属性对话框中提供的选项完成。

如图2所示。

图 2 记录属性设置在查询时,希望弹出一个对话框,可以在对话框上随机选择不同的变量和时间段来查询数据,可使用函数ReportSetHistData2(StartRow,StartCol)。

组态王日报表例程资料讲解

组态王日报表例程资料讲解

组态王日报表的实现例程配置参考文档北京亚控科技发展有限公司技术部目录一、功能概述 (3)一、功能概述 (3)二、工程实例 (3)三、操作步骤: (3)1、定义设备: (3)2、定义变量: (3)3.制作画面: (4)3.1) 创建报表: (4)3.2) 创建日历控件: (6)4.进入运行系统: (10)四、注意事项 (11)图表图一报表 (4)图二报表设计 (5)图三日报表 (5)图四日历控件 (6)图五控件事件函数 (8)图六保存报表 (8)图七打印报表 (9)图八打印报表 (9)图九运行系统 (10)图十打印预览 (11)一、功能概述常规需求:很多工业现场会用到报表功能,而日报是其中最基本的一种报表形式。

日报表一般为每天整点的数据,每一个变量有24个数据。

组态王中的实现方法:利用组态王内置报表以及报表的函数来实现对日数据的查询生成日报表。

组态王内置报表的操作类似excel,操作简单、方便,并且组态王提供了大量的报表函数来实现各种复杂功能。

二、工程实例我们举一个例子来说明日报表的实现方法。

在此例程中我们定义五个变量,分别为“压力”、“温度”、“密度”、“电流”、“电压”,运行系统运行后记录历史数据,查询日报表数据时自动从历史数据中查询整点数据生成报表,并可以保存、打印报表。

下面就以此为例来演示完成这一要求的具体步骤。

三、操作步骤:1、定义设备:根据工程中实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC-亚控-仿真PLC-串口”驱动,定义设备名称为”PLC”。

2、定义变量:在组态王中定义三个变量:压力(IO实数类型)、温度(IO实数类型)、密度(IO实数类型)。

压力变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器INCREA100,数据类型short,读写属性为只读,采集频率1000。

记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。

组态王报表演示说明

组态王报表演示说明

组态王报表演示说明报表演示说明1、本演示分为日报、月报、年报2、日报的生成:对于日报可以每小时输入一个数据,然后进行统计后每天生成一个报表日报生成的命令语言见事件命令语言的条件为:$分==0 && $秒==0,消失时注意:a、报表函数命令执行时报表控件所在的画面必须打开,因此对于画面不多的情况下可以在工程运行时将后台处理画面打开并隐含起来,同时所有其它的画面属性都应为覆盖式。

如果画面较多无法全部将画面属性设为覆盖式则可以在报表命令语言执行前执行打开画面的命令 b、在新的一天开始时需要使用新的报表文件,因此需要在调用前需要判断当天的报表文件是否已经创建,如果没有创建则需要进行创建 c、对于日报的统计主要针对每天持续运行的情况,对于不能保证持续运行的现场可以参照月报的统计方式b、报表的查询在日报查询页,可以对报表文件进行读取、删除等操作{string FileName1=InfoAppDir()+\日报\\\本站点\\$年, 0, \本站点\\$月, 0, \本站点\\$日, 0, \//自定义变量long return01=InfoFile( Filename1, 1, \\\\本站点\\$分 ); //判断日报目录下是否已经有当天的报表文件了 if (return01==0) {string FileName=InfoAppDir()+\报表\\日报.rtl\ReportLoad(\FileName=InfoAppDir()+\日报\\\本站点\\$年, 0, \月, 0, \日, 0, \ReportSaveAs(\}//如果没有报表文件则从报表目录下调取模板创建报表文件 ReportLoad(\ReportSetCellString(\本站点\\$日期); long hang=\\\\本站点\\$时+6;string timestr=time(\\\\本站点\\$时,0,0);ReportSetCellString(\ReportSetCellValue(\本站点\\颗粒物); ReportSetCellValue(\本站点\\颗粒物折算); ReportSetCellValue(\本站点\\SO2); ReportSetCellValue(\本站点\\SO2折算);ReportSetCellValue(\本站点\\NO2); ReportSetCellValue(\本站点\\NO2折算); ReportSetCellValue(\本站点\\流量); ReportSetCellValue(\本站点\\O2); ReportSetCellValue(\本站点\\温度); ReportSetCellValue(\本站点\\水分); ReportSaveAs(\}3、月报的生成月报中需要每天的统计数据,该数据为每天的平均值,如果需要其它的统计数据也可照此方法进行处理。

1.1 组态王的报表中如何实现报表数据的统计(如求和、求平均、检索最大最小值)?

1.1 组态王的报表中如何实现报表数据的统计(如求和、求平均、检索最大最小值)?

1.1组态王的报表中如何实现报表数据的统计(如求和、求平均、检索最大最小值)?针对报表中的数据统计需求功能,组态王提供了sum(),average(),max(),min()函数来实现相应的需求。

如:在报表的某一单元格写入=sum('a1:a100')此功能为对从A1到A100的连续的单元格进行求和,其他的函数的应用,请参照组态王的函数使用手册。

1.2在组态王画面上如何得到指定变量在指定时间内的最大值、最小值和平均值?组态王6.53 2008年版本新增加了求历史库中某段时间的最大值、最小值、平均值的功能,使用此函数可以在组态王画面上得到指定变量在一段时间内的最大值、最小值和平均值。

函数使用方法如下:RealResult=GetHistMaxData(TagName,StartTime,EndTime); //获取某段时间的最大值RealResult=GetHistMinData(TagName,StartTime,EndTime); //获取某段时间的最小值RealResult=GetHistAveData(TagName,StartTime,EndTime); //获取某段时间的平均值参数描述:TagName:所要查询的变量的名称,类型为字符串型,即带引号。

StartTime:数据查询的开始时间,该时间是通过组态王HTConvertTime函数转化的以1969年12月31日16:00:00为基准的长整型数,所以用户在使用本函数之前,应先将查询起始时间转换为长整型数值。

EndTime:数据查询的结束时间,类型同StartTime。

返回值:返回一个实数值。

调用方法如下:long time1;long time2;time1=HTConvertTime(2008,10,17,17,07,35);time2=HTConvertTime(2008,10,17,17,09,35);\\本站点\最大值=GetHistMaxData("\\本站点\仿真变量",time1,time2);\\本站点\最小值=GetHistMinData("\\本站点\仿真变量",time1,time2);\\本站点\平均值=GetHistAveData("\\本站点\仿真变量",time1,time2);需要更新文件实现。

组态王6报表)

组态王6报表)

历史报表制作步骤 新建一个画面,起名:历史数据报表; 单击工具箱中4排第1个工具,用鼠标拖放一个矩形区; 双击矩形区中的灰色部分,弹出报表设计窗口; 起报表控件名,如:lish,回答几行几列,单击确认; 将最上面一行拉宽后,扫选中最上一行,单击报表工具箱中的合并工具;
单击工具箱中的工具:T ,输入表头文字,如:历史数据报表;
此时,实际上已将,
选中的文件名赋给了刚 定义的字符串变量“查 询” 了。
单击确认。
存盘后,运行时先单击下拉列表,选中一个 .rtl文件,再单击
报表查询
还有一种方法是,只要一单击下拉列表中的一个 .rtl文件,就自动查询,制作步骤
为:
在工程目录树的命令语言处,选数据改变命令语言; 右窗口中双击新建图标; 在变量处填上:\\本站点\查询 在程序窗口中写上:这段语句 单击确认。
必须有赋值号 “=”
下面是确定输出哪些变量的值: 在A3单元格中起行名,右击B3单元格,选插入变量,双击数据词典中对应的变量名; 在A4单元格中起行名,右击B4单元格,选插入变量,双击数据词典中对应的变量名; 在A5单元格中起行名,右击B5单元格,选插入变量,双击数据词典中对应的变量名;
…… 加边框 全选中表格(即单击最左上角的单元格),单击右键,选设置单元格格式:
2.制作实时报表的步骤 新建一个画面起名:实时数据报表;
(此时会弹出一个报表工具箱,见上图)
单击工具箱中4排第1个工具 ,用鼠标拖放出一个矩形区,即表;
双击矩形区中的灰色部分,弹出报表设计窗口;
起报表控件名,如:biao1,回答几行几列,单击确认;
将最上面一行拉高后,扫选中最上一行,单击报表工具箱中的合并工具;
使用ODBC数据源时,可显 示通用数据库中的数据, 但要提前配置好数据源。

组态王 SCADA3.0报表例程

组态王 SCADA3.0报表例程

北京亚控科技发展有限公司
4
“报表系统应用例程”说明文档
图 7 日期时间控件属性 再添加文本“Text3”,模拟值输入和模拟值输出动画链接关联变量\\local\StepTime, 如图 8 所示。图 8 动画连接北京亚控科技发展有限公司
5
“报表系统应用例程”说明文档
第三步:添加、设置按钮 1)查询按钮: 打开图库精灵,在画面上添加一按钮,在按钮上再添加文本为:查询,该按钮按下 命令语言如下: long year1; long month1; long day1; long hour1; long minute1; long second1; long year2; long month2; long day2; long hour2; long minute2; long second2; long StartTime; long EndTime; year1=UIDateTime1.Year; month1=UIDateTime1.Month; day1=UIDateTime1.Day; hour1=UIDateTime1.Hour; minute1=UIDateTime1.Minute; second1=UIDateTime1.Second; year2=UIDateTime2.Year; month2=UIDateTime2.Month; day2=UIDateTime2.Day; hour2=UIDateTime2.Hour; minute2=UIDateTime2.Minute; second2=UIDateTime2.Second; string str=InfoAppDir()+"Report\model.rtl"; Report0.ReportLoad(str); Report0.SetCellString(2,4,\\local\$Date); //填写日期 StartTime=ConvertTimeToSecond(year1,month1,day1,hour1,minute1,second1,0); EndTime=ConvertTimeToSecond(year2,month2,day2,hour2,minute2,second2,0); Report0.SetTime(StartTime,EndTime,\\local\StepTime); Report0.SetHistData("\\local\temperature",2); Report0.SetHistData("\\local\pressure",3); Report0.SetHistData("\\local\flow",4); Report0.Query();

组态王的年月报表

组态王的年月报表

组态王的年⽉报表(1)建⽴报表的步骤将《实时数据》插⼊到《⽇报表后台数据的累计量》插⼊到《⽉报表后台累计量》插⼊到《年报表后台》//........................................................................................................................................................................................................................................................................................................................................... //每⼩时将repot7的实时数据插⼊到report 6中,long hang;hang= \\本站点\$时+3;//定位long Value;Value=ReportGetCellValue("Report7", 4, 2);//获取指定报表单元格的数值ReportSetCellValue("Report6", hang, 2, Value);//将指定报表的指定单元格设定为指定值Value=ReportGetCellValue("Report7", 4, 3);ReportSetCellValue("Report6", hang, 3, Value);Value=ReportGetCellValue("Report7", 4, 4);ReportSetCellValue("Report6", hang, 4, Value);Value=ReportGetCellValue("Report7", 4, 5);ReportSetCellValue("Report6", hang, 5, Value);Value=ReportGetCellValue("Report7", 4, 6);ReportSetCellValue("Report6", hang, 6, Value);Value=ReportGetCellValue("Report7", 4, 7);ReportSetCellValue("Report6", hang, 7, Value);Value=ReportGetCellValue("Report7", 4, 8);ReportSetCellValue("Report6", hang, 8, Value);Value=ReportGetCellValue("Report7", 4, 9);ReportSetCellValue("Report6", hang, 9, Value);Value=ReportGetCellValue("Report7", 4, 10);ReportSetCellValue("Report6", hang, 10, Value);Value=ReportGetCellValue("Report7", 4, 11);ReportSetCellValue("Report6", hang, 11, Value);Value=ReportGetCellValue("Report7", 4, 12);ReportSetCellValue("Report6", hang, 12, Value);Value=ReportGetCellValue("Report7", 4, 13);ReportSetCellValue("Report6", hang, 13, Value);Value=ReportGetCellValue("Report7", 4, 14);ReportSetCellValue("Report6", hang, 14, Value);Value=ReportGetCellValue("Report7", 4, 15);ReportSetCellValue("Report6", hang, 15, Value);//将实时报表report 7中的统计数据输⼊到⽇报表后台中//填写时间string temp;long StartTime;long y;StartTime=cyl_HTConvertTime(\\本站点\$年,\\本站点\$⽉,\\本站点\$⽇,0,0,0);//获取选着时间的长整形单位y=StartTime+\\本站点\$时*3600;temp=StrFromTime( y, 2 );ReportSetCellString("Report6", hang, 1, temp);ReportSetCellString("Report6", 28, 1, "当天累积");//填充ReportSetCellString("Report6", 29, 1, "备注");//填充//............................................................................................................................................................................................................................................................................................................................................ ReportSetCellString2("Report6", 4, 1, 27, 8, " "); //清空单元格//............................................................................................................................................................................................................................................................................................................................................(1)查询⽉报string FileName;FileName=InfoAppDir()+"⽉报\"+\\本站点\报表名;ReportLoad("⽉报",FileName);//............................................................................................................................................................................................................................................................................................................................................(2)删除⽉报string FileName;FileName=InfoAppDir()+"⽉报\"+\\本站点\报表名;FileDelete( Filename );string FileName1;FileName1=InfoAppDir()+"⽉报\*.rtl";listClear("⽉报查询");ListLoadFileName( "⽉报查询", FileName1 );//............................................................................................................................................................................................................................................................................................................................................(3)刷新⽉报string FileName;FileName=InfoAppDir()+"⽉报\"+"*.rtl";listClear("⽉报查询");ListLoadFileName( "⽉报查询", FileName );//............................................................................................................................................................................................................................................................................................................................................//每天定时将⽇报后台reprot 6中的累积量插⼊到⽉报表reprot5后台中string reportname2=StrFromReal( \\本站点\$年, 0, "f" )+StrFromReal( \\本站点\$⽉, 0, "f")+".rtl";//把年⽉转化为字符串⽤来命名//====================string FileName;//⾃定义变量FileName=InfoAppDir()+"⽉报\"+reportname2;long return02=InfoFile( Filename, 1, \\本站点\$分 );//查找⽂件是否存在,找不到返回0 ShowPicture("⽉报后台");//HidePicture("⽉报后台");//判断⽉报⽬录下是否已经有当⽉的报表⽂件了if (return02==0)//当前⽬录下没有相应⽉报表报表{FileName=InfoAppDir()+"报表\⽉报.rtl";ReportLoad("Roport5",FileName);//把filename名称⽂件中数据填⼊到report中FileName=InfoAppDir()+"⽉报\"+ reportname2;Reportsaveas("Roport5",FileName);//报存⽉报后台//\\本站点\⽇计数=0;}//如果当⽉的⽉报⽂件还没有产⽣则调⼊⽉报.rtl⽂件并按规定格式保存报表⽂件FileName=InfoAppDir()+"⽉报\"+StrFromReal( \\本站点\$年, 0, "f" )+StrFromReal(\\本站点\$⽉, 0, "f" )+".rtl";ReportLoad("Report5",FileName);//读取指定路径下的报表到当前控件报表long hang;hang= \\本站点\$⽇+3;//定位//\\本站点\⽇计数=\\本站点\⽇计数+1;string str;long Value;long Value1;long Value2;str=ReportGetCellString("Report6", 2, 5);//获取指定报表单元格的⽂本ReportSetCellString("Report5", hang, 1, str);//将指定报表单元格设定为指定字符串//以上为在⽉报第⼀列添加⽇期Value=ReportGetCellValue("Report6", 28, 2);//获取指定报表单元格的数值ReportSetCellValue("Report5", hang, 2, Value);//将指定报表的指定单元格设定为指定值Value=ReportGetCellValue("Report6", 28, 3);ReportSetCellValue("Report5", hang, 3, Value);Value=ReportGetCellValue("Report6", 28, 4);ReportSetCellValue("Report5", hang, 4, Value);Value=ReportGetCellValue("Report6", 28, 5);ReportSetCellValue("Report5", hang, 5, Value);Value=ReportGetCellValue("Report6", 28, 6);ReportSetCellValue("Report5", hang, 6, Value);Value=ReportGetCellValue("Report6", 28, 7);ReportSetCellValue("Report5", hang, 7, Value);Value=ReportGetCellValue("Report6", 28, 8);ReportSetCellValue("Report5", hang, 8, Value);Value=ReportGetCellValue("Report6", 28, 9);ReportSetCellValue("Report5", hang, 9, Value);Value=ReportGetCellValue("Report6", 28, 10);ReportSetCellValue("Report5", hang, 10, Value);Value=ReportGetCellValue("Report6", 28, 11);ReportSetCellValue("Report5", hang, 11, Value);Value=ReportGetCellValue("Report6", 28, 12);ReportSetCellValue("Report5", hang, 12, Value);Value=ReportGetCellValue("Report6", 28, 13);ReportSetCellValue("Report5", hang, 13, Value);Value=ReportGetCellValue("Report6", 28, 14);ReportSetCellValue("Report5", hang, 14, Value);Value=ReportGetCellValue("Report6", 28, 15);ReportSetCellValue("Report5", hang, 15, Value);//将⽇报表中的统计数据当天累积值输⼊到⽉报表中//以下为计算累积值Value1=ReportGetCellValue("Report5", 4, 2);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 2);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 2, Value);Value1=ReportGetCellValue("Report5", 4, 2);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 2);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 2, Value);Value1=ReportGetCellValue("Report5", 4, 3);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 3);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 3, Value);Value1=ReportGetCellValue("Report5", 4, 4);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 4);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 4, Value);Value1=ReportGetCellValue("Report5", 4, 5);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 5);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 5, Value);Value1=ReportGetCellValue("Report5", 4, 6);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 6);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 6, Value);Value1=ReportGetCellValue("Report5", 4, 7);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 7);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 7, Value);Value1=ReportGetCellValue("Report5", 4, 8);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 8);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 8, Value);Value1=ReportGetCellValue("Report5", 4, 9);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 9);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 9, Value);Value1=ReportGetCellValue("Report5", 4, 10);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 10);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 10, Value);Value1=ReportGetCellValue("Report5", 4, 11);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 11);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 11, Value);Value1=ReportGetCellValue("Report5", 4, 12);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 12);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 12, Value);Value1=ReportGetCellValue("Report5", 4, 13);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 13);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 13, Value);Value1=ReportGetCellValue("Report5", 4, 14);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 14);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 14, Value);Value1=ReportGetCellValue("Report5", 4, 15);//获取⽉报后台起始值Value2=ReportGetCellValue("Report5", hang, 15);//获取⽉报后台末尾值Value=Value2-Value1;ReportSetCellValue("Report5", 35, 15, Value);Reportsaveas("Report5",FileName);//HidePicture("⽉报后台");//..........................................................................................................................................................................................................................................................................................................................................//每天定时将⽉报后台reprot 5中的累积量插⼊到年报表后台report 8中string reportname2=StrFromReal( \\本站点\$年, 0, "f" )+".rtl";//把年转化为字符串⽤来命名//====================string FileName;//⾃定义变量FileName=InfoAppDir()+"年报\"+reportname2;long return02=InfoFile( Filename, 1, \\本站点\$分 );//查找⽂件是否存在,找不到返回0ShowPicture("年报后台");//HidePicture("年报后台");//判断年报⽬录下是否已经有当年的报表⽂件了if (return02==0)//当前⽬录下没有相应年报表报表{FileName=InfoAppDir()+"报表\年报.rtl";ReportLoad("Roport8",FileName);//把filename名称⽂件中数据填⼊到report中FileName=InfoAppDir()+"年报\"+ reportname2;Reportsaveas("Roport8",FileName);//报存⽉报后台}//如果当⽉的⽉报⽂件还没有产⽣则调⼊⽉报.rtl⽂件并按规定格式保存报表⽂件FileName=InfoAppDir()+"年报\"+StrFromReal( \\本站点\$年, 0, "f" )+".rtl";ReportLoad("Report8",FileName);//读取指定路径下的报表到当前控件报表long hang;hang= \\本站点\$⽉+3;//定位string str;long Value;long Value1;long Value2;str=ReportGetCellString("Report5", 2, 5);//获取指定报表单元格的⽂本str=StrLeft(str, 7);//裁剪str,只获取⽉ReportSetCellString("Report8", hang, 1, str);//将指定报表单元格设定为指定字符串//以上为在⽉报第⼀列添加⽇期Value=ReportGetCellValue("Report5", 35, 2);//获取指定报表单元格的数值ReportSetCellValue("Report8", hang, 2, Value);//将指定报表的指定单元格设定为指定值Value=ReportGetCellValue("Report5", 35, 3);ReportSetCellValue("Report8", hang, 3, Value);Value=ReportGetCellValue("Report5", 35, 4);ReportSetCellValue("Report8", hang, 4, Value);Value=ReportGetCellValue("Report5", 35, 5);ReportSetCellValue("Report8", hang, 5, Value);Value=ReportGetCellValue("Report5", 35, 6);ReportSetCellValue("Report8", hang, 6, Value);Value=ReportGetCellValue("Report5", 35, 7);ReportSetCellValue("Report8", hang, 7, Value);Value=ReportGetCellValue("Report5", 35, 8);ReportSetCellValue("Report8", hang, 8, Value);Value=ReportGetCellValue("Report5", 35, 9);ReportSetCellValue("Report8", hang, 9, Value);Value=ReportGetCellValue("Report5", 35, 10);ReportSetCellValue("Report8", hang, 10, Value);Value=ReportGetCellValue("Report5", 35, 11);ReportSetCellValue("Report8", hang, 11, Value);Value=ReportGetCellValue("Report5", 35, 12);ReportSetCellValue("Report8", hang, 12, Value);Value=ReportGetCellValue("Report5", 35, 13);ReportSetCellValue("Report8", hang, 13, Value);Value=ReportGetCellValue("Report5", 35, 14);ReportSetCellValue("Report8", hang, 14, Value);Value=ReportGetCellValue("Report5", 35, 15);ReportSetCellValue("Report8", hang, 15, Value);//将⽉报表后台report 5中的统计数据当天累积值输⼊到年报表后台report 8中;Value1=ReportGetCellValue("Report8", 4, 2);//起始值Value2=ReportGetCellValue("Report8", hang, 2);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 2, Value);Value1=ReportGetCellValue("Report8", 4, 3);//起始值Value2=ReportGetCellValue("Report8", hang, 3);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 3, Value);Value1=ReportGetCellValue("Report8", 4, 4);//起始值Value2=ReportGetCellValue("Report8", hang, 4);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 4, Value);Value1=ReportGetCellValue("Report8", 4, 5);//起始值Value2=ReportGetCellValue("Report8", hang, 5);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 5, Value);Value1=ReportGetCellValue("Report8", 4, 6);//起始值Value2=ReportGetCellValue("Report8", hang, 6);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 6, Value);Value1=ReportGetCellValue("Report8", 4, 7);//起始值Value2=ReportGetCellValue("Report8", hang, 7);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 7, Value);Value1=ReportGetCellValue("Report8", 4, 8);//起始值Value2=ReportGetCellValue("Report8", hang, 8);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 8, Value);Value1=ReportGetCellValue("Report8", 4, 9);//起始值Value2=ReportGetCellValue("Report8", hang, 9);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 9, Value);Value1=ReportGetCellValue("Report8", 4, 10);//起始值Value2=ReportGetCellValue("Report8", hang, 10);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 10, Value);Value1=ReportGetCellValue("Report8", 4, 11);//起始值Value2=ReportGetCellValue("Report8", hang, 11);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 11, Value);Value1=ReportGetCellValue("Report8", 4, 12);//起始值Value2=ReportGetCellValue("Report8", hang, 12);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 12, Value);Value1=ReportGetCellValue("Report8", 4, 13);//起始值Value2=ReportGetCellValue("Report8", hang, 13);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 13, Value);Value1=ReportGetCellValue("Report8", 4, 14);//起始值Value2=ReportGetCellValue("Report8", hang, 14);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 14, Value);Value1=ReportGetCellValue("Report8", 4, 15);//起始值Value2=ReportGetCellValue("Report8", hang, 15);//结束值Value=Value2-Value1;ReportSetCellValue("Report8", 16, 15, Value);Reportsaveas("Report8",FileName);//HidePicture("年报后台");//............................................................................................................................................................................................................................................................................................................................................。

组态王的常见问题解答

组态王的常见问题解答

组态王的常见问题解答1、变量设定中最大(小)值及最大(小)原始值的意义?最大(小)值是变量在现实中表达的工程值(如:温度、压力等)的大小,而最大(小)原始值是采集设备中[寄存器]数字量的最大(小)值(如板卡中的819-4095等)。

一般对于板卡设备此值为物理量经AD转换之后的值,如12BitAD此值范围0~4096、16BitAD为0~65535,对于PLC、智能仪表、变频器,其本身已将物理值转换为工程值所以此时最大(小)值与最大(小)原始值在设置时是一致的.2.组态完成后发现工程特别大,怎样把工程文件变小?可以删除*.AL2(报警信息文件),*.REC(历史记录文件),*.111文件(*.pic文件的备份文件)的文件。

3:在定义变量的基本属性时状态栏中的保存数值、保存参数是什么意思?保存参数:在系统运行时,修改变量的域的值(可读可写型),系统自动保存这些参数值,系统退出后,其参数值不会发生变化。

当系统再启动时,变量的域的参数值为上次系统运行时最后一次的设置值。

无需用户再去重新定义。

保存数值:系统运行时,当变量的值发生变化后,系统自动保存该值。

当系统退出后再次运行时,变量的初始值为上次系统运行过程中变量值最后一次变化的值。

4:如何不进入系统桌面环境而直接运行组态王工程如何实现(Win98系统)?编辑Win98系统下的System.ini文件,将shell=explorer.exe改为:path=c:\ProgramFiles\Kingview\shell=Touchvew.exe 即可5:组态王里画面属性中覆盖式与替换式有何区别?覆盖式画面出现时,它重叠在当前画面之上,其他打开的画面还在运行,关闭后被覆盖的画面又可见。

替换式画面出现时,所有与之相交的画面自动从屏幕和内存中删除,不再运行。

6:如何利用多个摄像头在组态王上显示多幅画面?用户需要增加硬件设备:矩阵转换器和画面分割器。

视频采集后通过矩阵转换和画面分割再送进组态王中,例如需要显示16个画面,可选择16画面分割器。

组态王日报表例程资料讲解

组态王日报表例程资料讲解

组态王日报表的实现例程配置参考文档北京亚控科技发展有限公司技术部目录一、功能概述 (3)一、功能概述 (3)二、工程实例 (3)三、操作步骤: (3)1、定义设备: (3)2、定义变量: (3)3.制作画面: (4)3.1) 创建报表: (4)3.2) 创建日历控件: (6)4.进入运行系统: (10)四、注意事项 (11)图表图一报表 (4)图二报表设计 (5)图三日报表 (5)图四日历控件 (6)图五控件事件函数 (8)图六保存报表 (8)图七打印报表 (9)图八打印报表 (9)图九运行系统 (10)图十打印预览 (11)一、功能概述常规需求:很多工业现场会用到报表功能,而日报是其中最基本的一种报表形式。

日报表一般为每天整点的数据,每一个变量有24个数据。

组态王中的实现方法:利用组态王内置报表以及报表的函数来实现对日数据的查询生成日报表。

组态王内置报表的操作类似excel,操作简单、方便,并且组态王提供了大量的报表函数来实现各种复杂功能。

二、工程实例我们举一个例子来说明日报表的实现方法。

在此例程中我们定义五个变量,分别为“压力”、“温度”、“密度”、“电流”、“电压”,运行系统运行后记录历史数据,查询日报表数据时自动从历史数据中查询整点数据生成报表,并可以保存、打印报表。

下面就以此为例来演示完成这一要求的具体步骤。

三、操作步骤:1、定义设备:根据工程中实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC-亚控-仿真PLC-串口”驱动,定义设备名称为”PLC”。

2、定义变量:在组态王中定义三个变量:压力(IO实数类型)、温度(IO实数类型)、密度(IO实数类型)。

压力变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器INCREA100,数据类型short,读写属性为只读,采集频率1000。

记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。

组态王教学-报表与打印

组态王教学-报表与打印

报表与打印常见问题解答北京亚控科技发展有限公司2009年8月目录1. 报表 (1)1.1 组态王软件自带的报表窗口的行列设置限制是多少? (1)1.2 组态王软件自带的报表窗口的控件名称命名有什么特殊要求吗? (1)1.3 组态王软件自带的报表窗口控件,如何设定单元格数据显示的小数位数? (1)1.4 在组态王运行系统中,如何锁定报表的行和列? (1)1.5 在组态王运行系统中能否对报表单元格中的数据进行修改? (1)1.6 在组态王运行系统中如何清除报表单元格中的数据? (2)1.7 在组态王运行系统中,如何实现将组态王报表文件保存为以日期命名的文件? (2)1.8 组态王的历史记录属性中能够设置的定时记录最短时间是1分钟,如何实现1秒钟的定时记录功能? (2)1.9 在组态王中如何删除指定目录下的单个报表文件或多个报表文件? (2)1.10 如何打开组态王报表文件(*.rtl格式的文件)?能否使用其他应用程序打开? (3)1.11 能否对组态王报表控件中的行宽和列宽进行锁定? (3)1.12 在安装组态王的计算机A中能否读取另外一台安装组态王计算机B上面的报表文件? (3)1.13 在组态王中实现以时分秒为文件名且每分钟保存一报表文件功能,当保存整点的报表时,指定文件夹内的文件名比实际时间少一个小时? (3)1.14 在组态王报表控件中对合并的单元格应如何计算它的行号和列号? 31.15 在组态王画面上如何得到指定变量在指定时间内的最大值、最小值和平均值? (3)1.16 使用组态王提供的kingreport.xls文件查询组态王历史数据,选择查询的工程后提示加载工程失败,为什么? (4)1.17 求报表中不为0的单元格数据的平均值? (4)1.18 为什么我使用ReportLoad()函数无法打开我使用ReportSaveas()函数保存的报表? (5)1.19 组态王的报表中如何实现报表数据的统计(如求和、求平均、检索最大最小值)? (5)1.20 组态王的报表能否直接保存成excel格式的文件,这样可以直接通过excel程序打开? (6)1.21 我使用组态王的报表控件制作工程报表,采用的ReportSetCellValue()来对报表控件进行后台填值操作,为什么当我显示报表时却是空白的? (6)1.22 在组态王运行系统中如何实现往报表单元格中插入数据? (6)1.23 组态王中扩展名为.rtl的文件是什么格式的文件?如何打开此类型的文件? (6)1.24 为什么在命令语言中使用报表函数却不执行? (7)2. 打印 (7)2.1 组态王软件对普通商业打印机的选择有什么要求? (7)2.2 组态王软件如何打印运行过程中的画面? (7)2.3 组态王软件的表格窗口的数据是如何进行打印输出的? (7)2.4 为什么用ReportPrint2()函数不能实现自动打印报表? (7)2.5 组态王软件的控件的数据是如何进行打印输出的? (8)2.6 在组态王中进行打印预览时,为什么不能进行打印方向的设置,如何解决? (8)1. 报表1.1组态王软件自带的报表窗口的行列设置限制是多少?组态王6.51及其以前版本,报表窗口的行列设置限制为2000行52列,对新版的组态王软件,报表窗口的行列设置限制有了改善,可以定义到20000行128列。

报表系统-组态王报表系统[整理]

报表系统-组态王报表系统[整理]

体系常识汇编Compilation of system knowledge20XX第八讲报表体系在本课程您将:Ì把握实时报表的创立进程Ì把握前史报表的创立、查询进程第一节概述数据报表的用处数据报表是反响出产进程中的进程数据、运转状况等,并对数据进行记载、计算的一种重要东西,是出产进程必不可少的一个重要环节。

它既能反响体系实时的出产状况又能对长期的出产进程数据进行计算、剖析,使管理人员能够把握和剖析出产进程状况。

组态王供给内嵌式报表体系,工程人员能够恣意设置报表格局,对报表进行组态。

组态王为工程人员供给了丰厚的报表函数,完结各种运算、数据转化、计算剖析、报表打印等。

既能够制造实时报表又能够制造前史报表。

别的,工程人员还能够制造各种报表模板,完结屡次运用,避免重复作业。

第二节实时数据报表创立实时数据报表实时数据报表创立进程如下:6、新建一画面,名称为:实时数据报表画面。

7、挑选东西箱中的东西,在画面上输入文字:实时数据报表。

3、挑选东西箱中的东西,在画面上制造一实时数据报表窗口,如图 8-1 所示:图 8-1“报表东西箱”会主动显现出来,双击窗口的灰色部分,弹出“报表规划”对话框,如图 8-2 所示:图 8-2对话框设置如下:报表控件名:Report1 行数:6列数:104、输入静态文字:选中 A1 到 J1 的单元格区域,履行“报表东西箱”中的“兼并单元格”指令并在兼并完结的单元格中输入:实时数据报表演示。

运用相同办法输入其它静态文字,如图 8-3 所示:图 8-35、刺进动态变量:兼并 B2 和 C2 单元格,并在兼并完结的单元格中输入:=\\本站点\$日期。

(变量的输入能够运用“报表东西箱”中的“刺进变量”按钮完结)运用相同办法输入其它动态变量,如图8-4 所示:图 8-4注:如果变量名前没有增加“=”符号的话此变量被当作静态文字来处理。

6、单击“文件”菜单中的“悉数存”指令,保存您所作的设置。

组态王报表(课件)

组态王报表(课件)
上述命令语言的作用是将下拉式组合框中选中的报表文件的数 据显示在Report2 报表窗口中,其中\\本站点\报表查询变量保 存了下拉式组合框中选中的报表文件名。
ReportLoad
此函数为报表专用函数。将指定路径下的报表读到当前报 表中来,语法格式使用如下:
ReportLoad(ReportName, FileName) 参数说明:ReportName:报表名称 FileName:报表存储路径和文件名称
语法格式使用如下:
ReportSetHistData(ReportName, TagName, StartTime, SepTime, szContent) ;
参数说明:ReportName:要填写查询数据结果的报表 名称;
为秒;
TagName:所要查询的变量名称; StartTime:数据查询的开始时间; SepTime:查询的数据的时间间隔,单位
ReportSetHistData2(1,1);
ReportSetHistData2 此函数为报表专用函数。查询历史数据,系统会自动弹 出历史数据查询对话框。 语法使用格式如下: ReportSetHistData2(StartRow,StartCol);
参数说明: StartRow:查询的数据在报表中填充的起始行数。 StartCol:查询的数据在报表中填充的起始列数。
在画面上输入文字:实时数据报表查询。 绘制一实时数据报表窗口,控件名称为:Report2。
“下拉式组合框”控件,控 件属性设置如图所示:
在画面属性的命令语言 中输入如下命令语言:
string filename; filename=InfoAppDir()+"\实时数据文件夹\*.rtl"; listClear("List1"); ListLoadFileName( "List1",filename);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ReportSetCellValue("一分钟数据报表", row, 2, \\本站点\原料油液位1); ReportSetCellValue("一分钟数据报表", row, 3, \\本站点\催化剂液位1);
ReportSetCellValue("一分钟数据报表", row, 4, \\本站点\成品油液位1);
参数说明: ReportName:报表名称; StartRow:要设置数值的报表的开始行号; StartCol:要设置数值的报表的开始列号; StartRow:要设置数值的报表的开始行号; StartCol:要设置数值的报表的开始列号; Value:要设置的文本 。
二、1 分钟数据查询报表
定时自动查询历史数据,并获取1 分钟数据的平均值。 设置过程如下: 在画面上输入文字:1 分钟数据查询报表。 绘制一报表窗口(33 行5 列),控件名称为:一分钟查询, 并设计表格如下,
在画面中添加一按钮,按钮文本为:报表查询。 在按钮的弹起事件中输入如下命令语言:
string filename1; string filename2; filename1=InfoAppDir()+"\实时数据文件夹\"+\\本站点\报表查 询变量; ReportLoad("Report2",filename1); filename2=InfoAppDir()+"\实时数据文件夹\*.rtl"; listClear("List1"); ListLoadFileName( "List1", filename2); 上述命令语言的作用是将下拉式组合框中选中的报表文件的数 据显示在Report2 报表窗口中,其中\\本站点\报表查询变量保 存了下拉式组合框中选中的报表文件名。
8.3 历史数据报表的其它应用
一、1 分钟数据报表演示
利用报表窗口工具结合组态王提供的命令语言可实现一 个1 分钟的数据报表。 设置过程如下: 新建一画面,名称为:1 分钟数据报表画面。 在画面上输入文字:1 分钟数据报表。 在画面上绘制一报表窗口(64 行5 列),控件名称为: 一分钟报表Report6,并设计表格,如图所示:
上述命令语言的作用是查询变量当前时间前一分钟的数据,查 询间隔为2 秒,把时间显示在报表“一分钟查询”的a3 到a32 单元格中,数据的查询结果分别显示在报表“一分钟查询”的 b3 到b32、c3 到c32和d3 到d32 单元格中。
ReportSetHistData
按照用户给定的参数查询历史数据。 语法格式使用如下: ReportSetHistData(ReportName, TagName, StartTime, SepTime, szContent) ; 参数说明:ReportName:要填写查询数据结果的报表 名称; TagName:所要查询的变量名称; StartTime:数据查询的开始时间; SepTime:查询的数据的时间间隔,单位 为秒; szContent:查询结果填充的单元格范围 。
设置选中的单元格格式
输入静态文字:
单击“文件”菜单中的“全部存”命令,切换到VIEW” 命令,进入运行系统。
2、报表函数 报表在运行系统中、单元格中数据的计算、报表的操作等都是 通过组态王提供的一整套报表函数实现的。 报表函数分为报表内部函数、报表单元格操作函数、报表存取 函数、报表历史数据查询函数、统计函数、报表打印函数等。
8.1 实时数据报表
8.2 历史数据报表
8.3 历史数据报表的其它应用
8.1 实时数据报表
1、创建实时数据报表
新建一画面,名称为:实时数据报表画面。
在画面上输入文字:实时数据报表。 在工具箱中选择“报表窗口”。
“双击窗口的灰色部分,弹出“报表设计”对话框,对话框设置如下:
报表工具箱 注:如果变量名前没有添加“=”符号的话此变量被当作静态文字来处理。
创建历史数据报表 • 新建一画面,名称为:历史数据报表画面。 • 在画面上输入文字:历史数据报表。 • 在画面上绘制一历史数据报表窗口,控件名称为:历史报表,并设计表 格,如图 所示:
在画面中添加一按钮,按钮文本为:历史数据报表查询。 在按钮的弹起事件中输入如下命令语言: ReportSetHistData2(1,1); ReportSetHistData2 此函数为报表专用函数。查询历史数据,系统会自动弹 出历史数据查询对话框。 语法使用格式如下: ReportSetHistData2(StartRow,StartCol); 参数说明: StartRow:查询的数据在报表中填充的起始行数。 StartCol:查询的数据在报表中填充的起始列数。
1)实时打印 ReportPrint2 此函数为报表专用函数。将指定的报表输出到打印配置中指定的打印机上 打印,语法使用格式如下: ReportPrint2(ReportName)
自动打印:ReportPrint2(“ReportName”)
或ReportPrint2(“ReportName”,1) 手动打印: ReportPrint2(“ReportName”,0),弹出“ 打印属性” 对话框。
If(row==63) ReportSetCellString2("一分钟数据报表", 4, 1, 63, 5, "");
当系统变量\\本站点\$秒变化时,执行该脚本程序,将变 量每秒钟的数据自动写入报表控件中。
ReportSetCellString
将指定报表的指定单元格设置为给定字符串。
语法格式使用如下:
“下拉式组合框”控件,控 件属性设置如图所示:
在画面属性的命令语言 中输入如下命令语言: string filename; filename=InfoAppDir()+"\实时数据文件夹\*.rtl"; listClear("List1"); ListLoadFileName( "List1",filename); 上述命令语言的作用是将已经保存到“当前组态王工程路 径下实时数据文件夹”中的实时报表文件名称在下拉式组 合框中显示出来。
在报表窗口的b33 单元格中填写“=Average(‘b3:b32’)”; c33 单元格中填写“=Average(‘c3:c32’)”; d33 单元格中填写“=Average(‘d3:d32’)”。
在“数据改变命令语言”选项输入如下脚本语言:
long StartTime; StartTime=HTConvertTime(\\本站点\$年,\\本站点\$月,\\本站点\$日,\\本站点\$时, \\本站点\$分,0); StartTime=StartTime-60; ReportSetTime("一分钟查询", StartTime, 2, "a3:a32"); ReportSetHistData("一分钟查询", "\\本站点\原料油液位1", StartTime, 2,"b3:b32"); ReportSetHistData("一分钟查询", "\\本站点\催化剂液位1", StartTime, 2,"c3:c32"); ReportSetHistData("一分钟查询", "\\本站点\成品油液位1", StartTime, 2,"d3:d32");
HTConvertTime 此函数将指定的时间格式(年,月,日,时,分,秒)转换为 以秒为单位的长整型数,转换的时间基准是UTC(格林尼 治)1970年1月1日00:00:00。 语法使用格式 HTConvertTime(Year,Month,Day,Hour,Minute,Second)
参数描述 Year: 年,整型,此值必须介于1970和2019之间; Month:月,整型,此值必须介于1和12之间; Day: 日,整型,此值必须介于1和31之间; Hour: 小时,整型,此值必须介于0和23之间; Minute: 分钟,整型,此值必须介于0和59之间; Second: 秒,整型,此值必须介于0和59之间。 注:调用此函数将用年、月、日、时、分、秒表示的时间转换成自1970年1 月1日00:00:00即UCT起到该时刻所经过的秒数。 例如: 语句HTConvertTime(1970,1,1,9,0,0)执行后返回长整型数为3600。
4)打印预览设置ReportPrintSetup 此函数对指定的报表进行打印预览并且可输出到打印配置中 指定的打印机上进行打印。
ReportPrintSetup(szRptName); 参数说明:szRptName:要打印预览的报表名称 。 例如:打印预览“实时数据报表”: ReportPrintSetup(“实时数据报表”)。
第八讲 报表
数据报表是反应生产过程中的过程数据、运行状态等,并 对数据进行记录、统计的一种重要工具,是生产过程必不 可少的一个重要环节。它既能反应系统实时的生产情况, 又能对长期的生产过程数据进行统计、分析,使管理人员 能够掌握和分析生产过程情况。 组态王提供内嵌式报表系统,工程人员可以任意设置报表 格式,对报表进行组态。 组态王为工程人员提供了丰富的报表函数,实现各种运算、 数据转换、统计分析、报表打印等。 工程人员还可以制作各种报表模板,实现多次使用,以免 重复工作。
4)实时数据报表的查询
利用系统提供的命令语言可将实时数据报表以当前时间作为 文件名保存在指定的文件夹中,对于已经保存到文件夹中的 报表文件如何在组态王中进行查询呢?利用组态王提供的下 拉式组合框与一报表窗口控件可以实现上述功能。 查询过程:
在工程浏览器窗口的数据词典中定义一个内存字符串变量: 变量名:报表查询变量 变量类型:内存字符串 初始值:空 在画面上输入文字:实时数据报表查询。 绘制一实时数据报表窗口,控件名称为:Report2。
相关文档
最新文档