1、历史数据查询1. 功能概述常规需求:很多工业现场会存储数据并对存储的历史数据进行查询、打印输出。历史数据查询一般为起始时间、结束时间、间隔时间都不固定,最终用户根据实际需要进行查询。组态王中的实现方法:利用组态王内置报表以及报表的函数来实现对历史数据的查询。组态王内置报表的操作类似excel,操作简单、方便,并且组态王提供了大量的报表函数来实现各种复杂功能。2. 工程实例我们举一个例子来说明实现方法。在此例程中我们定义五个变量,分别为“压力”、“温度”、“密度”、“电流”、“电压”,运行系统运行后记录历史数据,下面就以此为例来演示完成这一要求的具体步骤。3. 操作步骤3.1 定义设备根据工程中
2、实际使用得设备进行定义,本例程使用亚控的仿真PLC设备,使用“PLC亚控仿真PLC串口”驱动,定义设备名称为“PLC” 。3.2 定义变量在组态王中定义五个变量:压力(IO实数类型)、温度(IO实数类型)、密度(IO实数类型)、电压(IO实数类型)、电流(IO实数类型)。压力变量:最小值0,最大值100,最小原始值0,最大原始值100,连接设备PLC,寄存器INCREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。温度变量:最小值0,最大值50,最小原始值0,最大原始值100,连接设备PLC,寄存器DECREA100,数据
3、类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。密度变量:最小值0,最大值1,最小原始值0,最大原始值100,连接设备PLC,寄存器INCREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。电流变量:最小值30,最大值50,最小原始值0,最大原始值100,初始值为30,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。电压变量:最小值180,最大值250,最小原始值
4、0,最大原始值100,初始值220,连接设备PLC,寄存器DECREA100,数据类型short,读写属性为只读,采集频率1000。记录和安全区选择“数据变化记录”,变化灵敏度选择“0”。3.3 制作画面3.3.1 创建报表新建画面,画面名称“历史数据查询”。在组态王工具箱按钮中,用鼠标左键单击“报表窗口”按钮,此时,鼠标箭头变为小“+”字形,在画面上需要加入报表的位置按下鼠标左键,并拖动,画出一个矩形,松开鼠标键,报表窗口创建成功,如图一所示。图一 报表用鼠标双击报表窗口的灰色部分(表格单元格区域外没有单元格的部分),弹出“报表设计”对话框,如图二所示。该对话框主要设置报表的名称、报表表格的
5、行列数目以及选择套用表格的样式。我们设置报表名称为“Report0”,行数、列数可以按照默认的不变。图二 报表设计我们根据需要对报表的格式进行设置,如报表的表头,标题等。我们选中单元格A1到E1,点击右键弹出快捷菜单,选择“合并单元格”,单元格合并后我们填写标题,如“历史数据查询”,点击右键在快捷菜单中选择“设置单元格格式”,设置字体、对齐方式、等。如图三所示:图三 历史数据报表3.3.2 命令语言制作按钮:在组态王工具箱中我们选择按钮,此时鼠标光标变为“”字形,按下鼠标左键并拖动,画出矩形按钮。按钮的大小根据需要进行调整。选中按钮,点击右键,弹出快捷菜单,选择“字符串替换”,如图四所示:弹出
6、“按钮属性”,将按钮文本的“文本”字符串改为“历史数据查询”。如图五、图六所示。点击“确定”完成对按钮文本的修改。命令语言:实现历史数据的查询我们需要使用组态王的报表函数来实现,报表函数为:ReportSetHistData2(),此函数的介绍如下:ReportSetHistData2(StartRow,StartCol);参数说明:StartRow:查询的数据在报表中填充的起始行数。StartCol:查询的数据在报表中填充的起始列数。此函数为报表专用函数。查询历史数据,使用该函数,只要设置查询的数据在报表中填充的起始位置,即输入起始行数(StartRow)、列数(StartCol)。系统会自
7、动弹出历史数据查询对话框。双击“历史数据查询”按钮,弹出按钮的“动画连接”,如下图七所示,点击“命令语言连接”的“弹起时”,编写脚本程序。图四 快捷菜单图五 按钮属性图六 按钮属性图七 动画连接在命令语言编辑框中,我们选择“全部函数”,找到需要的ReportSetHistData2函数,如图八所示:点击“确定”,函数的参数设置为StartRow:2,StartCol:1,脚本程序如下:ReportSetHistData2(2,1);参考图九所示:点击“确认”完成按钮命令语言的编写。图八 选择函数图九 命令语言按照上面的步骤实现报表的“打印”功能。打印函数为:ReportPrintSetup(s
8、zRptName);语法格式使用如下: ReportPrintSetup(szRptName); 参数说明:szRptName:要打印预览的报表名称 添加一个新的按钮,通过“字符串替换”将“文本”修改为“打印”,双击“打印”按钮,弹出“动画连接”,点击“命令语言连接”的“弹起时”,编写报表打印的脚本程序。如图十所示:脚本程序如下:ReportPrintSetup(Report0);图十 打印报表完成按钮命令语言的编写后,保存画面。画面如下图十一所示:图十一 历史数据查询画面3.4 进入运行系统画面开发完成后在工程浏览器的“系统设置”中的“设置运行系统”中对“配置主画面”选项卡进行主画面的配置,
9、设置“历史数据查询”画面为主画面。配置完成后点击工程浏览器的“View”按钮切换到运行系统。系统运行后会将主画面打开,运行一段时间,记录一段时间的历史数据,然后我们点击“历史数据查询”按钮,弹出历史数据查询选择对话框,如图十二所示: 在报表属性设置中报表名称为我们定义的报表的名称,起始行、起始列为报表函数中设置的起始行、起始列。排列属性、列属性等根据需要进行设置。时间属性选项卡如图十三所示:选择起始时间、终止时间、间隔时间。变量属性选项卡如图十四所示:选择要查询历史数据的变量。设置完成后点击“确定”,弹出设置报表中变量顺序的对话框,如图十五所示,我们可以通过此项对变量的顺序进行调整,设置完成后点击“确定”,得到我们要求的历史数据,如图十六所示:图十二 报表属性图十三 时间属性图十四 变量属性图十五 变量顺序设置图十六 历史数据查询点击“打印”按钮,可以对报表进行打印输出,并且可以进行报表的打印预览,如图十七所示:可以对页面进行设置也可以直接打印输出。图十七 报表打印4. 注意事项1)在此例程中所用到的函数请参考相关函数使用手册或者组态王软件帮助。2)查询历史数据的前提是必须在运行过程中保存了历史数据,否则查询不到历史数据。