一种基于DLMS协议的高性能模拟计量设备的制作方法

文档序号:27432563发布日期:2021-11-17 22:25阅读:166来源:国知局
一种基于DLMS协议的高性能模拟计量设备的制作方法
一种基于dlms协议的高性能模拟计量设备
技术领域
1.本发明涉及信息收集设备技术领域,尤其涉及一种基于dlms协议的高性能模拟计量设备。


背景技术:

2.目前随着能源公司业务的扩展和水、电、气服务的管控能力的加强,计量设备的功能日益增多,能源系统所能承载的设备数量也越来越大,因此对能源系统稳定性以及性能上的要求也越来越高,为了保证高性能高稳定性,需要做大量的功能测试以及性能测试。
3.在普通功能的测试上,需要让软件工程师频繁使用硬件设备来进行测试,在设备资源紧缺的情况下会严重影响开发及测试效率;在性能测试阶段需要大量的计量设备(至少50w

100w)才能模拟出真实生产环境的状况,但是在真实情况下无法做到使用如此大量的设备进行测试。
4.无论是电表、水表、还是气表对于采集系统来说相当于一个数据源,在采集系统层面主要关注的是与计量设备的通信交互以及数据解析,大部分情况下并不需要关注表的硬件层面,在采集系统进行功能测试或压力测试时还可以忽略表端采集数据的准确性。
5.由于不同项目的计量设备会在一些参数配置项,以及数据类型等方面有些差异,在实际测试过程中需要根据项目来提供相应的设备,这种情况下使得测试效率更加低效,每次测试需要根据项目来寻找设备,也会占用过多的资源。综合以上背景可以发现在对能源系统进行测试时严重依赖计量设备,需要保证设备硬件软件层面没有问题的情况下才能进行测试,在进行性能测试时所需要的设备数量极高,需要占用大量资源。在项目过多的情况下,设备的类型也会随之增多,让测试环境所依赖的设备更加复杂。


技术实现要素:

6.本发明所要解决的技术问题是:针对上述存在的问题,提供了一种基于dlms协议的高性能模拟计量设备,从而解决电力系统开发以及测试时严重依赖计量设备的问题。
7.本发明采用的技术方案如下:
8.一种基于dlms协议的高性能模拟计量设备,该模拟计量设备用于对能源系统进行测试,包括:人工生成配置文件模块、克隆模块、解析模块、模拟模块、管理模块、人机交互模块、日志系统和接口扩展模块;
9.所述人工生成配置文件模块通过人工填写被模拟的计量设备的基础信息,生成json配置文件,传输给解析模块进行解析;
10.所述克隆模块读取被模拟的计量设备的全部信息,生成json配置文件,传输给解析模块进行解析;
11.所述解析模块对人工生成配置文件模块或者克隆模块传输来的配置文件进行解析,并将解析后得到的参数信息传输给模拟模块;
12.所述模拟模块根据解析模块传来的参数信息,模拟出计量设备;
13.所述管理模块采用reactor模式和proactor模式对模拟模块进行管理,控制模拟出的计量设备对外部能源系统进行测量;
14.所述人机交互模块用于进行人机交互,人机交互模块提供一个拥有可视化交互界面的客户端,需要模拟的设备信息可在该客户端上进行填写或选择;
15.所述日志系统用于记录人工生成配置文件模块或者克隆模块生成配置文件的过程,以及记录解析模块解析配置文件的过程,并通过人机交互模块显示;
16.所述接口扩展模块用于提供功能扩展接口,便于使用人员进行后期开发。
17.进一步的,所述解析模块支持对多个配置文件同时进行解析,且在解析过程中不会互相影响。
18.进一步的,所述克隆模块读取被模拟的计量设备的全部信息过程包括:
19.首先,根据传入的被模拟的计量设备的连接信息连接到真实的被模拟的计量设备上,连接成功后发送get请求报文至被模拟的计量设备上,然后被模拟的计量设备返回参数信息,最后将被模拟的计量设备返回的参数信息形成json配置文件。
20.进一步的,所述日志系统设有压缩功能,当日志文件超过设定阈值,日志系统则会以当前时间加log的方式重新命名日志文件;当历史日志文件超过设定阈值,日志系统则会将历史日志进行压缩处理;并且日志系统是基于boost::asio库的异步任务处理来实现的。
21.进一步的,所述人工生成配置文件模块或者所述克隆模块通过http post请求的方式将各自生成的配置文件传输给解析模块。
22.进一步的,所述克隆模块生成的配置文件可以进行定制化的修改。
23.与现有技术相比,采用上述技术方案的有益效果为:
24.解决研发及测试人员在能源系统测试过程中对计量设备的依赖的问题。
25.解决了在性能测试过程中无法提供具有大量设备的测试环境的问题。
26.解决了在性能测试中,设备模拟器程序资源分配不均导致测试结果不准确的问题。
27.解决了在测试过程中,对不同项目设备的依赖问题,目前可做到设备模拟器适配各个项目的设备。
28.解决了在测试过程中,设备模拟器可以模拟水、电、气等计量设备。
29.解决了在设备业务扩展中不灵活的问题。
附图说明
30.图1是本发明的结构框架示意图。
31.图2是现有技术中对能源系统形成测试部署示意图。
32.图3是本发明对能源系统进行测试部署的示意图。
具体实施方式
33.下面结合附图对本发明做进一步描述。
34.为方便理解,下面对图1中的英文名称进行解释:
35.simulator:模拟服务。
36.web ui:人机交互模块。
37.log system:日志系统。
38.http server:解析模块。
39.clone:克隆模块。
40.meter controller:管理模块。
41.meter:模拟模块。
42.business ctl:接口扩展模块。
43.实施例1
44.本实施例提供一种基于dlms协议的高性能模拟计量设备,该模拟计量设备由人工生成配置文件模块、克隆模块、解析模块、模拟模块、管理模块、人机交互模块和日志系统组成。
45.其中,人机交互模块为一个用于可视化交互界面的客户端,操作人员通过该客户端可操作整个模拟计量设备。
46.人工生成配置文件模块主要通过在可视化交互界面上填写被模拟的计量设备基础信息,填写的基础信息由人工生成配置文件整理生成一个json配置文件,该配置文件中包含设备的基本信息、相应能源模式下业务相关的obis信息、设备状态的默认值配置;生成的配置文件通过http post请求的方式传输给解析模块进行解析,请求参数中包括生成的配置文件。
47.克隆模块主要是用来读取被模拟的计量设备的各项obis码以及状态信息然后将其整理成配置文件以此达到克隆的目的,整理生成的配置文件照样通过http post请求的方式传输给解析模块进行解析,请求参数中包括生成的配置文件。
48.克隆模块读取被模拟的计量设备的具体过程如下:
49.克隆模块首先会根据传入的被模拟的计量设备的连接信息连接真实计量设备,连接成功后会将一系列get请求报文依次发送到真实计量设备,然后将真实计量设备返回的参数信息形成一份配置文件,这个过程中若有相关参数项读取失败所生成的配置文件会填入默认值,并且失败参数项会在日志系统中呈现。
50.解析模块接收人工生成配置文件模块或者克隆模块发过来的http post请求,在解释请求后开始解析请求参数,若http post请求是人工生成配置文件模块发来的,则解析模块先解析请求参数中的配置文件,然后初始化生成一份全局的计量设备配置信息,并将该信息发给模拟模块;若http post请求是克隆模块发来的,则解析模块解析请求参数中的配置文件,提取出真实计量设备的各项obis码以及状态信息,并将这些信息发给模拟模块。
51.模拟模块是本设备中最为核心的部分,该部分根据解析模块发来的参数信息,模拟真实的计量设备,如水表、电表、气表等。由于本方案中所模拟的计量设备都是基于dlms协议所开发的,因此无论是水、电、气之中的哪一种设备,它们的数据解析方式、数据格式、基础业务、加密方式等方面都是相同的,它们的区别在于数据对应的obis码不一样,通信模式有所区别。
52.由于模拟模块在模拟时可以同时模拟多个计量设备,所以为了让环境资源得到充分的利用以及让每个模拟出来的计量设备的资源达到最少占用,在本实施例中管理模块采用reactor和proactor两种异步io设计模式对模拟模块进行运行工作上的管理。
53.通常情况下,计量设备根据通信模式分为两种:服务端设备和客户端设备;
54.服务端设备:不会与能源系统保持长连接,通常由能源系统通过ip和端口来访问设备;
55.客户端设备:当设备上电时,设备会主动连接能源系统,保持长时间连接,并且会定时发送心跳以确保设备在线。
56.具体的,本实施例中,在模拟服务端设备时采用reactorio设计模式,这种模式的优点在于:实现相对简单,对于链接多,耗时短的处理场景高效;避免了线程切换的性能开销和编程复杂性;事件的串行化对应用是透明的,可以顺序的同步执行而不需要加锁;事务分离:将与应用无关的多路复用、分配机制和与应用相关的回调函数分离开来。
57.在模拟客户端设备的设计上采用proactorio设计模式,它适用于异步接收和同时处理多个服务请求的事件驱动程序。
58.在本实施例中,日志系统基于boost::asio库的异步任务处理设计实现,这个日志系统可以被整个服务所调用并且不需要使用互斥锁来防止发送死锁,因此日志系统的性能可以发挥到及至,并且写日志的过程不会影响到主线程的执行,因为整日志读写过程是以任务的方式来执行,当需要写日志的时候会将日志读写操作分发给相应的boost::asio的线程去处理,这样只需要给日志系统分配一个线程去处理任务即可。并且日志系统拥有压缩功能,日志大小一旦超过4m(可调),则会以当前时间+log重命名日志文件,新的日志会写入默认的meter.log中,当历史日志超过40m则会将历史日志进行压缩处理,极大的节约了磁盘空间。在日志写的过程中,写入到了本地文件后会调用解析模块的日志上报接口,将日志内容在人机交互模块中展现出来。
59.为了便于后期的开发使用,在本实施例中,设置有接口扩展模块,该接口扩展模块在本模拟计量设备中自动提供扩展接口,在功能扩展时,只需要在配置文件中加上业务的obis码以及类属性等信息,并执行模拟计量设备的接口使能,程序会自动生成相应的接口代码文件以及示例,每一次执行扩展工具进行业务扩展时会为相应的能源设备的业务部分增加一个类来处理,然后在文件中的留下的接口中进行扩展即可。
60.由于对能源系统性能测试时所需要的虚拟设备数量极大,并且在测试过程中能源系统对设备的操作都是批量的,这里以电表为例子来分析:例如对60w的电表进行日结曲线抄读,由于一台机windows/linux机器下一个网卡最大可使用的套接字数量为65535,所以在一台机器下部署6w只虚拟电表的情况下,需要10台机器进行部署,假设电力系统会进行批量任务下发,一批操作6w的电表,此时若每台部署的机器按照表号顺序启动的情况下,这一批6w只电表执行任务的压力全部都在一台机器上,其他机器处于空闲状态,如果因为机器性能等问题会导致性能测试结果不够准确,具体情况如图2所示
61.所以需要避开这种部署方式,此时本模拟计量设备配置文件中的启动步长就起到了作用,启动步长为1起始表号为1时,电表会按照1234
……
方式启动,若步长为2则启动为:246810
……
。在上述场景下将配置文件的步长改为10,那么一批6w个电表任务会平摊到每台虚拟电表的环境下,充分利用了资源避免了一台机器高负荷运转而其他机器空闲的情况,具体情况如图3所示。
62.本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。如果本领域技术人员,在不脱离本发明的精神所做的非实质性改变或改进,都应该属于本发明权
利要求保护的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1