发明内容
有鉴于此,本发明提供了一种基于工控领域的数据库优化存储方法,可以提高在数据量过于庞大的本地数据库中查询的效率,减轻本地数据库的压力,可更好地保障数据的安全,减少数据的丢失。
本发明还提供了一种基于工控领域的数据库优化查询方法,可以提高在数据量过于庞大的本地数据库中查询的效率,减轻本地数据库的压力,可更好地保障数据的安全,减少数据的丢失。
为达到上述目的,本发明实施例的技术方案是这样实现的:
一种基于工控领域的数据库优化存储方法,存储数据时,执行以下步骤:
S1、读取经过处理并转换数据格式后的回路数据,将回路数据中与回路自控率有关联的数据存储到实时回路自控率采集表中;将回路数据中与回路平稳率有关联的数据存储到实时回路平稳率采集表中;
将具有相同空间属性的回路数据作为一树节点数据,根据实时回路自控率采集表中回路数据,得到树节点的实时自控率,并存储在树节点实时自控率表中;根据实时回路平稳率采集表中回路数据,得到树节点的实时平稳率,并存储在树节点实时平稳率表中;
所述自控率的计算方法为:
若状态量为1,表示该回路为自动控制状态,若状态量为0,表示该回路为手动控制状态;
所述平稳率的计算方法为:
若任意回路满足:SV-Δ≤PV≤SV+Δ,则所述回路处于平稳状态,其中,PV值为过程值,SV值是集散控制系统DCS的给定值,Δ值是用户根据需要预先设定的变化范围;
S2、当读取下一轮回路数据时,返回执行步骤S1,且同时执行步骤S3;
S3、将实时回路自控率采集表中时间戳先于当前的回路数据转存到历史回路自控率采集表,将实时回路平稳率采集表中时间戳先于当前的回路数据转存到历史回路平稳率采集表中;
确定统计周期,累计时间戳的长度,将历史回路自控率采集表中的回路数据存储到与统计周期对应的回路历史自控率表和树节点历史自控率表中;将历史回路平稳率采集表中的回路数据存储到与统计周期对应的回路历史平稳率表和树节点历史平稳率表中;
根据树节点历史自控率表中的回路数据,得到树节点的历史自控率;根据树节点历史平稳率表中的回路数据,得到树节点的历史平稳率。
一种基于工控领域的数据库优化查询方法,包括以下步骤:
读取用户的查询条件;
当查询对象为实时自控率,查询条件包含有回路信息时,则通过存储有与回路自控率有关联数据的实时自控率表,按照回路信息定位到具有相同空间属性的回路数据、且与回路对应的树节点实时自控率表,当查询条件为历史自控率,查询条件同时包含有时间戳和回路信息时,则先按时间戳定位到包含所述时间戳的统计时间段,再按回路信息,定位到所述统计时间段内、与所述回路信息对应的树节点历史自控率表;
当查询对象为实时平稳率,查询条件包含有回路信息时,则通过存储有与回路平稳率有关联数据的实时平稳率表,按照回路信息定位到具有相同空间属性的回路数据、且与回路对应的树节点实时平稳率表;当查询条件为历史平稳率,查询条件同时包含有时间戳和回路信息时,则先按时间戳定位到包含所述时间戳的统计时间段,再按回路信息,定位到所述统计时间段内、与所述回路信息对应的树节点历史平稳率表;
返回所查询结果数据给用户;
所述自控率的计算方法为:
若状态量为1,表示该回路为自动控制状态,若状态量为0,表示该回路为手动控制状态;
所述平稳率的计算方法为:
若任意回路满足:SV-Δ≤PV≤SV+Δ,则所述回路处于平稳状态,其中,PV值为过程值,SV值是集散控制系统DCS的给定值,Δ值是用户根据需要预先设定的变化范围。
本发明的有益效果为,数据采集服务在将数据从实时数据库转存到本地数据库中时对数据进行格式转换且分类存储,同时,对于本地数据库中的庞大数据提出一种查询和统计策略,即按照时间周期和树节点对回路数据进行量化统计,从而可以提高在数据量过于庞大的本地数据库中查询的效率,减轻本地数据库的压力,可更好地保障数据的安全,减少数据的丢失。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下通过具体实施例并参见附图,对本发明进行详细说明。
实时数据库(RTDB-Real Time DataBase)是数据库系统发展的一个分支,它适用于处理不断更新的快速变化的数据及具有时间限制的事务处理。实时数据库技术是实时系统和数据库技术相结合的产物,实时数据库在存储数据的时候应用了非常强大的数据压缩算法,在以一秒存储万条以上数据量的负载下,存储一年的数据所需要的磁盘空间不超过10G。
实时数据库的一个重要特性就是实时性,包括数据实时性和事务实时性。数据实时性是指现场IO数据的更新周期,事务实时性是指数据库对其事务处理的速度。实时数据库可用于工厂过程的自动采集、存储和监视,可在线存储每个工艺过程点的多年数据,可以提供清晰、精确的操作情况画面,用户既可浏览工厂当前的生产情况,也可回顾过去的生产情况,可以说,实时数据库对于流程工厂来说就如同飞机上的“黑匣子”。
从实时数据库上可以提取回路数据,加以分析和处理,实现工业智能控制。所述回路数据分为串级回路、特征回路和普通回路。其中,串级回路一般分为主回路和副回路,是一种由主、副两个回路彼此串接的双回路调节系统。主回路根据主参数与给定值的偏差输出信号,以作为副回路的给定值,副回路同时接受副参数信号和给定值并控制调节机构。特征回路是表征一个画面或装置开停工状态的关键回路,当该回路的过程值小于某个设定值的时候,与该回路相关的画面或者装置是处于停工状态的,特征回路的作用主要是让系统自动适应工况变化,例如,以四蒸馏车间的常压炉系统为例,如果TIC-111这条回路的温度过程值小于设定值340度的时候,整个常压炉系统处于停工状态。除串级回路和特征回路之外的回路都是普通回路。
为将实时数据库中的回路数据提取到本地数据库中,需要预先在本地数据库服务器中建立基于树状结构的自控率数据表和平稳率数据表,如图5和图6所示,自控率数据表按时间和空间结构进行划分,其中,按时间分为历史自控率表和实时自控率表,而历史自控率表又分为时自控率表、天自控率表、月自控率表和年自控率表;按空间划分为树节点自控率表和回路自控率表。平稳率数据表结构也是类似。所述的树状结构是一种节点的层次结构,节点之间按照上下级的关系,划分了按照工厂--车间--装置--回路的多个层次,以列表结构展示。
自控率数据表和平稳率数据表主要是存储自控率和平稳率的信息,包括实时的、历史的、树节点的,这里的树节点是针对监控系统来说的,一个树节点对应于一个装置、车间或工厂等,一个树节点中所包含的每一条回路为叶节点。
同时,预先在本地数据库服务器上安装实时数据库服务器客户端,安装完成后会在本地数据库服务器上显示ODBC数据源,通过配置ODBC数据源就能建立与实时数据库服务器的通信。另外,通过修改本地数据库服务器上数据采集服务的配置文件,就能确定采集到的数据要存储到的目标数据库、数据采集周期以及数据格式转换方式。
预先配置源数据源、目标数据源、数据采集周期和数据格式转换方式。
通过安装在本地数据库服务器上的实时数据库服务器客户端来配置源数据源,所述源数据源一般为实时数据库,数据从源数据源采集,存储到目标数据源,所述目标数据源一般为本地数据库。
通过修改本地数据库上数据采集服务的配置文件来配置目标数据源,并确定数据采集周期,数据采集周期根据实际需要而定。同时,在配置文件中预先设置好数据格式转换的方式,即将数据格式由字符串型转换为数值型。
本发明的方法流程如图1所示,基于工控领域的数据库优化存储的方法,存储数据时,包括以下步骤:
步骤101:读取经过处理并转换数据格式后的回路数据。
参见图2,处理回路数据的流程如下:
首先,读取回路数据并存储到链表中。
所述读取回路数据为从实时数据库中读取计算自控率和平稳率需要的回路数据。链表是实时数据库与本地数据库之间的中转站,用于暂时存储从实时数据库采集到的回路数据,待回路数据处理完成后,将链表中的回路数据存储到本地数据库中。
然后,处理回路数据。
所述处理回路数据为:判断回路数据是否为串级回路,若是,处理串级回路,否则,判断回路数据是否为特征回路,若是,处理特征回路,否则,进行回路数据格式转换;
所述处理串级回路,是指如果主回路是自动控制状态,副回路是任意状态,则主回路和副回路均设置为自动控制状态;如果主回路是手动控制状态,副回路是任意状态,则主回路和副回路均设置为手动控制状态;
所述处理特征回路,是指如果回路的PV值小于某个值,则设置该回路所属的装置处于停工状态,且设置该装置下的所有回路均不参与自控率统计,否则,按照普通回路处理,所述PV值为过程值;
最后,对处理后的回路数据汇总,再对处理后的回路数据进行格式转换,即将字符串型回路数据转换为数值型回路数据,用以计算自控率,具体而言,格式转换就是转换状态量(Mode值)成为0或1的数值,才能用于计算自控率,状态量一般用字符串Automatic表示自动控制状态、Manual表示手动控制状态,因此,需将Automatic转换为数值1,将Manual转换为数值0,用于计算自控率。
步骤102:将回路数据中与回路自控率有关联的数据存储到实时回路自控率采集表中,将回路数据中与回路平稳率有关联的数据存储到实时回路平稳率采集表中。
对于每一条回路,实时回路自控率采集表中存储的与回路自控率有关联的数据至少包括:Data_ID回路序号,LD_Code回路编码,Mode状态量,Fill_Time时间戳。实时回路平稳率采集表中存储的与回路平稳率有关联的数据至少包括:Data_ID回路序号,LD_Code回路编码,PV,SV,MV,Fill_Time时间戳。
其中,PV为过程值,SV为集散控制系统DCS(Distributed Control System)设定的值,MV为输出值。
实时回路自控率采集表和实时回路平稳率采集表中存储最新采集到的一轮回路数据。
步骤103:将具有相同空间属性的回路数据作为一树节点数据,根据实时回路自控率采集表中的回路数据,得到树节点的实时自控率,并存储在树节点实时自控率表中;根据实时回路平稳率采集表的回路数据,得到树节点的实时平稳率,并存储在树节点实时平稳率表中。
将具有相同空间属性的回路数据作为一树节点数据包括,按照工厂、车间、装置、回路的空间层次,分别作为树节点,各树节点按照空间层次为上下级的关系,以列表结构展示。
自控率是指所有回路中状态为自动控制的回路所占的比例,自控率越高,表明装置、车间或工厂运行的自动化程度越高,自控率的高低直接体现了装置当前运行状态的好坏。
从实时回路自控率采集表中的回路数据,可以查看回路的状态量(Mode值),若状态量为1,表示该回路为自动控制状态,若状态量为0,表示该回路为手动控制状态,从而得到
自动控制状态的回路数量为状态量等于1的回路的数量,手动控制状态的回路数量为状态量等于0的回路的数量。
平稳率是指所有回路中状态为平稳的回路所占的比例,平稳率越高,表明装置、车间或工厂的运行越稳定,平稳率的高低直接体现了装置当前运行状态是否稳定。
回路是否平稳的评价标准是:首先给定一个常量Δ,如果
SV-Δ≤PV≤SV+Δ [2]
则视回路为平稳,否则视为不平稳,其中PV值为过程值,SV值是集散控制系统DCS(Distributed Control System)装置的给定值,是固定不变的,Δ值是用户根据需要预先设定的变化范围,也可根据需要进行调整。
从实时回路平稳率采集表中的回路数据,可以查看到回路的SV、PV和常量Δ,按照公式[2]确定每一条回路是否平稳,从而得到
所述树节点是针对监控系统而言的,叶节点是回路级,回路级以上的节点均可看作树节点,工业控制领域中,一个树节点对应于一个装置、车间或工厂,通过统计树节点的自控率和平稳率就能看出一个装置、车间或工厂的自动控制比率和平稳状态,有利于调整装置、车间或工厂运行的自动化程度和稳定性。
因此,所述树节点包括装置树节点、车间树节点和工厂树节点,装置树节点的自控率由所述装置上的所有回路按照公式[1]得到,车间树节点的自控率由所述车间内所有的装置上的回路按照公式[1]得到,工厂树节点的自控率由所述工厂内所有车间的装置上的回路按照公式[1]得到;
同样,装置树节点、车间树节点和工厂树节点的平稳率均按照公式[3]得到。
一个工厂树节点包括一个或多个车间树节点,一个车间树节点包括一个或多个装置树节点,一个装置树节点包括多个回路。
目前,查看回路是否平稳时,只能通过查看DCS(集散控制系统)上的监控画面中回路的波动曲线是否平稳,来判断回路稳定与否。但这种方法只能监控单条回路,无法同时监控多条回路,可是装置下的回路很多,要判断整个装置是否稳定非常麻烦。判断自控率也只能通过回路数据中的状态量查看单条回路数据的自控状态,无法看到整个装置、车间和工厂的自控状态。
然而,本发明从各个树节点的自控率和平稳率可以直接查询到整个装置、车间和工厂的稳定性和自动化程度,便于维护所有装置的正常运转。
步骤104:读取下一轮回路数据。
步骤105:将实时回路自控率采集表中时间戳先于当前的回路数据转存到历史回路自控率采集表,将实时回路平稳率采集表中时间戳先于当前的回路数据转存到历史回路平稳率采集表中。
数据每次读取的时候都会有一个时间戳,在一个采集周期过后,又有一组新的回路数据被采集上来,根据时间戳,将时间戳先于当前的所有回路数据从实时回路自控率采集表转存到历史回路自控率采集表,从实时回路平稳率采集表转存到历史回路平稳率采集表中。
步骤106:确定统计周期,累计时间戳的长度,将历史回路自控率采集表中的回路数据存储到与统计周期对应的回路历史自控率表和树节点历史自控率表中,将历史回路平稳率采集表中的回路数据存储到与统计周期对应的回路历史平稳率表和树节点历史平稳率表中。
确定统计周期,使得用户可以按照一定的时间段查看各个树节点的自控率和平稳率,以及时掌握从过去到现在的装置、车间或工厂的运行趋势,从而可及时进行维护,有利于保障装置、车间或工厂运行的自动化程度和稳定性。统计周期根据实际需要确定,可以对时间戳的长度按统计周期进行累计。
例如,可以累计时间戳的长度,分别得到小时、天、月、年的统计周期,即按小时为单位、按天为单位、按月为单位、按年为单位等不同的时间段,将历史回路自控率采集表中的回路数据存储到回路时自控率表、树节点时自控率表、树节点天自控率表、树节点月自控率表、树节点年自控率表中,回路时自控率表存储过去一小时历史回路自控率采集表中所有的回路数据。
所述回路历史自控率表和树节点历史自控率表可以根据统计周期预先在本地数据库中建立。回路历史平稳率表和树节点历史平稳率表也是一样。
类似地,历史回路平稳率采集表中的回路数据也做同样处理。
步骤107:根据树节点历史自控率表中的回路数据,得到树节点的历史自控率,根据树节点历史平稳率表中的回路数据,得到树节点的历史平稳率。
树节点历史自控率表不仅存储历史回路数据,而且对所述回路数据按照公式[1]进行运算,得到各个树节点的历史自控率,树节点历史平稳率表也是一样。
例如:树节点时自控率表存储过去一小时历史回路自控率采集表中所有的回路数据,并对所述回路数据按照公式[1]进行运算得到各个树节点的时自控率。树节点天自控率表存储过去一天历史回路自控率采集表中所有的回路数据并同样得到各个树节点的天自控率,树节点月自控率表、树节点年自控率表也做相同地处理。
类似地,历史平稳率回路数据的存储处理方法也是一样。
按照上述数据库存储方法将实时数据库的回路数据存储到本地数据库后,对本地数据库进行查询的方法如图3所示,基于工控领域的数据库查询方法,包括以下步骤:
步骤201:读取用户的查询条件。
自控率的查询条件为回路序号Data_ID,回路编码LD_Code,状态量Mode,时间戳Fill_Time的逻辑与运算;
平稳率的查询条件为:回路序号Data_ID,回路编码LD_Code,PV值,SV值,输出值MV,时间戳Fill_Time的逻辑与运算。
其中,Data_ID回路序号就是回路的编号,LD_Code回路编码代表查询的对象。PV为过程值,SV为DCS设备设定的值,是不变的,MV为输出值。
例如:根据下面的自控率查询条件
F103A LY_CH_F103A_AUTO
其中,F103A为Data_ID序号,就是回路的编号,LY_CH为LD_Code回路编码,第一个前缀代表厂,在这里LY代表炼油厂,第二个前缀代表装置,CH代表催化装置,AUTO表示Mode状态量。
因此,在自控率的查询条件中,Data_ID序号、LD_Code回路编码、Mode状态量用来定位要查询的对象,而Fill_Time时间戳用来定位要查询的时间,根据所述查询的对象和查询的时间,就可以唯一确定本地数据库中要查询的数据表。对平稳率的查询也是如此。
步骤202:按照所述查询条件读取回路数据,读取与所述回路数据对应的数据表,获取所述数据表中的监控指标数据。
当查询对象为实时自控率,查询条件包含有回路信息时,则通过存储有与回路自控率有关联数据的实时自控率表,按照回路信息定位到具有相同空间属性的回路数据、且与回路对应的树节点实时自控率表,当查询条件为历史自控率,查询条件同时包含有时间戳和回路信息时,则先按时间戳定位到包含所述时间戳的统计时间段,再按回路信息,定位到所述统计时间段内、与所述回路信息对应的树节点历史自控率表;
当查询对象为实时平稳率,查询条件包含有回路信息时,则通过存储有与回路平稳率有关联数据的实时平稳率表,按照回路信息定位到具有相同空间属性的回路数据、且与回路对应的树节点实时平稳率表;当查询条件为历史平稳率,查询条件同时包含有时间戳和回路信息时,则先按时间戳定位到包含所述时间戳的统计时间段,再按回路信息,定位到所述统计时间段内、与所述回路信息对应的树节点历史平稳率表;
例如:用户要查询的是车间A在过去一天的自控率,根据回路数据,读取对应的数3据表,即车间A的天自控率表,得到车间A的天自控率。
步骤205:返回上述监控指标数据给用户。
在本地数据库中,每一个数据表都有一个固定的表名,并且,每个数据表中都有相应的查询脚本语句,如果需要哪个数据表的数据,直接调用查询脚本语句就可以进行相应的查询操作了。
下面以查询自控率指标为例进行说明,如图4所示:
步骤301:调用InquireDataTimer.java类和AutoRateDataWriter.java类,读取用户的查询条件。
步骤302:调用AutoRateReader.java类,按照所述查询条件读取回路数据。调用AutoRateDataItem.java类,读取与所述回路数据对应的数据表,获取数据表中与所述回路数据对应的自控率。
步骤303:返回上述自控率给用户。
通过查询树节点历史自控率表中的自控率和树节点历史平稳率表中的平稳率,以及树节点实时自控率表中的自控率和树节点实时平稳率表中的平稳率,就可方便地知道从过去到现在各个树节点,即各个装置、车间、工厂运行的自动化程度和稳定性,可以从整体角度来监控各个装置、车间、工厂运行状况,并提供量化的平稳率和自控率指标,可根据实际需要预先设定各个树节点平稳率和自控率的阈值。例如,若发现某个树节点的平稳率在阈值以下,则可以根据数据表中该树节点的回路数据找到出现问题的回路,并对所述回路进行调整和维护,以提高所述树节点的稳定性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。