组态王7.5SP1版本第7章报表系统

合集下载

组态王报表(课件)

组态王报表(课件)

2)保存( ReportSaveAs ) )保存( 此函数为报表专用函数。 此函数为报表专用函数。将指定报表按照所给的文件名存储到指定目 录下,语法格式使用如下: 录下,语法格式使用如下: ReportSaveAs(ReportName, FileName) 参数说明:ReportName:报表名称; :报表名称; 参数说明 FileName:存储路径和文件名称 。 :
利用系统提供的命令语言可将实时数据报表以当前时间作为 文件名保存在指定的文件夹中, 文件名保存在指定的文件夹中,对于已经保存到文件夹中的 报表文件如何在组态王中进行查询呢? 报表文件如何在组态王中进行查询呢?利用组态王提供的下 拉式组合框与一报表窗口控件可以实现上述功能。 拉式组合框与一报表窗口控件可以实现上述功能。 查询过程: 查询过程:
ReprotPageSetup(String szRptName); 参数说明: 参数说明:szRptName:要进行页面设置报表的名称 。 : 例如:设置“实时数据报表” 例如:设置“实时数据报表” ReportPageSetup(“实时数据库表”)。 实时数据库表” 实时数据库表 。
4)打印预览设置ReportPrintSetup )打印预览设置 此函数对指定的报表进行打印预览并且可输出到打印配置中 指定的打印机上进行打印。 指定的打印机上进行打印。
8.2 历史数据报表
历史报表记录了以往的生产记录数据,对用户来说是非常 历史报表记录了以往的生产记录数据, 重要的。 重要的。
创建历史数据报表 • 新建一画面,名称为:历史数据报表画面。 新建一画面,名称为:历史数据报表画面。 • 在画面上输入文字:历史数据报表。 在画面上输入文字:历史数据报表。 • 在画面上绘制一历史数据报表窗口,控件名称为:历史报表,并设计表 在画面上绘制一历史数据报表窗口,控件名称为:历史报表, 所示: 格,如图 所示:

用组态王报表

用组态王报表

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

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

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

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

实现起来倒也不难。

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

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

在这个工程中,有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($年,$月,$日)”。

组态王日报表制作

组态王日报表制作

组态王日报表制作步骤一、定义设备二、定义变量三、制作画面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");详细设置请查看保存和打印文档四、进入运行系统运行系统结果如下图所示:。

组态王课件7控件.ppt

组态王课件7控件.ppt

X-Y 轴曲线属性设置 用鼠标双击X-Y 轴曲线控件,则弹出“X-Y 轴曲线设置”对话
框:
用于规定曲线上最多显示点数。
在此窗口中对控件的名称设置为:控件。
在“画面属性”命令语言“存在时”中输入如下脚本语 言: xyAddNewPoint( "控件", \\本站点\原料油液位1, \\本站点\成品油液位1, 0 ); xyAddNewPoint( "控件", \\本站点\催化剂液位1, \\本站点\成品油液位1, 1 ); xyAddNewPoint( "控件", 20, 30, 2 );
时,给出提示性信息。
pvAddNewSetPt
此函数用于在指定的温控曲线控件中增加一段温度设定曲线。适用于 自由设定模式。
语法格式使用如下: pvAddNewSetPt( "ControlName", TimeOffset, Value ); 参数说明: ControlName:工程人员定义的温控曲线控件名称。 timeOffset:相对前一采样点的时间偏移量(即距前一值的时间 间隔值) 。 Value:温度的设定值,实型数据。
7.4 Active X 控件
组态王除了支持本身提供的各种控件外,还支持Windows 标准的Active X 控件,包括Microsoft 提供的标准Active X 控 件和用户自制的Active X 控件。
Active X 控件的引入在很大程度上方便了用户,用户可以 灵活地编制一个符合自身需要的控件或调用一个已有的标准 控件来完成一项复杂的任务,而无须在组态王中做大量的复 杂的工作。
xyAddNewPoint 用于在指定的X-Y轴曲线控件中给指定曲线添加一个数据点。 语法格式: xyAddNewPoint ( "ControlName", X, Y, Index ); 参数说明: ControlName:工程人员定义的X-Y轴曲线控件名称,可以为中文名或 英文名。 X:设置数据点的x轴坐标值 。 Y:设置数据点的y轴坐标值 。 Index:给出X-Y轴曲线控件中的曲线索引号,取值范围0-7。

组态王教学-报表与打印

组态王教学-报表与打印

报表与打印常见问题解答北京亚控科技发展有限公司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 在组态王中如何删除指定目录下的单个报表文件或多个报表文件? (3)1.10 如何打开组态王报表文件(*.rtl格式的文件)?能否使用其他应用程序打开? (3)1.11 能否对组态王报表控件中的行宽和列宽进行锁定? (3)1.12 在安装组态王的计算机A中能否读取另外一台安装组态王计算机B上面的报表文件?.......................................................................... 错误!未定义书签。

1.13 在组态王中实现以时分秒为文件名且每分钟保存一报表文件功能,当保存整点的报表时,指定文件夹内的文件名比实际时间少一个小时? (3)1.14 在组态王报表控件中对合并的单元格应如何计算它的行号和列号?...................................................................................................... 错误!未定义书签。

1.15 在组态王画面上如何得到指定变量在指定时间内的最大值、最小值和平均值?...................................................................................... 错误!未定义书签。

组态王日报表例程

组态王日报表例程

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

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

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

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

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

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

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

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

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

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

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

组态王月报表制作

组态王月报表制作

组态王报表制作第一步,新建“后台处理”画面,其风格与后面的“日报”画面一致,只是少了一些按钮及组合图框。

如下图报表控件为:report5第二步,新建“后台月报”画面,其风格与后面的“月报”画面一致,只是少了一些按钮及组合图框。

如下图报表控件为:report7第三步:执行指令生成日报及月报文件(后缀名为rtl,同时可生成.xls文件)在“事件命令语言”中新建两个事件:1、第一个事件为:\\本站点\$分==0&&\\本站点\$秒==0在该事件“消失时”写入如下脚本(该事件为每个小时写入一次数据):string FileName1=InfoAppDir()+"日报\"+ StrFromReal(\\本站点\$年, 0, "f")+"y"+StrFromReal(\\本站点\$月, 0, "f")+"m"+StrFromReal(\\本站点\$日, 0, "f" )+".rtl";//自定义变量long return01=InfoFile( Filename1, 1,\\本站点\$分);//判断日报目录下是否已经有当天的报表文件了if (return01==0){string FileName=InfoAppDir()+"报表\日报.rtl";ReportLoad("Report5",FileName);FileName=InfoAppDir()+"日报\"+StrFromReal( \\本站点\$年, 0,"f" )+"y"+StrFromReal($月, 0, "f" )+"m"+StrFromReal($日, 0, "f" )+".rtl"; ReportSaveAs("Report5",FileName);}//如果没有报表文件则从报表目录下调取模板创建报表文件ReportLoad("Report5",FileName1);ReportSetCellString("report5", 3,10,\\本站点\$日期);long hang=\\本站点\$时+6;//定义写入不同时间写入不同的行,将0点至1点的写入第六行,后面的往后加string timestr=time(\\本站点\$时,0,0); //定义时间变量ReportSetCellString("report5", hang,1,timestr);ReportSetCellValue("report5",hang,2,\\本站点\颗粒物);ReportSetCellValue("report5",hang,3,\\本站点\颗粒物折算);ReportSetCellValue("report5", hang,4,\\本站点\SO2);ReportSetCellValue("report5", hang,5,\\本站点\SO2折算);ReportSetCellValue("report5", hang,6,\\本站点\NO2);ReportSetCellValue("report5", hang,7,\\本站点\NO2折算);ReportSetCellValue("report5", hang,8,\\本站点\流量);ReportSetCellValue("report5", hang,9,\\本站点\O2);ReportSetCellValue("report5", hang,10,\\本站点\温度);ReportSetCellValue("report5", hang,11,\\本站点\水分);//ReportSetCellString就是将变量数值写入到报表的那一列中ReportSaveAs("Report5",FileName1);//将数据保存到报表中2、第二个事件为:\\本站点\$时==23在该事件“消失时”写入如下脚本(该事件为每天写入一次数据):string reportname2=StrFromReal(\\本站点\$年, 0, "f" )+StrFromReal(\\本站点\$月, 0, "f" )+".rtl";//====================string FileName;//自定义变量FileName=InfoAppDir()+"月报\"+reportname2;long return02=InfoFile( Filename, 1,\\本站点\$分);ShowPicture("后台月报");HidePicture("后台月报");//判断月报目录下是否已经有当月的报表文件了if (return02==0){FileName=InfoAppDir()+"报表\月报.rtl";ReportLoad("Roport7",FileName);FileName=InfoAppDir()+"月报\"+ reportname2;Reportsaveas("Roport7",FileName);\\本站点\日计数=0;}//如果当月的月报文件还没有产生则调入月报.rtl文件并按规定格式保存报表文件FileName=InfoAppDir()+"月报\"+StrFromReal( \\本站点\$年, 0,"f")+StrFromReal(\\本站点\$月, 0, "f" )+".rtl";ReportLoad("Report7",FileName);long hang;hang= $日+5;\\本站点\日计数=\\本站点\日计数+1;string str;long Value;str=ReportGetCellString("Report5", 3,10); ReportSetCellString("Report7", hang, 1,str); Value=ReportGetCellValue("Report5", 30,2); ReportSetCellValue("Report7", hang, 2,Value); Value=ReportGetCellValue("Report5", 30,3); ReportSetCellValue("Report7", hang, 3,Value); Value=ReportGetCellValue("Report5", 30,4); ReportSetCellValue("Report7", hang, 4,Value); Value=ReportGetCellValue("Report5", 30,5); ReportSetCellValue("Report7", hang, 5,Value); Value=ReportGetCellValue("Report5", 30,6); ReportSetCellValue("Report7", hang, 6,Value); Value=ReportGetCellValue("Report5", 30,7); ReportSetCellValue("Report7", hang, 7,Value); Value=ReportGetCellValue("Report5", 30,8); ReportSetCellValue("Report7", hang, 8,Value); Value=ReportGetCellValue("Report5", 30,9); ReportSetCellValue("Report7", hang, 9,Value); Value=ReportGetCellValue("Report5", 30,10); ReportSetCellValue("Report7", hang, 10,Value);ReportSetCellValue("Report7", hang, 11,Value); //将日报表中的统计数据(平均值)输入到月报表中Value=ReportGetCellValue("Report7", 39,2); Value=Value/\\本站点\日计数; ReportSetCellValue("Report7", 37, 2,Value); Value=ReportGetCellValue("Report7", 39,3); Value=Value/\\本站点\日计数; ReportSetCellValue("Report7", 37, 3,Value); Value=ReportGetCellValue("Report7", 39,4); Value=Value/\\本站点\日计数; ReportSetCellValue("Report7", 37, 4,Value); Value=ReportGetCellValue("Report7", 39,5); Value=Value/\\本站点\日计数; ReportSetCellValue("Report7", 37, 5,Value); Value=ReportGetCellValue("Report7", 39,6); Value=Value/\\本站点\日计数; ReportSetCellValue("Report7", 37, 6,Value); Value=ReportGetCellValue("Report7", 39,7); Value=Value/\\本站点\日计数;Value=ReportGetCellValue("Report7", 39,8);Value=Value/\\本站点\日计数;ReportSetCellValue("Report7", 37, 8,Value);Value=ReportGetCellValue("Report7", 39,9);Value=Value/\\本站点\日计数;ReportSetCellValue("Report7", 37, 9,Value);Value=ReportGetCellValue("Report7", 39,10);Value=Value/\\本站点\日计数;ReportSetCellValue("Report7", 37, 10,Value);Value=ReportGetCellValue("Report7", 39,11);Value=Value/\\本站点\日计数;ReportSetCellValue("Report7", 37, 11,Value);//将累计值转换为平均值Reportsaveas("Report7",FileName);ClosePicture("后台月报");第四步、新建“日报”“月报”这几个画面1、在“日报”中放置一个报表控件、一简单组合框控件及几个按钮,如下图:其中(1)、报表控件名为:report1(2)、组合图框名为:日报查询变量名为:日报表(3)、“刷新列表”按钮在“命令语言链接—弹起时”写入如下脚本string FileName; //定义变量FileName=InfoAppDir()+"日报\"+"*.rtl"; //日报表存放路径,InfoAppDir()为程序文件存放路径listClear("日报查询"); //清除组合图框中的列表ListLoadFileName( "日报查询", FileName ); //读取日报存放路径中的报表文件显示在组合图框中(4)、“查询日报”按钮在“命令语言链接—弹起时”写入如下脚本stringFileName; //定义变量FileName=InfoAppDir()+"日报\"+\\本站点\日报表; //组合图框中选中的报表文件,,InfoAppDir()为程序文件存放路径,\\本站点\日报表为组合图框的变量名ReportLoad("Report1",FileName); //将读取的报表显示在报表控件中(5)、“打印”按钮在“命令语言链接—弹起时”写入如下脚本ReportPrint2("Report1"); //使用ReportPrint2("Report1",0)指令,可以在打印前弹出打印机选择窗口2、在“月报”中放置一个报表控件、一简单组合框控件及几个按钮,如下图:其中(1)、报表控件名为:月报(2)、组合图框名为:月报查询变量名为:报表名(3)、“刷新列表”按钮在“命令语言链接—弹起时”写入如下脚本string FileName; //定义变量FileName=InfoAppDir()+"月报\"+"*.rtl"; //月报表存放路径,InfoAppDir()为程序文件存放路径listClear("月报查询"); //清除组合图框中的列表ListLoadFileName( "月报查询", FileName ); //读取月报存放路径中的报表文件显示在组合图框中(4)、“查询日报”按钮在“命令语言链接—弹起时”写入如下脚本stringFileName; //定义变量FileName=InfoAppDir()+"月报\"+\\本站点\报表名; //组合图框中选中的报表文件,,InfoAppDir()为程序文件存放路径,\\本站点\报表名为组合图框的变量名ReportLoad("月报",FileName); //将读取的报表显示在报表控件中(5)、“打印”按钮在“命令语言链接—弹起时”写入如下脚本ReportPrint2("月报"); //使用ReportPrint2("月报",0)指令,可以在打印前弹出打印机选择窗口运行程序即可获取报表了。

组态软件基础及应用第七章

组态软件基础及应用第七章
“信息查询”按钮的弹起时命令语言为SQL查询函数,进行数据库信息查询: string whe; whe="借书日期='"+\\本站点\查询日期+"'"; \\本站点\查询日期1=whe; SQLSelect( DeviceID, "借书记录", "Bind1",whe, "" );
” “ 面切换”按钮弹起时命令语言如下: ShowPicture("数据库查表"); 向上箭头按钮的弹起时命令语言为SQL查询函数,选择上一条记录查询: SQLPrev( DeviceID );
件进行查询处理,本例程介绍了在图书馆管理方面对关系数据库按日期查询
数据信息,利用组态王的SQL函数实现对和KVADODBGird控件实现对数据
库的查询处理。
2 操作步骤
(1) 数据库以及表
在工程文件夹中存在一个“图书馆.mdb”的Access的数据库,在此数
据库中有一个名为“借书记录”的数据表。数据表中有如下字段:借书日期
图7-10 数据库信息查询画面

第七章 组态王数据库访问
组查询日期后的“##”动画连接设置是在字符串输入和字符串输出处与变 量\\本站点\查询日期相关联,借书日期、借书时间、管理人员、还书日期、借书 学生、图书编号、学生学号、是否归还动画连接为字符串输出,分别关联的变量 为\\本站点\借书日期、\\本站点\借书时间、\\本站点\管理人员、\\本站点\还书 日期、\\本站点\借书学生、\\本站点\图书编号、\\本站点\学生学号、\\本站点\ 是否归还。
图7-3 ODBC数据源管理器

第七章 组态王数据库访问
在“以Microsoft Access数据库为例建立ODBC数据源的大致 步骤。

组态软件操作指南 报表系统

组态软件操作指南 报表系统

本章内容报表配置实时数据报表历史数据报表概述数据报表是生产过程中必不可少的一个部分,利用报表系统可将生产过程中产生的实时和历史数据记录并查询,以一定格式输出给用户。

它是反映生产过程中的数据、状态等,并对数据进行记录的一种重要形式。

KingSCADA提供内嵌式报表系统,工程人员可以任意设置报表格式并通过系统提供的报表函数在报表中实现各种运算、数据转换、统计分析和打印等操作。

在KingSCADA系统中既可以实现实时数据报表,也可以实现历史数据报表,同时还支持在线修改报表格式的功能。

第一节报表配置报表建立与配置1.新建一个画面,命名:报表画面。

2.选择工具箱中“报表”,在画面上绘制一个事实数据报表窗口,如图9-1图9-1报表窗口3.选中报表窗口,在属性窗口中显示的是整个报表窗口的属性,如图9-2所示。

图9-2报表属性窗口设置对话框Name:设置报表窗口的名称,默认为Report1RowCount:设置报表窗口的行数。

最小行数为1,开发环境下能设置的最大行数为1000行,运行环境下能显示的最大行数为20000行。

开发环境下,如果输入小于1的数字,自动变为1;如果输入大于1000的数字,自动变为1000。

ColumnCount:设置报表窗口的列数。

最小列数为1,开发环境下能设置的最大列数为128列,运行环境下能显示的最大列数为128列。

开发环境下,如果输入小于1的数字,自动变为1;如果输入大于128的数字,自动变为128。

HeadRowCount:设置报表窗口显示的头标题行数,如果该项设置为2,则查询出来的数据从第3行开始显示,默认为0,表示查询出来的数据从第1行开始显示。

TailRowCount:设置报表窗口显示的尾标题行数,作用同头标题行数。

ShowRowTitle:设置报表窗口中是否显示行号,如:1,2,3,4。

ShowColumnTitle:设置报表窗口中是否显示列号,如:A,B,C,D。

ShowInvalidDate:设置报表窗口中是否显示无效值。

组态王报表功能实现方法

组态王报表功能实现方法

一种简单的组态王报表功能实现方法2010年04月24日星期六 15:18前段时间用组态王做了一个小的画面组态,其中用到了KVADODBGrid控件来做报表,现总结如下。

一、准备工作第一步:在组态王工程管理器中新建一个项目,项目路径为D:\实验项目。

第二步:新建一个ACCESS数据库1、在“D:\实验项目”路径下新建一个 Microsoft Office Access 应用程序并命名为;2、打开“控制面板\管理工具\ODBC数据源管理器”选择“系统DSN”选项;3、点击“添加”按钮创建新数据源,选择“Microsoft Access Driver(*.mdb)”;4、在数据源名处填下“mydata”,并选择数据库路径为“D:\实验项目\”。

第三步:创建表格模板点击工程浏览器左侧的“SQL访问管理器”下的“表格模板”,新建一个表格并命名为Table。

在Table中添加所需记录的变量及1日期参数,其中“日期”为定长字符串型,字符长度为10;其它诸如年、月、日、时、分则为浮点型,字符长度为1。

第四步:创建记录体点击工程浏览器左侧的“SQL访问管理器”下的“记录体”,新建一个表格并命名为Record,在Record中添加所需记录的变量及日期参数。

记录体用来定义Access数据表格字段与组态王变量之间的对应关系。

二、连接数据库第一步:在工程浏览器左侧的“数据库”下的“数据字典”中定义一个内存整型变量,并命名为ConnectID。

第二步:创立组态王与mydata数据源的连接,并以“表格模板”Table的格式在数据库中建立名为“TheDate”的表格,命令如下:SQLConnect( ConnectID, "dsn=mydata;uid=;pwd=");SQLCreateTable(ConnectID, "TheDate", "Table" );将上面两条命令填入“工程浏览器\命令语言\应用程序命令语言”下的“启动时”选项中。

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

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

体系常识汇编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、单击“文件”菜单中的“悉数存”指令,保存您所作的设置。

组态王中自动报表系统的实现

组态王中自动报表系统的实现

组态王中自动报表系统的实现作者:韩浩尹亚南朱晓山来源:《科教导刊》2017年第20期摘要数据报表是电站管理的一项重要功能,是对电力系统的运行参数及设备状态进行定时记录的一种重要形式。

利用组态王提供的内嵌式报表系统以及丰富的报表函数,实现了变电仿真培训系统中的数据报表功能,具有实时数据采集以及报表的自动保存、查询和打印功能。

关键词组态王报表仿真中图分类号:TP317 文献标识码:A DOI:10.16400/ki.kjdkz.2017.07.0230 引言组态软件是工业控制领域开发计算机监控系统的一个快捷平台,与VC、VB等平台相比,利用其提供的各类工具,通过简单的组态工作,即可实现监控系统的开发。

“组态王”集自动控制、通信、画面动态连接以及可与其它的应用软件数据交换等功能于一身,是国内使用比较普遍的建立工业控制对象的人机接口的一种智能软件包,其组态过程主要包括I/O设备连接、数据词典建立、监控画面设计以及动画连接等几个步骤,利用软件图库所提供的丰富的图库元素以及各类控件保证了所开发的工业控制系统的界面一致性和通用性,其电力版在电力系统的变电运行以及变电仿真培训系统中应用广泛。

变电仿真培训系统就是利用软件或者软硬结合的方式实现现场变电站运行系统的各种功能,以达到提高运行人员解决现场实际问题的能力。

数据报表是电站管理的一项重要功能,通常以日为单位对电力系统运行中各节点以及回路的运行数据、设备的运行状态(如断路器等的位置信息)等进行记录。

利用日报表能实现生产过程的统计、分析,以使运行和管理人员既能够及时掌握电力系统运行情况也可通过分析找寻出参数的变化规律,为生产任务的制定和发展规划提供依据。

1 报表功能的实现组态王提供的内嵌式报表系统,使开发人员可以任意设置报表格式,对报表进行组态。

同时也提供了丰富的报表函数,实现各种运算、数据转换、统计分析、报表打印等。

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

1.1 自动报表功能的实现新建画面,在画面中插入报表控件并设计报表格式,右键点画面并在“画面属性”的命令语言中的“存在时”选项页中填入如下代码:long xx = 0,yy =371,rww = 99, strt = 773;string tmp, filen1; //定义变量strt =HTConvertTime($年,$月,$日,$时,0,0);ReportSetCellString2("Report0", 4, 1, 27, 6, " "); //清空单元格ReportSetCellString("Report0", 2, 2,\\本站点\$日期); //填写日期ReportSetHistData("Report0", "\\本站点\压力", strt, 120, "B4:B33"); //设定各参量及填充ReportSetHistData("Report0", "\\本站点\温度", strt, 120, "C4:C33"); //位置和采集间隔,ReportSetHistData("Report0", "\\本站点\密度", strt, 120, "D4:D33"); //此处设定120秒,ReportSetHistData("Report0", "\\本站点\电流", strt, 120, "E4:E33"); //可视情况改变ReportSetHistData("Report0", "\\本站点\电压", strt, 120, "F4:F33");while(xx{rww=4+xx;yy=strt+x*120;tmp=StrFromTime( yy, 2 );ReportSetCellString("Report0", rww, 1, tmp);x=x+1; //填充表中的时间列,注意应与上述数据采集时间一致}if($分==59&&$秒==59){filen1=InfoAppDir()+"\Datafile\"+StrFromReal( $年, 0, "f" )+StrFromReal( $月, 0, "f" )+StrFromReal( $日, 0, "f" )+StrFromReal( $时, 0, "f" )+StrFromReal($分, 0,"f" )+StrFromReal( $秒, 0, "f" )+".rtl";ReportSaveAs("Report0",filen1); //表整时保存,以时间命名}1.2 查询功能的实现新建画面并插入“下拉式组合框”控件,点击右键,在画面属性的“显示时”选项页中填入如下代码:string filen3,filen4, filen5;filen3=InfoAppDir()+"\Datafile \*.rtl";listClear("serh");ListLoadFileName( " serh ",filen3);filen4=InfoAppDir()+"\Datafile \"+\\本站点\ serh;ReportLoad("Report1",filen4);filen5=InfoAppDir()+"\Datafile \*.rtl";listClear("serh ");ListLoadFileName( " serh ", filen5);1.3 即时保存及打印功能的实现分别在报表画面和查询画面中设置保存和打印两个按钮,双击“保存”按钮,在“弹起时”填入如下代码:string filen2;filen2=InfoAppDir()+"\Datafile \"+StrFromReal($年, 0, "f" )+StrFromReal( $月, 0, "f" )+StrFromReal( $日, 0, "f" )+StrFromReal( $时, 0, "f" )+StrFromReal($分, 0,"f" )+StrFromReal( $秒, 0, "f" )+".rtl";ReportSaveAs("Report0",filen2);双击“打印”按钮,在“弹起时”填入如下代码:ReportPrintSetup("Report0");2 结束语报表系统的运行效果图如图1所示(说明:演示的数据采集间隔为2分钟,整点自动保存),综合利用组态王的报表控件以及报表函数完成了报表数据的自动采集、报表的自动保存以及查询和打印等功能,完美地实现了变电站仿真培训系统的报表功能参考文献[1] 组态王6.55用户手册[R].2012.[2] 组态王6.55命令语言函数速查手册[R].2012.[3] 刘学多等.面向中间件的组态王远程数据采集驱动设计[J].计算机应用,2016.36(1).[4] 刘景华等.基于组态王的数据采集监控系统[J].青岛理工大学学报,第29卷第4期.。

组态王报表(课件)

组态王报表(课件)
上述命令语言的作用是将下拉式组合框中选中的报表文件的数 据显示在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);

解决组态王2020年报表不显示问题

解决组态王2020年报表不显示问题

解决组态王2020年报表不显示问题作者:陈力群来源:《西部论丛》2020年第07期摘要:本文主要介绍了解决解决供排水厂供水系统和DN1600引水工程系统报表不能显示问题的过程。

找到系统报表不能显示的原因,是PLC系统软件组态王的HTconverTime()时间函数本身的问题,针对问题原因通过系统版本升级、HTconverTime()时间函数重新定义和HTconverTime()时间函数的优化成功解决了问题。

关键词:组态王;HTconverTime()函数引言我厂使用的供排水厂供水系统和DN1600引水工程系统的日报表、月报表及自定义报表就2020年1月1日后不显示数据。

通过对软件的研究组态王6.55版本帮助的研究发现TConvertTime()时间函数说明中介绍函数使用范围1970-2019年。

1、解决HTconverTime()的问题组态王6.55版中报表处理机制,分为不同的文件,存储在硬盘上,然后通过格林威治时间,进行管理。

如果将原有的HTConvertTime()函数给替换掉,就能实现系统的正常运行。

以下是报表画面没有数据:1.1 PLC组态王升级版本解决时间函数问题升级组态王版本,经过研究和咨询组态王系统厂家亚控科技,确定组态王7.55sp1版解决了时间函数问题,可以提供升级服务,因为我厂的应用系统非亚控科技开发,不保证系统正常使用。

为了测试新版本是否能正常运行我厂的系统,先建立测试环境,安装组态王7.5sp1版,然后将我厂的系统了安装并接入工控网络环境进行测试,系统不能运行。

此方法不可行。

1.2重新编写时间函数解决系统时间函数问题重新定义时间函数来替代原来的时间函数来解决问题。

组态王提供自定义函数的功能,在系统中重新定义一个时间函数。

长整型long变量的取值范围是-2147483647~+2147483647,但HTConvertTime函数按照2019年1月1日0时0分0秒,转换出的最大值为1577721600,还未达到长整型变量的最大值,因此可以通过编写自定义函数,替换原来的时间函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第八讲报表系统
第一节概述
数据报表的用途
数据报表是反应生产过程中的过程数据、运行状态等,并对数据进行记录、统计的一种重要工具,是生产过程必不可少的一个重要环节。

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

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

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

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

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

组态王7.5 SP1的报表向导工具可以以组态王的历史库或KingHistorian为数据源,快速建立所需的班报表、日报表、周报表、月报表、季报表和年报表。

此外,还可以实现值的行列统计功能。

大大减少了工程人员制作报表时的命令语言的编写。

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

2、选择工具箱中的工具,在画面上输入文字:实时数据报表。

3、选择工具箱中的工具,在画面上绘制一实时数据报表窗口,如图8-1所示。

图8-1
单击报表窗口,“报表工具箱”会自动显示出来。

双击窗口的灰色部分,弹出“报表设计”对话框,如图8-2所示。

图8-2
对话框设置如下:
报表控件名:Report1
行数:6
列数:10
4、输入静态文字:选中A1到J1的单元格区域,执行“报表工具箱”中的“合并单元格”命令并在合并完成的单元格中输入:实时报表演示。

利用同样方法输入其它静态文字,如图8-3所示。

图8-3
5、插入动态变量:在B2单元格中输入:=\\local\$Date。

(变量的输入可以利用“报表工具箱”中的“插入变量”按钮实现)
利用同样方法输入其它动态变量,如图8-4所示。

图8-4
注:如果变量名前没有添加“=”符号的话此变量被当作静态文字来处理。

6、单击“文件”菜单中的“全部存”命令,保存您所作的设置。

7、单击“文件”菜单中的“切换到VIEW”命令,进入运行系统。

系统默认运行的画面可能不是您刚刚编辑完成的“实时数据报表画面”,您可以通过运行界面中“画面”菜单中的“打开”命令将其打开后方可运行,如图8-5所示。

图8-5
实时数据报表打印
一、实时数据报表自动打印设置过程如下:
1、在“实时数据报表画面”中添加一按钮,按钮文本为:实时数据报表自动打印。

2、在按钮的弹起事件中输入如下命令语言,如图8-6所示。

图8-6
3、单击“确认”按钮关闭命令语言编辑框。

当系统处于运行状态时,单击此按钮数据报表将被打印
出来。

二、实时数据报表手动打印设置过程如下:
1、在“实时数据报表画面”中添加一按钮,按钮文本为:实时数据报表手动打印。

2、在按钮的弹起事件中输入如下命令语言,如图8-7所示。

图8-7
3、单击“确认”按钮关闭命令语言编辑框。

4、当系统处于运行状态时,单击此按钮,弹出“打印属性”对话框,如图8-8所示。

图8-8
5、在“打印属性”对话框中做相应设置后,单击“确定”按钮,数据报表将被打印出来。

三、实时数据报表页面设置过程如下:
1、在“实时数据报表画面”中添加一按钮,按钮文本为:实时数据报表页面设置。

2、在按钮的弹起事件中输入如下命令语言,如图8-9所示。

图8-9
3、单击“确认”按钮关闭命令语言编辑框。

4、当系统处于运行状态时,单击此按钮,弹出“页面设置”对话框,如图8-10所示。

相关文档
最新文档