System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及用电终端数据采集领域,具体涉及电表的无线数据采集,特别涉及一种dtu增强采集的方法、装置及存储介质。
技术介绍
1、遍历采集设备dtu连接的所有电表,依次构建每个电表所需的数据采集命令二进制数据。每个电表采集数据项对应一条命令(比如电流,电压,峰平谷电量等),每个命令10-100个字节不等。有的电表还有连接用户登录授权验证命令。现有dtu最多只能连接10个实际电表,每个电表的命令包限制最大300字节,单个电表如果采集命令过长,命令总字节超过300字节,则后面的命令会被移除,也就无法正常采集电表的完整数据。
技术实现思路
1、为了解决现有技术方案上述问题,本专利技术提出了一种dtu增强采集的方法的方法、装置及存储介质。本专利技术采用虚拟电表技术,如果一个电表的采集总的命令字节数过长,则拆分成多个虚拟电表,最后汇总多个虚拟电表的响应数据为一个真实电表的采集响应数据,确保采集数据完整。
2、为了实现上述目的,本专利技术采用了如下技术方案:一种dtu增强采集的方法,所述dtu为电表数据采集用遍历采集设备,包括以下步骤:
3、将多个电表多个采集命令数据拆分压缩成多个独立的数据包,并对应构建多个虚拟电表,dtu将所有虚拟电表的数据包采集后,再将这些虚拟电表的数据包合并为对应的实际物理电表的数据包,从而完成所有实际物理电表的数据包的完整采集。
4、本专利技术将某个物理电表的超过通讯协议约束的字节容量限制(一般是300字节)的数据包进行拆分,根据其
5、进一步的,具体步骤如下:
6、s1,dtu连接的所有电表,依次构建每个电表所需的数据采集命令二进制数据,每个电表采集数据项对应一条命令(比如电流,电压,峰平谷电量等),每个命令10-100个字节;
7、s2,dtu从前往后遍历上述所有命令,每次增加一个命令,对此多个候选命令二进制数据进行数据压缩,得到压缩后变小的二进制数据,再转换成base64编码字符串,最后整合成单个包json数据(单个包字符串字节数最大为300字节,受限于设备通信协议),如果整合的包命令数据字节数>300(dtu包最大字节数),则记录此时的电表命令位置,记为end_index,开始命令位置记录为start_index,将命令位置范围[start_index,end_index]之间的电表命令压缩构建成一个新的命令包,此命令包作为一个虚拟电表,命令包json数据发送给dtu;
8、s3,然后让start_index=end_index,继续移动end_index往后遍历命令,循环上述方法构建多个虚拟电表命令包数据,发送给dtu;直到所有电表命令全部发送完毕。
9、基于此种方式,通过压缩和合并多命令构建多个虚拟电表命令包的方式,可以增加单个dtu实际连接的电表数量,减少硬件成本。
10、进一步的,在s2中,
11、dtu在采集到单个虚拟电表命令数据后,累加命令响应数据,对多条响应数据进行压缩,压缩后转base64编码,构建上传包数据,如果包数据字节数>dtu包最大字节数(例如300字节),则将当前最新响应之前的响应数据压缩处理后上报服务器,然后清空前面缓存的响应数据,将当前命令响应数据放入缓存数据中,在下次接收到电表响应数据后再次同样处理。如果当前响应命令是此虚拟电表的最后一条命令响应数据,则直接上报此响应数据;
12、当一个虚拟电表的采集响应数据都接收到并上报完成后,切换到下一个虚拟电表进行轮询下达命令以采集数据。
13、进一步的,一个dtu的虚拟电表命令全部发送并接受到响应数据完成之后,根据采集频率在一个周期(比如15分钟)结束之后再次开启上述采集流程。
14、进一步的,还包括以下步骤:
15、dtu将采集到的响应数据包上报给采集服务器,采集服务器收到dtu上报的采集响应包数据后,先使用base64解码,得到二进制数据,然后解压得到响应命令数据,累加虚拟电表对应的真实电表响应数据,如果响应数据总数量和发送命令数量一致,则表示此真实电表的采集数据已经完整采集到,此时完整解析此命令响应二进制数据,得到采集数据项的值(电流,电压,电量等),最后将此采集数据写入redis缓存和实时数据库中。
16、本专利技术还公开了一种dtu增强采集的方法的装置,包括:
17、虚拟电表构建模块,用于动态拆分物理电表的命令,构建虚拟电表,并将虚拟电表对应的数据包上报给dtu;
18、dtu,所述dtu在采集到单个虚拟电表命令数据后,累加命令响应数据,对多条响应数据进行压缩,压缩后转base64编码,构建上传包数据,如果包数据字节数>dtu包最大字节数(例如300字节),则将当前最新响应之前的响应数据压缩处理后上报服务器,然后清空前面缓存的响应数据,将当前命令响应数据放入缓存数据中,在下次接收到电表响应数据后再次同样处理。如果当前响应命令是此虚拟电表的最后一条命令响应数据,则直接上报此响应数据;当一个虚拟电表的采集响应数据都接收到并上报完成后,切换到下一个虚拟电表进行轮询下达命令以采集数据;
19、采集服务器,所述dtu将采集到的响应数据包上报给采集服务器,采集服务器收到dtu上报的采集响应包数据后,先使用base64解码,得到二进制数据,然后解压得到响应命令数据,累加虚拟电表对应的真实电表响应数据,如果响应数据总数量和发送命令数量一致,则表示此真实电表的采集数据已经完整采集到,此时完整解析此命令响应二进制数据,得到采集数据项的值(电流,电压,电量等),最后将此采集数据写入redis缓存和实时数据库中。
20、本专利技术还公开一种包含计算机程序的计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,实现权利要求1-5任一项所述的dtu增强采集的方法的方法。
本文档来自技高网...【技术保护点】
1.一种DTU增强采集的方法,所述DTU为电表数据采集用遍历采集设备,其特征在于,包括以下步骤:
2.根据权利要求1所述的DTU增强采集的方法的方法,其特征在于,具体步骤如下:
3.根据权利要求2所述的DTU增强采集的方法的方法,其特征在于,在S2中,
4.根据权利要求3所述的DTU增强采集的方法的方法,其特征在于,一个DTU的虚拟电表命令全部发送并接受到响应数据完成之后,根据采集频率在一个周期结束之后再次开启上述采集流程。
5.根据权利要求1-4任一所述的DTU增强采集的方法的方法,其特征在于,还包括以下步骤:
6.一种DTU增强采集的方法的装置,其特征在于,包括:
7.一种包含计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被一个或多个处理器执行时,实现权利要求1-5任一项所述的DTU增强采集的方法的方法。
【技术特征摘要】
1.一种dtu增强采集的方法,所述dtu为电表数据采集用遍历采集设备,其特征在于,包括以下步骤:
2.根据权利要求1所述的dtu增强采集的方法的方法,其特征在于,具体步骤如下:
3.根据权利要求2所述的dtu增强采集的方法的方法,其特征在于,在s2中,
4.根据权利要求3所述的dtu增强采集的方法的方法,其特征在于,一个dtu的虚拟电表命令全部发送并接受到响应数据...
【专利技术属性】
技术研发人员:袁楠,
申请(专利权)人:苏州易助能源管理有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。