速度快且操作便捷的电能表在线升级方法
国家发明授权专利电能表在线升级方法。该专利由威胜集团有限公司申请,并于2017年4月19日获得授权公告。
发明背景
电能表启动后,从闪存(Flash)中加载程序代码和CE(电能计量单元)代码运行。在研发设计阶段,可以通过仿真器将已编译好的程序烧录到芯片的闪存中,从而实现对程序的更新升级。在电能表生产阶段,则通过专用的烧录器将程序烧写到芯片中。电能表出厂后,如果有特殊要求需要升级程序时,则只能通过返厂后进行操作。现有的技术虽然在程序设计阶段能方便的对电能表程序进行升级操作,但在电能表生产阶段及其出厂后,若有升级需求,只能通过烧录器对单台电能表一一进行升级,操作非常之麻烦,尤其是当电能表安装到千家万户后,如果要升级更新的话,则需要将所有的电能表返厂,然后进行升级,或者在去到每一处电表的安装位置,拆掉铅封,通过专用工具进行升级,升级成本大。
发明内容
本发明的目的是提供一种速度快且操作便捷的电能表在线升级方法。
本发明提供的这种电能表在线升级方法,该方法包括如下步骤:步骤一,上位机发送清除外部存储器的命令到电能表,将升级文件的存储区域清零;步骤二,上位机发送升级文件到指定编号的电能表的外部存储器指定位置,进行升级文件的正确性检查、外部存储器的读写正确性检查和MCU的内部Flash的读写正确性检查,若检查通过,则转至步骤三;若检查未通过,则不进行后续的升级操作,需重新发送升级文件;步骤三,电能表重新启动;启动过程中,电能表选择执行或者不执行升级程序;若不执行升级文件,电能表正常运行。
若执行升级文件,电能表检查外部存储器和MCU内部Flash的读写正确性,并擦除该内部Flash的对应存储区域;再将外部存储器的升级文件分多次读到RAM空间,然后再更新到该内部Flash中,升级文件全部更新完成后,重启电能表,完成升级操作。
所述上位机发送升级文件完成后,清除需要升级标志和检帧正确标志,置位升级文件下发完成标志;所述升级文件的正确性检查通过后,置位检帧正确标志和需要升级标志;若未通过,则清除该检帧正确标志和升级文件下发完成标志;所述电能表升级完成,清除上述所有标志。
所述检帧正确标志和需要升级标志都有效时,所述电能表执行升级文件;若二者有任一无效,则所述电能表不执行升级文件。所述升级文件的正确性检查是检查在外部存储器中存储的升级文件的合法性;包括如下步骤:第一步,从所述升级文件存储起始地址开始,循环读取固定长度的该升级文件内容,再解析出该固定长度升级文件内容中一条完整的记录;第二步,解析该条记录中数据的长度;根据长度判断该记录的末端是否超出固定长度,若超出,则以该记录首端作为开始地址,转至第一步,若不超出,则转至下一步;第三步,判断所述记录长度是否满足设定要求,如满足,则转至下一步;否则得出未通过正确性检查的结论,并返回;第四步,解析出当前所述记录的地址、记录类型和校验字;第五步,判断该条记录的地址合法性,若为合法地址,则转至下一步;否则得出未通过正确性检查的结论,并返回;第六步,判断当前所述记录的校验字是否和计算出的校验字一致,若一致,则从当前所述记录的地址起,再读取所述固定长度的下一条记录,并转至第二步;直至所述升级文件的数据均通过所述数据长度的检查、所述地址合法性的检查以及所述校验字的一致性检查,并得出所述升级文件通过正确性检查的结论,并返回;否则得出未通过正确性检查的结论,并返回。
所述记录中数据的长度不满足设定要求,则判断其长度是否为0,若不为0,则判断得出未通过正确性检查的结论,并返回;若其长度为0,则判断所述升级文件是否结束,若不为文件结束,则判断得出未通过正确性检查的结论,并返回;若为文件结束,则将最后读取的所述固定字节数据里的检帧正确字节数和文件结束记录字节数更新到总字节数中,再判断所述升级文件结束后已检总字节数是否与上位机发送的文件总字节数一致,若二者字数一致,则表明通过正确性检查,并返回;否则判断得出未通过正确性检查的结论,并返回。
所述执行升级文件前,所述电能表首先关闭所有中断,停止电能计量;接着该电能表的LCD对应指示升级进行中;然后进行电源检查,然后检查检帧正确标志和需要升级标志是否置位,再进行所述外部存储器和所述内部Flash的读写正确性检查,通过后则进行升级。所述电源检查是检测电源V3P3,上电N秒后,连续检测M次;若有一次检测该电源低于3 .0V,则重新检测。所述将外部存储器的升级文件分多次读到RAM空间需要对每次读入的内容进行校验位、数据长度和地址的合法性判断;只有每次读入的内容为合法内容时才再更新到所述MCU的内部Flash中。
本发明实现了电能表在线升级,操作难度小,升级方便。电能表有升级需求时,可随时对电能表进行升级更新,而无需将现场电能表返厂更新,极大地节约了升级成本,同时也增加了电能表产品对快速变化的市场的适应能力,提高了电能表的竞争力。