一种基于内存存储的EMS系统规则引擎的制作方法

文档序号:29740815发布日期:2022-04-21 19:11阅读:200来源:国知局
一种基于内存存储的EMS系统规则引擎的制作方法
一种基于内存存储的ems系统规则引擎
技术领域
1.本发明涉及储能ems系统领域,具体为一种基于内存存储的ems系统规则引擎。


背景技术:

2.规则引擎是一种逻辑或条件,例如“当某些条件被评估为真时,然后执行某些任务”。规则引擎可以被视为复杂的if/then语句解释器。被解释的if/then语句称为规则。将规则引擎想象成一个以数据和规则作为输入的系统,它会将这些规则应用于数据,并根据规则定义为我们提供输出。
3.以储能ems系统平台为例,规则引擎可以用于设备报警、数值运算、定时任务等。如条件if为某设备温度》70摄氏度,执行动作then为触发报警装置,那么当设备温度达到触发条件时,报警装置就会发生报警。当然,还可以用于更复杂的任务处理,例如储能削峰填谷,电价谷时充电,峰时放电,以此实现最大利益化。系统中,用户可以手动设置电价峰谷时间,当电价谷时,if条件触发,执行then动作,储能装置开始充电,当电价峰时,执行的then动作则是储能装置放电。
4.规则引擎配置完成后,常用于设备数据采集后实时匹配,例如采集设备温度传感器数据,采集之后,temp=60℃,那么将数据存储到数据库,同时,数据进入规则引擎进行判断匹配,如果触发预定的限制,则执行相应的策略。
5.规则引擎实时匹配时,必须保证高即时性,以便触发作出最快的反应,如温度过高报警,因此规则匹配速度就成了规则引擎中最核心的问题之一。常规的解决方式是,根据传感器的点位id,到数据库中请求获取到对应的规则数据,取出数据后,根据各个字段的值进行匹配判断处理。这个过程中,ems系统程序服务器与数据服务器之间存在磁盘i/o和网络通讯,存在少量延迟,如网络出现抖动情况,则会影响整体规则判断时间。


技术实现要素:

6.本发明的目的在于提供一种基于内存存储的ems系统规则引擎,以解决上述背景技术中提出的问题。
7.为实现上述目的,本发明提供如下技术方案:一种基于内存存储的ems系统规则引擎,包括如下具体步骤:
8.s1、储能ems系统运行于服务器中,采用java语言编程系统程序,系统内连接的电力设备通过tcp/mqtt/https/modbus/iec104等规约进行设备之间通讯,实现软硬件连接;
9.s2、系统运行时,向系统中添加一个新的设备,例如bms模块,即电池管理系统,将设备通过通讯交换机与系统连接到同一局域网中,此时设备会自动分配到一个对应的ip;
10.s3、获取到对应的ip后,设备默认使用一个端口号,将ip和端口号填写到系统中,将设备注册到系统,进行连接;
11.s4、连接后,对设备的点位进行配置,例如address=1,对应的是温度传感器,暂定名为temp,address=2,对应的是湿度传感器,那么此时将address地址和对应的含义配置
到系统中,系统将点位设备数据信息存储到数据库时,会自动生成一个对应的id;
12.s5、对设备点位进行规则配置,设置address=1的规则为采集上来的数据temp,规则为if temp》60,then执行动作为触发报警;
13.s6、规则配置完成后,数据存储进入数据库,此时,ems程序中对应的rulemap集合,采用单例模式定义,也将同步进行刷新数据;
14.s7、经过以上步骤,数据库中已经有全部的规则配置数据,内存map集合中也有全部的规则配置数据,两者同步一致;
15.s8、当电力设备上传数据到ems系统时,系统会获取到对应的设备点位id,并将id放入到内存map集合中进行匹配,获取到相应的规则json数据;
16.s9、规则引擎会通过这一串json数据,进行判断,最后决定是否触发逻辑,是否执行动作。
17.进一步的,步骤s6中,所述刷新数据的方式为:调用rulemap集合的方法set,给该变量重新设置一个值,值为新增的数据,或者全部规则数据。
18.进一步的,所述map的存储结构为key,value形式,key为点位id,value为规则的json数据。
19.与现有技术相比,本发明的有益效果是:
20.本发明采用基于内存缓存的规则引擎,利用java中单例模式的map集合,将设备点位id作为key,规则配置json数据作为value形式,缓存到内存中,一旦需要判断,可以及时触发和执行动作,有效提高整体系统运行效率,保障整体运行安全(如及时报警,及时通知),帮助企业降本提效。
附图说明
21.图1为本发明的json数据的具体实例。
具体实施方式
22.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
23.本发明提供一种技术方案:一种基于内存存储的ems系统规则引擎,包括如下具体步骤:
24.s1、储能ems系统运行于服务器中,采用java语言编程系统程序,系统内连接的电力设备通过tcp/mqtt/https/modbus/iec104等规约进行设备之间通讯,实现软硬件连接;
25.s2、系统运行时,向系统中添加一个新的设备,例如bms模块,即电池管理系统,将设备通过通讯交换机与系统连接到同一局域网中,此时设备会自动分配到一个对应的ip;
26.s3、获取到对应的ip后,设备默认使用一个端口号,将ip和端口号填写到系统中,将设备注册到系统,进行连接;
27.s4、连接后,对设备的点位进行配置,例如address=1,对应的是温度传感器,暂定名为temp,address=2,对应的是湿度传感器,那么此时将address地址和对应的含义配置
到系统中,系统将点位设备数据信息存储到数据库时,会自动生成一个对应的id;
28.s5、对设备点位进行规则配置,设置address=1的规则为采集上来的数据temp,规则为if temp》60,then执行动作为触发报警;
29.s6、规则配置完成后,数据存储进入数据库,此时,ems程序中对应的rulemap集合,采用单例模式定义,也将同步进行刷新数据;
30.s7、经过以上步骤,数据库中已经有全部的规则配置数据,内存map集合中也有全部的规则配置数据,两者同步一致;
31.所述刷新数据的方式为:调用rulemap集合的方法set,给该变量重新设置一个值,值为新增的数据(新增时),或者全部规则数据(初次启动/手动刷新时);
32.s8、当电力设备上传数据到ems系统时,系统会获取到对应的设备点位id,并将id放入到内存map集合中进行匹配,获取到相应的规则json数据;
33.所述map的存储结构为key,value形式,key为点位id,value为规则的json数据;
34.例如:
35.如图1所示,其中rulename是规则定义的名称,rulestatus是规则开启的状态,triggers是触发逻辑,其中value是160,operator为eq,即相等的意思,那么当温度大于160摄氏度时,触发此规则,actions是执行动作,alarm为true即为触发报警;
36.s9、规则引擎会通过这一串json数据,进行判断,最后决定是否触发逻辑,是否执行动作。
37.本发明主要解决规则引擎中规则与对应点位快速匹配问题,如某电力设备的温度传感器,如何快速找到他所对应的规则。
38.在上述缺点中,提到了规则引擎配置的规则存储数据库,当数据上传进入规则引擎匹配时,需要从数据库中把规则取出来进行,这个过程存在大量的影响速度的因素,如磁盘i/o和网络延迟,针对这个问题,此方法提出来使用本地内存进行缓存,使用java语言中map结构进行存储。
39.map结构由key和value两部分组成,此方法中,key用来存储设备点位对应的id,value用来存储对应的规则,那么每次获取对应规则,只需要调用map集合的方法get,传入key即可获取到缓存变量的value,进而进行规则判断。此方法运行时只在内存中进行存储,速度比磁盘更快一个量级,且不存在网络传输与延迟。
40.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1