书城计算机网络组态软件控制技术
7540200000013

第13章 MCGS数据后处理及报表(1)

11.1数据后处理

MCGS中的数据后处理,即对历史数据库的处理,MCGS的存盘历史数据库是原始数据的基本集合,MCGS数据后处理就是对这些原始数据的数据操作(包括修改、删除、添加、查询等),数据后处理的目的是要从这些原始数据中提炼出对用户真正有用的数据和信息并以数据报表的形式展示出来。

在工程应用中,对采集的工程物理量存盘后,需要对数据库进行操作和对存盘的数据进行多种统计,并根据需要作出多种形式的报表。MCGS组态软件提供的存盘数据浏览构件、存盘数据提取构件和历史表格构件可以完成多种形式的数据报表,各构件的功能如下。

(1)MCGS存盘数据浏览构件

可以对存好的数据直接进行显示、打印、查询、修改、删除、添加记录和统计。

(2)MCGS存盘数据提取构件

可以对存好的数据按照一定的时间间隔或不同的统计方式进行提取处理,可以把数据提取到MCGS实时数据库中的变量中,也可以根据一定的查询条件把相关的数据提取到其他形式的数据库。

(3)MCGS存盘数据提取构件

配合MCGS历史表格可以完成工控项目中最常使用的各种形式的报表(如标准形式的日报表、月报表、年报表,不定记录项的报表,规定要求查询报表等)。

数据从采集设备输入,通过设备驱动进入实时数据库,MCGS组态软件提供对实时数据库的实时变量进行数据和曲线等多种显示方式,同时可通过数据存盘相关控件随时对变量的存盘周期和方式进行修改,也可对在硬盘上存好的数据进行多种处理。

11.2结合数据提取做复杂的报表

通过实例对结合数据提取做复杂的报表进行详细讲解,具体步骤如下。

11.2.1新建一个窗口

在MCGS组态软件工作台上,单击【用户窗口】按钮,单击【新建窗口】按钮,生成【窗口0】,选择【窗口0】,单击【窗口属性】按钮,弹出【用户窗口属性设置】窗口,设置【窗口名称】和【窗口标题】。设置完毕单击【确认】按钮退出。

双击【数据提取】窗口,进行动画组态工作。

11.2.2模拟所需要的数据

在实时数据库中建立7个变量,分别为:“数据1”、“数据2”、“数据3”、“数据4”、“数据5”、“数据组”及“存数控制”。“数据1”、“数据2”、“数据3”、“数据4”、“数据5”为数值型变量,“存数控制”为开关型变量,“数据组”为组对象,设置组对象的存盘周期为:“0”秒。

同时,将数据1”、“数据2”、“数据3”、“数据4”、“数据5”添加到组对象成员中。

在MCGS组态软件工作台上,单击【运行策略】,再双击【循环策略】或选择【循环策略】,单击【策略组态】进入策略组态中。单击工具条中的【新增策略行】按钮,增加一个策略行。再从【策略工具箱】中选取【脚本程序】,拖到策略行上。

双击按钮,弹出【表达式条件】窗口。

双击按钮,进入脚本程序编辑环境,输入下面语句,进行数据模拟:

数据1=数据1+1

数据2=数据2+2

数据3=数据3+3

数据4=数据4+4

数据5=数据5+5

!SaveData(数据组)

对于不明白的函数请查MCGS在线帮助。

在MCGS组态软件工作台上,单击【运行策略】进入策略组态,单击【新建策略】按钮,弹出【选择策略类型】窗口,选中【用户策略】,会产生【策略1】,单击【策略属性】按钮,弹出【策略属性设置】窗口。

双击【原始数据】进入策略组态,单击工具条中的【新增策略行】按钮,从【工具箱】中选择【存盘数据浏览】拖放到策略行上。双击,弹出【存盘数据浏览构件属性设置】窗口,存盘数据浏览构件包含以下属性。

1.存盘数据浏览构件基本属性

基本属性包括窗口显示标题、打印属性、统计方式、打印方式等。

2.存盘数据浏览构件数据来源

本属性用来设置获取存盘数据的方式,用户可以选择三种方式得到数据,各项含义如下。

(1)MCGS组对象对应的存盘数据表

使用MCGS的存盘数据对象中包含的数据作为显示和打印的数据。

(2)Access数据库文件

从用户指定的数据库的某个表中读取数据对象作为显示和打印的数据对象。

(3)ODBC数据库

通过ODBC数据接口从指定的表中获取数据对象作为显示和打印的数据对象。

3.存盘数据浏览构件显示属性

本属性设置功能构件的显示方式,包括表格和数据的显示格式。

4.存盘数据浏览构件时间条件

本属性可以得到指定的时间段内的数据,并可以指定这些数据的排序方式。

5.存盘数据浏览构件数值条件

为了得到满足用户条件的用于显示和打印的数据段,可以使用本属性指定从数据库或数据对象中选取数据的数值条件,数值条件是指对某字段满足某条件的记录集合。

在MCGS组态软件工作台上,单击【用户窗口】,双击【数据提取】窗口,进入【动画组态】。从【工具箱】中选择1次【标签】,2次【标准按钮】。

11.2.3按时间间隔提取数据

分别按小时、天、月进行数据提取,就可以做成相应的天报表、月报表及年报表,按分钟进行数据提取,可以根据需要做相应的报表。具体操作如下。

1.存盘数据提取构件

所谓数据提取,就是把历史数据库数据按照一定的时间条件和统计方式取出来,存到另外一个数据表中。

在【运行策略】中新建四个用户策略,策略名称分别为:【数据按分钟提取】、【数据按小时提取】、【数据按天提取】、【数据按月提取】。依【数据按分钟提取】策略为例,进行相应的【存盘数据提取属性设置】。

双击【数据按分钟提取】进入策略组态,单击工具条中的【新增策略行】按钮,在【工具箱】中选择【存盘数据提取】拖放到策略行上。双击按钮,弹出【存盘数据提取构件属性设置】窗口,包括如下内容。

(1)数据来源

在数据来源属性中可以指定数据源,即数据从何处来。此构件可以指定从MCGS组对象对应的存盘数据表中提取,也可以从标准的Access数据库文件的指定表中提取。

(2)数据选择

数据选择用于指定需要处理的数据列成员,在【可处理的数据列】中列出所有可以处理的数据列,在【要处理的数据列】列出所有已经指定需要处理的数据列,单击【添加】按钮可以把左边的数据列加到右边,单击【删除】按钮可以把右边已经指定的数据列删除,单击【全加】按钮可以把左边的数据列全部加到右边,单击【全删】按钮可以把右边的数据列全部删除。

(3)数据输出

用于指定数据输出表和数据库,即存盘数据提取到何处。此构件可以把指定数据源的存盘数据提取到三种不同形式的数据库(数据表)中:

提取到MCGS的存盘数据库中指定的数据表中,数据表名可以在组态时设定,也可以连接MCGS实时数据库的字符变量,在运行环境中任意修改;

提取到用户指定的独立的Access数据库和指定的数据表中,数据库名和表名可以在组态时设定,也可以连接MCGS实时数据库的字符变量,在运行环境中任意修改;

提取到用户指定的ODBC数据库和指定的数据表中,组态时,必须指定好数据库类型、数据名、数据表名、服务器名、用户名和用户密码。

(4)时间条件

用于设置提取的时间范围(只对有时间类型的字段有效),【时间列名】

用于选择查询的时间字段,【月/天的分割时间点】用于设置每天的起点,即每天的几点几分算作这一天的开始,此构件提供5种选择时间范围的方式。

(5)数值条件

用于设置提取数值查询条件,即把满足时间范围和数据范围的所有数据按照指定的提取方式提取到目标数据库中。数据列名用于选择需要比较的字段,运算符号用于指定比较方式,包括>、>=、=、<、<=、<>几种比较方式,比较对象用于设置比较值。【And】、【Or】和【Not】按钮用于设置表达式之间的连接方式。【删除】按钮用于删除选定的表达式。

(6)提取方式

用于设置存盘数据提取的方式,包括设定与组对象成员相对应的目标表的字段名,存盘数据提取方法,提取到MCGS实时数据库对应的变量名,以及按数据的时间合格率方式提取时的合格标准的上限值和合格标准的下限值。

【来源数据表列】中列出了在【数据选择】属性页中选定的所有组对象成员名。

【输出数据表列】用于设置组对象成员对应到【提取目标表】中字段名,缺省为组对象的成员名,按【来源数据表列】中相应的表行(或【拷贝】按钮)可以把组对象成员名加到【输出数据表列】中,按【上移】、【下移】按钮可以改变相应字段在目标表中位置,按【删除】按钮可以删除选定表行。

【提取方法】用于设置存盘数据提取的方法,存盘数据提取提供11种对数据处理的方法,分别如下。

求和,把指定时间段的所有记录求和并作为一个记录保存到目标数据表中。

求最大值,把指定时间段的所有记录求最大值并作为一个记录保存到目标数据表中。

求最小值,把指定时间段的所有记录求最小值并作为一个记录保存到目标数据表中。

求平均值,把指定时间段的所有记录求平均值并作为一个记录保存到目标数据表中。

求累积值,把指定时间段的所有记录求累积量并作为一个记录保存到目标数据表中,累积量的算法如下,“求累计值”是对累计存盘数据进行处理,如流量计的存盘数据,其值在数据库的记录中是递增的数据,当流量计记录到其最大值后会回零,此时进行报表处理时就应进行“累计值”处理,以求某一时间段内的流量值。例如:流量存盘数据序列为:1,10,35,60,90,99,10,40,…,其对应的流量累计计算为:

(10-1)+(35-10)+(60-35)+(90-60)+(99-90)+(10-0)+(40-10)=99+40=129。当数据序列出现小的波动(50%为界),不按数据回零处理,如1,10,35,30,60,…,其对应的流量累计计算为:(1-0)+(10-1)+(35-10)+(60-35)+…,其中将30丢掉。

求首记录,取指定时间段的第一条记录并作为一个记录保存到目标数据表中。

求末记录,取指定时间段的最后一条记录并作为一个记录保存到目标数据表中。