第十一章报表系统北京亚控科技发展有限公司第十一章报表系统本章内容报表配置实时数据报表历史数据报表概述数据报表是生产过程中必不可少的一个部分,利用报表系统可将生产过程中产生的实时和历史数据记录并查询,以一定格式输出给用户。它是反映生产过程中的数据、状态等,并对数据进行记录的一种重要形式。KingSCADA提供内嵌式报表系统,工程人员可以任意设置报表格式并通过系统提供的报表函数在报表中实现各种运算、数据转换、统计分析和打印等操作。在KingSCADA系统中既可以实现实时数据报表,也可以实现历史数据报表,同时还支持在线修改报表格式的功能。第一节报表配置报表建立与配置1.新建一个画面,命名:报表画面。2.选择工具箱中“报表”,在画面上绘制一个事实数据报表窗口,如图11-1图11-1报表窗口3.选中报表窗口,在属性窗口中显示的是整个报表窗口的属性,如图第十一章报表系统北京亚控科技发展有限公司图11-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:设置报表窗口中是否显示无效值。True表示在关机或通讯失败时段显示该时段之前的最近一个有效数据的值;False表示在报表窗口中不显示变量通讯失败或者关机时段的数据,显示‘——’。ShowTagTitle:设置在运行环境中,查询历史数据并生成报表时,在报表中是否显示变量名称。TimeStampFormat:设置在运行环境中,查询历史数据并生成报表时,在报表中显示的时间格式。TimeParams:单击该项后面的按钮,弹出对话框,如图11-3所示,在该对话框中设置报表查询的开始时间、结束时间及查询的时间间隔图11-3报表查询设置对话框第十一章报表系统北京亚控科技发展有限公司HistoryTags:单击此项后面的按钮弹出对话框,如图所示图11-4报表查询设置对话框双击“变量名称”下面的单元格后,在弹出的变量选择器中选择添加的变量即可,也可以按下键盘上的Delete键删除添加的变量。4.选中报表窗口→单击鼠标右键,在弹出的右键菜单中执行“编辑”命令,弹出报表工具箱,如图所示图11-5报表工具栏对话框报表工具箱主要是针对报表单元格进行编辑,包括剪切、复制、拷贝、对齐方式、合并单元格、拆分单元格等等,下面只介绍几种常用工具的使用方法::单击该按钮,弹出文件选择对话框,在对话框中选择一个已存在的报表模板文件(.rtl)并将其打开,此时该报表模板被加载到当前报表窗口中。:当某个报表编辑完成后,单击该按钮,将当前报表存储为一个报表模板文件,供用户调用。:单击该按钮取消上一次对报表单元格的输入操作。:在文本编辑框中(即:工具箱的空白处)输入文本内容后,单击该按钮将文本内容输入到当前单元格中。当选中一个已经有内容的单元格时,该内容会自动出现在文本编辑框中,您可以对原文本进行修改后重新输入到单元格中。:单击该按钮弹出变量选择窗口,选择要查询实时数据的变量。在运行环境中可以看到该变量的实时值,或者在某个单元格中直接输入变量的名称,输入格式为:=\\local\tagname。:单击该按钮,弹出报表内部函数选择对话框,如图所示:第十一章报表系统北京亚控科技发展有限公司图11-6报表工具栏对话框报表内容函数只能应用在报表单元格中,有数学函数、字符串函数、统计函数等等,它们基本上都来自KingSCADA的系统函数,使用方法相同,只是参数发生了变化,通常使用单元格的名称作为函数的参数。如果是任选多个单元格,则使用方法为用逗号将各个单元格分隔,如sum(‘a1’,‘b1’,‘c1’)。如果选择的为连续的单元格,可以输入第一个单元格名称和最后一个单元格名称,中间用冒号分隔,如sum(‘a1:c10’)。在使用报表内部函数时,函数参数也可以使用KingSCADA变量来代替如sum(\\local\tag1,\\local\tag2)。合并单元格中的数值无论对齐方式如何,在进行函数运算时,合并单元格中的数值都将放在左上角被运算。如图11-7报表工具栏对话框其中:B3和C3为合并单元格;\\本站点\a0=1;\\本站点\a1=1;KingSCADA运行时,求和的结果为:Sum(‘b2:b3’)=2Sum(‘c2:c3’)=15.在报表窗口处于编辑状态时,选中单元格后单击鼠标右键,弹出右键菜单,如图所示图11-8报表工具栏对话框第十一章报表系统北京亚控科技发展有限公司右键菜单中的命令功能与工具箱的按钮功能一致,下面只介绍只读命令。只读:KingSCADA报表在系统运行过程中,用户可以直接在报表单元格中输入数据,修改单元格内容。为防止用户修改不允许修改的单元格内容,报表为单元格提供了一个保护属性——只读。在开发环境中进行报表组态时,选择要保护的单元格区域,单击鼠标右键,在弹出的快捷菜单中选择“只读”选项,被保护的单元格在系统运行时不允许修改单元格内容。要查看某个单元格是否被定义为只读属性,方法为在单元格上单击鼠标右键,如果右键菜单上的“只读”项前有“P”符号,则表明该单元格被定义了只读属性。再次选择该菜单项时取消保护属性。第二节实时数据报表实时数据报表建立1.新建一个画面,命名:实时数据画面。2.选择工具箱中“文本”,在画面上输入文字:实时数据报表3.选择工具箱中“报表”,在画面上绘制一个事实数据报表窗口,如图11-1图11-9实时数据报表画面在右边的属性框中将RowCount后面的数字改为10;ColumnCount后面的改为4;4.选中报表,修改右边右键编辑,选中A1到J1的单元格区域,执行报表工具箱中的“合并单元格”命令,并在合并完成的单元格中输入静态文字:实时数据报表利用同样的方法输入其他静态文件,如图所示图11-10实时数据报表1第十一章报表系统北京亚控科技发展有限公司插入动态变量,在B2单元格中输入:=\\local\$Date,利用同样方法输入其他动态变量,如图所示图11-10实时数据报表2备注:如果变量名前没有添加“=”符号的话此变量被当作静态文字处理。单击“文件”菜单中“全部保存”命令,保存所做的设置。单击“文件”菜单中“运行系统”命令,进入运行系统。系统默认运行的画面可能不是您刚刚编辑完成的“实时数据报表”,您可以通过运行界面中“画面”菜单中“打开”命令将其打开后可运行,如图图11-11实时数据报表运行图实时数据报表打印1.在画面“实时数据报表”中添加一按钮,按钮文本为:打印预览2.在按钮鼠标左键按下中输入如下命令,(先选中对象中实时数据报表,然后加“.”,在弹出的对话框中选择preview功能)图11-12报表打印预览第十一章报表系统北京亚控科技发展有限公司3.在画面“实时数据报表”中另添加一按钮,按钮文本为:打印4.在按钮鼠标左键按下中输入如下命令,(先选中对象中实时数据报表,然后加“.”,在弹出的对话框中选择print功能)。如图图11-12报表打印5.单击“确定”按钮关闭命令语言编辑框。当系统处于运行状态时,单击此按钮数据报表将被打印出来报表存储、导入同理,根据以上报表函数,如果建立好的报表需要存储,用以下函数ReportSaveAs(stringstrFileName);strFileName:指定导出报表文件的完整路径,支持rtl,csv,xls后缀名的文件。举例:Report1.ReportSaveAs(“D:\\ReportFiles\HistoryReport1.rtl”);将报表导出到D:\\ReportFiles目录下,文件名为HistoryReport1.rtl注:1、本函数不能自动创建目录,在目录存在情况下,创建文件,所以,需要先建立文件夹D:\\ReportFiles;2、当导出的rtl,csv或者xls文件存在且为只读时,导出失败;当导出的csv文件存在且被excel软件打开时,导出失败;当导出的xls文件存在且被打开时,导出失败;3、导出到xls文件时,第一行为列号;rtl格式只能用KingSCADA打开,csv、xls的格式可以用excel的格式打开将存储到D:\\ReportFiles\目录下的HistoryReport1报表下载到KingSCADA画面中需要用到函数ReportLoad(stringstrFileName)ReportLoad(stringstrFileName)strFileName:报表文件的完整路径,支持rtl,csv格式的报表文件。返回值说明:0---成功;1---扩展名错误;-2---文件不存在或其他错误。举例:Report1.ReportLoad(“D:\\ReportFiles\HistoryReport1.rtl”);导入HistoryReport1.rtl报表文件到Report1报表控件中。第十一章报表系统北京亚控科技发展有限公司第三节历史数据报表历史数据报表建立将数据词典中变量\\local\liquid_level,\\local\temperature变量属性—历史—改变记录历史数据1.新建一个画面,命名:历史数据报表画面。2.选择工具箱中“文本”,在画面上输入文字:历史数据报表3.选择工具箱中“报表”,报表命名默认为“Report1”,在里面输入静态文字,如下图图11-13历史报表4.建立一个按钮,按钮文本是“查询”,在按钮鼠标左键按下时候写如下命令语言,如图11-14KDBKSSampleData2(Dataset,1,\\local\liquid_level,\\local\temperature,2012-02-2011:30:45,2012-02-2011:33:17,1000,1,,,);Report1.SetDataset2(Dataset,2,1);图11-14历史数据查询语言上述命令语言是查询\\local\liquid_level,\\local\temperature在2012-02-2011:30:45到2012-02-20第十一章报表系统北京亚控科技发展有限公司11:33:17之间的数据,查询间隔是1000ms;Report1.SetDataset2(Dataset,2,1)表示填充从第二行第一列开始点击“确定”,再点文件菜单中“全部保存”,这样命令语言编辑完毕5.点击文件菜单中“运行系统”,进入运行环境中,点击“查询”按钮,弹出查询内容,如下图所示图11-15历史数据查询结果历史数据查询的方法很多,这里就只介绍一种,具体方法可以查看SCADA例程或者查询帮助