一种基于MODBUS协议的智能电表升级方法与流程

文档序号:36723835发布日期:2024-01-16 12:28阅读:122来源:国知局
一种基于MODBUS协议的智能电表升级方法与流程

本发明涉及智能电表领域,尤其是供电部门远程对电表进行固件升级,不再需要到现场操作的方法,具体地说是一种基于modbus协议的智能电表升级方法。


背景技术:

1、当前智能电表具备数据采集、计量、通讯、液晶显示、防窃电等功能,功能越多则系统程序越复杂,所以维持智能电表稳定运行非常重要,一旦电表出现故障将对智能电表用户和电表厂商造成重大损失。因此智能电表存在故障或者增加新功能时就需要对智能电表进行固件升级。目前对智能电表烧录固件有两种方式,一是智能电表出厂时厂家进行烧录,另一种是智能电表安装到现场时通过485通讯对固件进行升级烧录。但是现有的智能电表使用485通讯升级时仍然采用的是一对一方式,这种方式需要按顺序对每一块智能电表单独执行一次升级流程,当现场智能电表数量较多时将耗费大量人工和时间,升级效率非常低。

2、针对上述问题,本发明提供了一种基于modbus协议的高效、安全、便捷的智能电表升级方法。


技术实现思路

1、本发明的目的是为了解决当前智能电表升级流程繁琐、效率低、安全性差等问题,进而提出一种更为高效、安全的基于modbus协议的智能电表升级方法。

2、本发明的技术方案是:

3、本发明提供一种基于modbus协议的智能电表升级方法,该方法包括以下步骤:

4、升级协商步骤:主站向各智能电表单播发送升级协商命令;智能电表接收升级协商命令并解析获取电表软件标识码,判断所述电表软件标识码与智能电表自身标识码的一致性,若一致则回复主站协商通过,转升级启动步骤;否则回复协商不通过,智能电表退出升级流程,升级结束;

5、升级启动步骤:主站向各智能电表单播发送升级启动命令,智能电表接收命令并解析获取升级固件信息,保存至智能电表eeprom中;

6、广播数据步骤:主站向所有智能电表广播发送升级固件数据包,智能电表接收并存入flash,提取升级包帧序号存入eeprom;

7、查询帧序号步骤:主站第一次轮询单播发送查询帧序号命令,各智能电表接收命令,基于eeprom中存储的升级包帧序号向主站返回未接收到的帧序号;主站进行补发达到预设次数或者所有协商通过的智能电表均接收完整升级固件数据包,进入升级校验步骤;

8、升级校验步骤:主站向各智能电表轮询单播发送升级校验命令,智能电表从flash中读取所有升级固件数据包计算crc校验码、并且获取升级固件的签名信息,将crc校验码与升级固件信息中的crc校验码进行比较,若一致并且签名校验通过,则认为校验通过,否则认为校验未通过,退出升级流程;

9、升级使能步骤:主站向各智能电表单播发送升级使能命令,协商通过且校验通过的智能电表返回主站使能成功,智能电表保存所有电量数据及运行参数,执行升级操作。

10、进一步地,升级固件信息包括升级固件大小、升级固件版本号、签名信息以及升级固件crc;升级固件通过工具合成,格式为2字节的固件大小+固件数据+2字节的升级固件crc+64字节的签名信息+4字节的升级固件版本号。

11、进一步地,补发步骤为:

12、主站汇集所有智能电表返回的、未接收到的帧序号所对应的升级包;

13、主站再次向所有智能电表广播发送汇集的各升级数据包,智能电表接收各升级数据包,若智能电表已经接收到升级数据包,则本次不再写入flash,否则,智能电表执行相应的写flash操作,将本次下发升级包存储;

14、汇集的各升级数据包补发完成后,主站再次单播发送查询帧序号命令查询所有智能电表接收数据包情况,若存在未接收到的帧序号向主站返回,重复补发步骤达到预设次数或者所有智能电表均接收完整升级固件数据包。

15、进一步地,重复补发步骤达到预设次数时,未接收完整数据包的智能电表退出升级流程,升级结束。

16、进一步地,查询帧序号步骤中采用三次补包机制,当第一次查询补包后智能电表仍缺少升级数据包将进行第二次查询补包,若还是缺少升级包则进行第三次查询补包,在第三次补包后智能电表仍缺少升级包时,则该智能电表直接退出升级流程,以原固件程序继续正常运行。

17、进一步地,升级校验步骤中固件签名信息为64字节,跟随最后一包升级数据帧下发至智能电表,签名校验步骤为:智能电表解析数据帧获取签名信息,同时智能电表基于所有固件数据包通过签名加密算法计算64字节签名信息,智能电表将下发签名信息与电表计算签名信息比较,若一致则认为签名通过。

18、进一步地,升级操作后,智能电表重启,运行新版本程序固件,退出升级流程。

19、进一步地,主站与智能电表之间通信基于modbus协议,使用modbus协议通信帧格式以及自定义功能码组合方式命名。

20、进一步地,升级功能母功能码为0x50,具体升级过程中,主站使用0x5010功能码单播下发升级协商命令给智能电表;主站使用0x5011功能码单播发送升级启动命令;主站使用0x5012功能码广播发送升级固件数据包;主站使用0x5013功能码轮询单播发送查询帧序号命令;主站使用0x5014功能码轮询单播发送升级校验命令;主站使用0x5015功能码单播发送升级使能命令。

21、进一步地,crc校验采用crc32校验算法。

22、本发明的有益效果:

23、本发明中,主站与智能电表之间通信基于modbus协议,使用modbus协议通信帧格式以及自定义功能码,实现上更为简单且更容易理解。

24、本发明的升级协商步骤中,首先需验证智能电表软件标识码;升级校验步骤中,需要智能电表对接收的升级固件数据进行crc32校验;接着智能电表和升级固件中加入签名算法,只有本厂商的电表才能正确解码升级固件中的签名;只有三者全部通过时才可以正常执行升级流程,大大提高了升级的可靠性、安全性。

25、本发明的升级流程中,下发的升级固件信息以及升级标志位智能电表都会存储至eeprom中,保证掉电后升级信息不丢失,包括协商通过标志位、校验通过标志位、升级固件crc、升级固件大小、升级包帧序号bitmap等;当升级过程中智能电表发生掉电,再次上电后智能电表将相应升级信息从eeprom中重新读出;当主站再次发起升级时不需要重新开始升级流程,只需延续掉电前升级步骤即可,从而实现掉电续传,节省升级时间。

26、本发明的升级过程采用单播和广播结合的方式,在升级协商、升级启动、查询帧序号、升级校验以及升级使能步骤中主站采用轮询单播的形式发送数据,由于升级固件数据较大,发送耗时较长,步骤升级固件数据包传输时采用广播的形式发送,大大减少升级时间,提高升级效率,解决了以往电表升级采用一对一方式效率的低问题,

27、本发明的查询帧序号步骤中采用三次补包机制,既降低了智能电表因某异常原因未正确接收升级包导致升级失败的概率,又避免了因为部分电表故障使得升级流程一直在该步骤重复导致升级时间加长甚至升级失败的现象。

28、本发明的其它特征和优点将在随后具体实施方式部分予以详细说明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1