一种电能表固件快速升级方法、系统和可读存储介质转让专利

申请号 : CN202210245270.3

文献号 : CN114338656B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 丁国茂周冬冬屈玉帅徐斐虹沙川朱明李敏郑继丰

申请人 : 杭州炬华科技股份有限公司

摘要 :

本发明公开的一种电能表固件快速升级方法、系统和可读存储介质,通过采取广播的形式,将启动升级命令帧通过网关设备直接广播至收到广播地址的电能表中,使得电能表根据启动升级命令帧执行升级,本申请还通过向电能表逐一发送升级确认帧,确保电能表的升级状态,提高升级的成功率,另外,本申请基于文件接收状态位表对漏发子升级文件包的电能表定向补发相应地子升级文件包,避免子升级文件包的遗漏,保证升级的完整性。

权利要求 :

1.一种电能表固件快速升级方法,其特征在于,包括以下步骤:加载升级文件并按照预设分包大小拆分所述升级文件,得到子升级文件包以及分包数量;

向网关设备以广播地址为设备地址发送启动升级命令帧,使得所述网关设备基于所述广播地址将所述启动升级命令帧广播至对应电能表,由所述电能表根据所述启动升级命令帧执行升级,所述启动升级命令帧中携带有所述升级文件的版本号、所有所述子升级文件包以及所述分包数量;

所述向网关设备以广播地址为设备地址发送启动升级命令帧,使得所述网关设备基于所述广播地址将所述启动升级命令帧广播至对应电能表之后还包括:获取所述网关设备内的电能表信息,所述电能表信息包括电能表数量以及电能表设备地址;

根据所述电能表设备地址,逐一向对应电能表发送升级确认帧;

所述电能表根据所述启动升级命令帧执行升级后,接收由所述电能表发送的升级成功确认信息;

所述电能表根据所述启动升级命令帧执行升级,具体包括:电能表根据所述分包数量初始化文件接收状态位表;

所述电能表根据接收的所述子升级文件包的序号,更新所述文件接收状态位表;

若所述文件接收状态位表的所有状态位更新完毕,则所述电能表执行升级,并发送升级成功确认信息;

还包括:

计算接收的子升级文件包的特征值;

判断所述特征值是否与已接收的子升级文件包特征值存在重复;

如果重复,则丢弃;

还包括:

根据待升级电能表规格确认预设子升级文件包;

根据所述预设子升级文件包计算特征值;

根据升级后电能表更新后状态位表的接收子升级文件包特征值与所述预设子升级文件包的特征值进行项数匹配;

所述项数匹配包括特征值序列匹配和特征值之和匹配;

若所述项数匹配正确,则所述电能表升级成功;

还包括:

若电能表文件接收状态位表存在状态位未更新,判断未更新状态位是否存在子升级文件包匹配空缺;

若存在所述子升级文件包匹配空缺,则根据所述未更新状态位和所述电能表设备地址进行返回;

对所述电能表状态位表进行格式化重置为上一版本状态位表;

根据所述格式化重置电能表进行状态位表更新并升级。

2.根据权利要求1所述一种电能表固件快速升级方法,其特征在于,所述由所述电能表根据所述启动升级命令帧执行升级还包括:若所述文件接收状态位表存在状态位未更新,则所述电能表将所述文件接收状态位表返回。

3.根据权利要求2所述一种电能表固件快速升级方法,其特征在于,所述若所述文件接收状态位表存在状态位未更新,则所述电能表将所述文件接收状态位表返回之后还包括:根据所述文件接收状态位表以及所述电能表的设备地址,将未更新状态位对应序号的所述子升级文件包向所述电能表发送,由所述电能表更新所述文件接收状态位表并返回确认信息;

返回重新向所述电能表发送所述升级确认帧。

4.一种电能表固件快速升级系统,其特征在于,包括存储器和处理器,所述存储器中包括电能表固件快速升级方法程序,所述电能表固件快速升级方法程序被所述处理器执行时实现如下步骤:加载升级文件并按照预设分包大小拆分所述升级文件,得到子升级文件包以及分包数量;

向网关设备以广播地址为设备地址发送启动升级命令帧,使得所述网关设备基于所述广播地址将所述启动升级命令帧广播至对应电能表,由所述电能表根据所述启动升级命令帧执行升级,所述启动升级命令帧中携带有所述升级文件的版本号、所有所述子升级文件包以及所述分包数量;

所述向网关设备以广播地址为设备地址发送启动升级命令帧,使得所述网关设备基于所述广播地址将所述启动升级命令帧广播至对应电能表之后还包括:获取所述网关设备内的电能表信息,所述电能表信息包括电能表数量以及电能表设备地址;

根据所述电能表设备地址,逐一向对应电能表发送升级确认帧;

所述电能表根据所述启动升级命令帧执行升级后,接收由所述电能表发送的升级成功确认信息;

所述电能表根据所述启动升级命令帧执行升级,具体包括:电能表根据所述分包数量初始化文件接收状态位表;

所述电能表根据接收的所述子升级文件包的序号,更新所述文件接收状态位表;

若所述文件接收状态位表的所有状态位更新完毕,则所述电能表执行升级,并发送升级成功确认信息;

还包括:

计算接收的子升级文件包的特征值;

判断所述特征值是否与已接收的子升级文件包特征值存在重复;

如果重复,则丢弃;

还包括:

根据待升级电能表规格确认预设子升级文件包;

根据所述预设子升级文件包计算特征值;

根据升级后电能表更新后状态位表的接收子升级文件包特征值与所述预设子升级文件包的特征值进行项数匹配;

所述项数匹配包括特征值序列匹配和特征值之和匹配;

若所述项数匹配正确,则所述电能表升级成功;

还包括:

若电能表文件接收状态位表存在状态位未更新,判断未更新状态位是否存在子升级文件包匹配空缺;

若存在所述子升级文件包匹配空缺,则根据所述未更新状态位和所述电能表设备地址进行返回;

对所述电能表状态位表进行格式化重置为上一版本状态位表;

根据所述格式化重置电能表进行状态位表更新并升级。

5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中包括一种电能表固件快速升级方法程序,所述电能表固件快速升级方法程序被处理器执行时,实现如权利要求1至3中任一项所述的一种电能表固件快速升级方法的步骤。

说明书 :

一种电能表固件快速升级方法、系统和可读存储介质

技术领域

[0001] 本发明涉及数据分析和处理领域,更具体的,涉及一种电能表固件快速升级方法、系统和可读存储介质。

背景技术

[0002] 电能表作为电力行业中不可或缺的组成部分,是直接面对用户的终端设备,其设备的稳定性和及时性是十分重要的参数。目前,在针对电能表的电能数据采集项目中,电能表与通讯网关的连接大多采用RS485总线、小无线或电力线载波的通讯方式。实际上,一个通讯网关大多会同时连接多个电能表,构成串行的通讯环境,而在这种串行的通讯环境下,多电能表同时与网关进行通讯,会相互发生干扰,因此通讯网关与电能表之间的通讯方式通常为逐一轮询通讯的方式。
[0003] 由于当前通讯网关与多电能表之间通讯的限制,当电能表固件需要执行在线升级时,现有的电能表固件升级方法是在通讯网关处对下挂电能表逐一下发升级命令和升级文件,升级效率低,升级所需时间与电能表数量成正比。

发明内容

[0004] 鉴于上述问题,本发明的目的是提供一种电能表固件快速升级方法、系统和可读存储介质,能够通过新的升级命令和升级文件的下发方式,提高电能表升级的效率,同时保证多表同时通讯时不产生相互干扰。
[0005] 本发明第一方面提供了一种电能表固件快速升级方法,包括以下步骤:
[0006] 加载升级文件并按照预设分包大小拆分所述升级文件,得到子升级文件包以及分包数量;
[0007] 向网关设备以广播地址为设备地址发送启动升级命令帧,使得所述网关设备基于所述广播地址将所述启动升级命令帧广播至对应电能表,由所述电能表根据所述启动升级命令帧执行升级,所述启动升级命令帧中携带有所述升级文件的版本号、所有所述子升级文件包以及所述分包数量。
[0008] 本方案中,所述向网关设备以广播地址为设备地址发送启动升级命令帧,使得所述网关设备基于所述广播地址将所述启动升级命令帧广播至对应电能表之后还包括:
[0009] 获取所述网关设备内的电能表信息,所述电能表信息包括电能表数量以及电能表设备地址;
[0010] 根据所述电能表设备地址,逐一向对应电能表发送升级确认帧;
[0011] 所述电能表根据所述启动升级命令帧执行升级后,接收由所述电能表发送的升级成功确认信息。
[0012] 本方案中,所述电能表根据所述启动升级命令帧执行升级,具体包括:
[0013] 电能表根据所述分包数量初始化文件接收状态位表;
[0014] 所述电能表根据接收的所述子升级文件包的序号,更新所述文件接收状态位表;
[0015] 若所述文件接收状态位表的所有状态位更新完毕,则所述电能表执行升级,并发送升级成功确认信息。
[0016] 本方案中,还包括:
[0017] 计算接收的子升级文件包的特征值;
[0018] 判断所述特征值是否与已接收的子升级文件包特征值存在重复;
[0019] 如果重复,则丢弃。
[0020] 本方案中,所述由所述电能表根据所述启动升级命令帧执行升级还包括:
[0021] 若所述文件接收状态位表存在状态位未更新,则所述电能表将所述文件接收状态位表返回。
[0022] 本方案中,所述若所述文件接收状态位表存在状态位未更新,则所述电能表将所述文件接收状态位表返回之后还包括:
[0023] 根据所述文件接收状态位表以及所述电能表的设备地址,将未更新状态位对应序号的所述子升级文件包向所述电能表发送,由所述电能表更新所述文件接收状态位表并返回确认信息;
[0024] 返回重新向所述电能表发送所述升级确认帧。
[0025] 本发明第二方面还提供一种电能表固件快速升级系统,包括存储器和处理器,所述存储器中包括电能表固件快速升级方法程序,所述电能表固件快速升级方法程序被所述处理器执行时实现如下步骤:
[0026] 加载升级文件并按照预设分包大小拆分所述升级文件,得到子升级文件包以及分包数量;
[0027] 向网关设备以广播地址为设备地址发送启动升级命令帧,使得所述网关设备基于所述广播地址将所述启动升级命令帧广播至对应电能表,由所述电能表根据所述启动升级命令帧执行升级,所述启动升级命令帧中携带有所述升级文件的版本号、所有所述子升级文件包以及所述分包数量。
[0028] 本方案中,所述向网关设备以广播地址为设备地址发送启动升级命令帧,使得所述网关设备基于所述广播地址将所述启动升级命令帧广播至对应电能表之后还包括:
[0029] 获取所述网关设备内的电能表信息,所述电能表信息包括电能表数量以及电能表设备地址;
[0030] 根据所述电能表设备地址,逐一向对应电能表发送升级确认帧;
[0031] 所述电能表根据所述启动升级命令帧执行升级后,接收由所述电能表发送的升级成功确认信息。
[0032] 本方案中,所述电能表根据所述启动升级命令帧执行升级,具体包括:
[0033] 电能表根据所述分包数量初始化文件接收状态位表;
[0034] 所述电能表根据接收的所述子升级文件包的序号,更新所述文件接收状态位表;
[0035] 若所述文件接收状态位表的所有状态位更新完毕,则所述电能表执行升级,并发送升级成功确认信息。
[0036] 本发明第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中包括机器的一种电能表固件快速升级方法程序,所述电能表固件快速升级方法程序被处理器执行时,实现如上述任一项所述的一种电能表固件快速升级方法的步骤。
[0037] 本发明公开的一种电能表固件快速升级方法和系统,通过采取广播的形式,将启动升级命令帧通过网关设备直接广播至收到广播地址的电能表中,使得电能表根据启动升级命令帧执行升级。本申请还通过向电能表逐一发送升级确认帧,确保电能表的升级状态,提高升级的成功率。另外,本申请基于文件接收状态位表对漏发子升级文件包的电能表定向补发相应地子升级文件包,避免子升级文件包的遗漏,保证升级的完整性。

附图说明

[0038] 图1示出了本申请一种电能表固件快速升级方法的流程图;
[0039] 图2示出了本发明一种电能表固件快速升级系统的框图。

具体实施方式

[0040] 为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
[0041] 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
[0042] 图1示出了本申请一种电能表固件快速升级方法的流程图。
[0043] 如图1所示,本申请公开了一种电能表固件快速升级方法,包括以下步骤:
[0044] S101、加载升级文件并按照预设分包大小拆分所述升级文件,得到子升级文件包以及分包数量;
[0045] S102、向网关设备以广播地址为设备地址发送启动升级命令帧,使得所述网关设备基于所述广播地址将所述启动升级命令帧广播至对应电能表,由所述电能表根据所述启动升级命令帧执行升级,所述启动升级命令帧中携带有所述升级文件的版本号、所有所述子升级文件包以及所述分包数量。
[0046] 需要说明的是,升级文件首先会以完整的文件包形式被加载,升级文件被加载后,按照预设分包大小进行拆分,可以理解的是,升级文件可被拆分为统一大小的子升级文件包,升级文件也可以被拆分为不同大小的子升级文件包,根据实际需求进行拆分。拆分得到若干数量的子升级文件包后,每个子升级文件包将按照顺序,对应序号,例如包1、包2等,一直标记至最后一个子升级文件包。子升级文件包按照序号重新组合,将形成完整的升级文件。
[0047] 需要说明的是,在加载并拆分了升级文件,得到子升级文件包以及分包数量后,向网关设备以广播地址为设备地址发送启动升级命令帧,通过网关设备将启动升级命令帧广播至所有收到广播地址的电能表,所有收到广播地址的电能表均会响应。广播地址可以由网关设备提前下发至所有电能表,也可以在确定启动升级命令帧的广播地址后,再将广播地址下发至所有电能表。启动升级命令帧中,包括完整的升级文件的版本号,拆分后所有子升级文件包以及分包数量。在网关设备将启动升级命令帧广播至电能表后,电能表接收到启动升级命令帧会执行升级指令,可以理解的是,电能表的升级可以按照子升级文件包的顺序逐一加载升级,也可以将子升级文件包按照顺序重新组合为完整升级文件后,再加载升级。
[0048] 根据本发明实施例,所述向网关设备以广播地址为设备地址发送启动升级命令帧,使得所述网关设备基于所述广播地址将所述启动升级命令帧广播至对应电能表之后还包括:
[0049] 获取所述网关设备内的电能表信息,所述电能表信息包括电能表数量以及电能表设备地址;
[0050] 根据所述电能表设备地址,逐一向对应电能表发送升级确认帧;
[0051] 所述电能表根据所述启动升级命令帧执行升级后,接收由所述电能表发送的升级成功确认信息。
[0052] 需要说明的是,网关设备内会预先存储电能表信息,电能表信息包括该网关设备所有连接的电能表数量以及电能表设备地址。与上述实施例中所述的广播地址不同,设备地址为一个电能表的唯一地址信息,一个设备地址仅对应一个电能表,而一个广播地址可以对应多个电能表。在广播下发了启动升级命令帧后,为了确保升级的成功,进一步地将根据电能表设备地址,逐一向对应电能表发送升级确认帧。在电能表根据启动升级命令帧执行升级后,电能表根据升级确认帧返回升级成功确认信息即可表示该电能表执行升级成功。可以理解的是,在启动升级命令帧广播至电能表后,电能表无需答复任何信息,只需要进行升级文件的加载升级任务,而在电能表接收到升级确认帧后,需要进行应答,响应升级确认帧同时返回升级确认信息。
[0053] 需要说明的是,电能表在广播接收到启动升级命令帧后,首先初始化电能表中的文件接收状态位表,文件接收状态位表将根据启动升级命令帧中的分包数量确定实际位数,例如,分表数量为3,则文件接收状态位表将初始化为3位表。不论文件接收状态位表在接收到启动升级命令帧之前为多少位数的文件接收状态位表,在初始化处理后,均重置为符合接下来升级要求的文件接收状态位表。
[0054] 根据本发明实施例,所述电能表根据所述启动升级命令帧执行升级,具体包括:
[0055] 电能表根据所述分包数量初始化文件接收状态位表;
[0056] 所述电能表根据接收的所述子升级文件包的序号,更新所述文件接收状态位表;
[0057] 若所述文件接收状态位表的所有状态位更新完毕,则所述电能表执行升级,并发送升级成功确认信息。
[0058] 需要说明的是,电能表初始化了文件接收状态位表后,将根据接收到的子升级文件包的序号对应更新文件接收状态位表,例如以BIT位记录对应分包序号的接收状态,或者是简单地以0、1记录子升级文件包的接收状态,0代表未接收,1代表已接收。在文件接收状态位表中,每一位状态位表代表一个相应序号的子升级文件包,在接收所有子升级文件包的过程中,子升级文件包可以是逐一按顺序发送,也可以是随机不重复发送,只需要确认子升级文件包在所有子升级文件包中的序号即可更新文件接收状态位表。
[0059] 需要说明的是,在电能表接收到升级确认帧后,检查文件接收状态位表的所有状态位是否更新完毕,若文件接收状态位表显示所有子升级文件包接收成功,则电能表执行升级并返回升级成功确认信息。
[0060] 根据本发明实施例,还包括:
[0061] 计算接收的子升级文件包的特征值;
[0062] 判断所述特征值是否与已接收的子升级文件包特征值存在重复;
[0063] 如果重复,则丢弃。
[0064] 需要说明的是,为了避免重复接收子升级文件包,需要计算子升级文件包的特征值,然后与已经接收的子升级文件包的特征值进行比较,如果重复,则说明存在重复的子升级文件包,则进行丢弃。通过本发明的方法可以提高接收和处理的效率。
[0065] 根据本发明实施例,所述由所述电能表根据所述启动升级命令帧执行升级还包括:
[0066] 若所述文件接收状态位表存在状态位未更新,则所述电能表将所述文件接收状态位表返回。
[0067] 需要说明的是,若存在文件接收状态位表中的状态位未更新,则在电能表解析完启动升级命令帧后,返回存在未更新状态位的文件接收状态位表。文件接收状态位表中对应未更新的状态位即代表该电能表没有接收成功对应序号的子升级文件包。
[0068] 根据本发明实施例,所述若所述文件接收状态位表存在状态位未更新,则所述电能表将所述文件接收状态位表返回之后还包括:
[0069] 根据所述文件接收状态位表以及所述电能表的设备地址,将未更新状态位对应序号的所述子升级文件包向所述电能表发送,由所述电能表更新所述文件接收状态位表并返回确认信息;
[0070] 返回重新向所述电能表发送所述升级确认帧。
[0071] 需要说明的是,在接收到存在状态位未更新的文件接收状态位表后,通过解析该文件接收状态位表,确认该电能表的设备地址,从而根据电能表的设备地址将遗漏的子升级文件包定向地向电能表进行发送,由电能表再次返回确认信息。电能表可以在针对每一份遗漏的子升级文件包依次返回确认信息,也可以在电能表中文件接收状态位表全部更新完毕后,一次性返回确认信息。若为第一种确认信息的返回方式,则在最后一份遗漏的子升级文件包发送并返回确认信息后,再次向电能表发送升级确认帧,若为第二种确认信息的返回方式,则在接收到返回的确认信息后,再次向电能表发送升级确认帧。
[0072] 根据本发明实施例,还包括:
[0073] 根据待升级电能表规格确认预设子升级文件包;
[0074] 根据所述预设子升级文件包计算特征值;
[0075] 根据升级后电能表更新后状态位表的接收子升级文件包特征值与所述预设子升级文件包的特征值进行项数匹配;
[0076] 所述项数匹配包括特征值序列匹配和特征值之和匹配;
[0077] 若所述项数匹配正确,则所述电能表升级成功。
[0078] 需要说明的是,为检验电能表升级成功与否,通过预设子升级文件包计算的特征值序列和特征值之和与升级后电能表更新后的状态位表的接收子升级文件包特征值序列和特征值之和进行匹配,若匹配成功则说明电能表升级成功。
[0079] 根据本发明实施例,还包括:
[0080] 若电能表文件接收状态位表存在状态位未更新,判断未更新状态位是否存在子升级文件包匹配空缺;
[0081] 若存在所述子升级文件包匹配空缺,则根据所述未更新状态位和所述电能表设备地址进行返回;
[0082] 对所述电能表状态位表进行格式化重置为上一版本状态位表;
[0083] 根据所述格式化重置电能表进行状态位表更新并升级。
[0084] 需要说明的是,若电能表文件接收状态位表存在状态位未更新,则判断未更新状态位是否存在子升级文件包不匹配情况,即出现子升级文件包匹配空缺,若存在子升级文件包匹配空缺则根据未更新状态位和电能表设备地址进行返回,对电能表状态位表进行格式化重置为上一版本状态位表,再根据格式化重置后的电能表进行状态位表更新并升级。
[0085] 根据本发明实施例,还包括:
[0086] 根据待升级电能表对应更新状态位表标记待更新状态位;
[0087] 根据所述待更新状态位对应子升级文件包编辑定位;
[0088] 根据所述编辑定位对所述对应子升级文件包的特征值进行排列生成特征值阵列;
[0089] 对所述完成升级后电能表的子升级文件包特征值与所述特征值阵列进行排列拟合,若拟合度为1则所述电能表升级成功。
[0090] 需要说明的是,根据待升级电能表对应更新状态位表标记待更新状态位,根据待更新状态位对应的子升级文件包进行编辑定位,再根据编辑定位对对应子升级文件包的特征值进行排列生成特征值阵列,根据完成升级后电能表的子升级文件包特征值与编辑定位的特征值阵列进行排列拟合,若拟合度为1则说明电能表升级成功。
[0091] 图2示出了本发明一种电能表固件快速升级系统的框图。
[0092] 如图2所示,本发明公开了一种电能表固件快速升级系统,包括存储器21和处理器22,所述存储器21中包括电能表固件快速升级方法程序,所述电能表固件快速升级方法程序被所述处理器22执行时实现如下步骤:
[0093] 加载升级文件并按照预设分包大小拆分所述升级文件,得到子升级文件包以及分包数量;
[0094] 向网关设备以广播地址为设备地址发送启动升级命令帧,使得所述网关设备基于所述广播地址将所述启动升级命令帧广播至对应电能表,由所述电能表根据所述启动升级命令帧执行升级,所述启动升级命令帧中携带有所述升级文件的版本号、所有所述子升级文件包以及所述分包数量。
[0095] 需要说明的是,升级文件首先会以完整的文件包形式被加载,升级文件被加载后,按照预设分包大小进行拆分,可以理解的是,升级文件可被拆分为统一大小的子升级文件包,升级文件也可以被拆分为不同大小的子升级文件包,根据实际需求进行拆分。拆分得到若干数量的子升级文件包后,每个子升级文件包将按照顺序,对应序号,例如包1、包2等,一直标记至最后一个子升级文件包。子升级文件包按照序号重新组合,将形成完整的升级文件。
[0096] 需要说明的是,在加载并拆分了升级文件,得到子升级文件包以及分包数量后,向网关设备以广播地址为设备地址发送启动升级命令帧,通过网关设备将启动升级命令帧广播至所有收到广播地址的电能表,所有收到广播地址的电能表均会响应。广播地址可以由网关设备提前下发至所有电能表,也可以在确定启动升级命令帧的广播地址后,再将广播地址下发至所有电能表。启动升级命令帧中,包括完整的升级文件的版本号,拆分后所有子升级文件包以及分包数量。在网关设备将启动升级命令帧广播至电能表后,电能表接收到启动升级命令帧会执行升级指令,可以理解的是,电能表的升级可以按照子升级文件包的顺序逐一加载升级,也可以将子升级文件包按照顺序重新组合为完整升级文件后,再加载升级。
[0097] 根据本发明实施例,所述向网关设备以广播地址为设备地址发送启动升级命令帧,使得所述网关设备基于所述广播地址将所述启动升级命令帧广播至对应电能表之后还包括:
[0098] 获取所述网关设备内的电能表信息,所述电能表信息包括电能表数量以及电能表设备地址;
[0099] 根据所述电能表设备地址,逐一向对应电能表发送升级确认帧;
[0100] 所述电能表根据所述启动升级命令帧执行升级后,接收由所述电能表发送的升级成功确认信息。
[0101] 需要说明的是,网关设备内会预先存储电能表信息,电能表信息包括该网关设备所有连接的电能表数量以及电能表设备地址。与上述实施例中所述的广播地址不同,设备地址为一个电能表的唯一地址信息,一个设备地址仅对应一个电能表,而一个广播地址可以对应多个电能表。在广播下发了启动升级命令帧后,为了确保升级的成功,进一步地将根据电能表设备地址,逐一向对应电能表发送升级确认帧。在电能表根据启动升级命令帧执行升级后,电能表根据升级确认帧返回升级成功确认信息即可表示该电能表执行升级成功。可以理解的是,在启动升级命令帧广播至电能表后,电能表无需答复任何信息,只需要进行升级文件的加载升级任务,而在电能表接收到升级确认帧后,需要进行应答,响应升级确认帧同时返回升级确认信息。
[0102] 需要说明的是,电能表在广播接收到启动升级命令帧后,首先初始化电能表中的文件接收状态位表,文件接收状态位表将根据启动升级命令帧中的分包数量确定实际位数,例如,分表数量为3,则文件接收状态位表将初始化为3位表。不论文件接收状态位表在接收到启动升级命令帧之前为多少位数的文件接收状态位表,在初始化处理后,均重置为符合接下来升级要求的文件接收状态位表。
[0103] 根据本发明实施例,所述电能表根据所述启动升级命令帧执行升级,具体包括:
[0104] 电能表根据所述分包数量初始化文件接收状态位表;
[0105] 所述电能表根据接收的所述子升级文件包的序号,更新所述文件接收状态位表;
[0106] 若所述文件接收状态位表的所有状态位更新完毕,则所述电能表执行升级,并发送升级成功确认信息。
[0107] 需要说明的是,电能表初始化了文件接收状态位表后,将根据接收到的子升级文件包的序号对应更新文件接收状态位表,例如以BIT位记录对应分包序号的接收状态,或者是简单地以0、1记录子升级文件包的接收状态,0代表未接收,1代表已接收。在文件接收状态位表中,每一位状态位表代表一个相应序号的子升级文件包,在接收所有子升级文件包的过程中,子升级文件包可以是逐一按顺序发送,也可以是随机不重复发送,只需要确认子升级文件包在所有子升级文件包中的序号即可更新文件接收状态位表。
[0108] 需要说明的是,在电能表接收到升级确认帧后,检查文件接收状态位表的所有状态位是否更新完毕,若文件接收状态位表显示所有子升级文件包接收成功,则电能表执行升级并返回升级成功确认信息。
[0109] 根据本发明实施例,还包括:
[0110] 计算接收的子升级文件包的特征值;
[0111] 判断所述特征值是否与已接收的子升级文件包特征值存在重复;
[0112] 如果重复,则丢弃。
[0113] 需要说明的是,为了避免重复接收子升级文件包,需要计算子升级文件包的特征值,然后与已经接收的子升级文件包的特征值进行比较,如果重复,则说明存在重复的子升级文件包,则进行丢弃。通过本发明的方法可以提高接收和处理的效率。
[0114] 根据本发明实施例,所述由所述电能表根据所述启动升级命令帧执行升级还包括:
[0115] 若所述文件接收状态位表存在状态位未更新,则所述电能表将所述文件接收状态位表返回。
[0116] 需要说明的是,若存在文件接收状态位表中的状态位未更新,则在电能表解析完启动升级命令帧后,返回存在未更新状态位的文件接收状态位表。文件接收状态位表中对应未更新的状态位即代表该电能表没有接收成功对应序号的子升级文件包。
[0117] 根据本发明实施例,所述若所述文件接收状态位表存在状态位未更新,则所述电能表将所述文件接收状态位表返回之后还包括:
[0118] 根据所述文件接收状态位表以及所述电能表的设备地址,将未更新状态位对应序号的所述子升级文件包向所述电能表发送,由所述电能表更新所述文件接收状态位表并返回确认信息;
[0119] 返回重新向所述电能表发送所述升级确认帧。
[0120] 需要说明的是,在接收到存在状态位未更新的文件接收状态位表后,通过解析该文件接收状态位表,确认该电能表的设备地址,从而根据电能表的设备地址将遗漏的子升级文件包定向地向电能表进行发送,由电能表再次返回确认信息。电能表可以在针对每一份遗漏的子升级文件包依次返回确认信息,也可以在电能表中文件接收状态位表全部更新完毕后,一次性返回确认信息。若为第一种确认信息的返回方式,则在最后一份遗漏的子升级文件包发送并返回确认信息后,再次向电能表发送升级确认帧,若为第二种确认信息的返回方式,则在接收到返回的确认信息后,再次向电能表发送升级确认帧。
[0121] 根据本发明实施例,还包括:
[0122] 根据待升级电能表规格确认预设子升级文件包;
[0123] 根据所述预设子升级文件包计算特征值;
[0124] 根据升级后电能表更新后状态位表的接收子升级文件包特征值与所述预设子升级文件包的特征值进行项数匹配;
[0125] 所述项数匹配包括特征值序列匹配和特征值之和匹配;
[0126] 若所述项数匹配正确,则所述电能表升级成功。
[0127] 需要说明的是,为检验电能表升级成功与否,通过预设子升级文件包计算的特征值序列和特征值之和与升级后电能表更新后的状态位表的接收子升级文件包特征值序列和特征值之和进行匹配,若匹配成功则说明电能表升级成功。
[0128] 根据本发明实施例,还包括:
[0129] 若电能表文件接收状态位表存在状态位未更新,判断未更新状态位是否存在子升级文件包匹配空缺;
[0130] 若存在所述子升级文件包匹配空缺,则根据所述未更新状态位和所述电能表设备地址进行返回;
[0131] 对所述电能表状态位表进行格式化重置为上一版本状态位表;
[0132] 根据所述格式化重置电能表进行状态位表更新并升级。
[0133] 需要说明的是,若电能表文件接收状态位表存在状态位未更新,则判断未更新状态位是否存在子升级文件包不匹配情况,即出现子升级文件包匹配空缺,若存在子升级文件包匹配空缺则根据未更新状态位和电能表设备地址进行返回,对电能表状态位表进行格式化重置为上一版本状态位表,再根据格式化重置后的电能表进行状态位表更新并升级。
[0134] 根据本发明实施例,还包括:
[0135] 根据待升级电能表对应更新状态位表标记待更新状态位;
[0136] 根据所述待更新状态位对应子升级文件包编辑定位;
[0137] 根据所述编辑定位对所述对应子升级文件包的特征值进行排列生成特征值阵列;
[0138] 对所述完成升级后电能表的子升级文件包特征值与所述特征值阵列进行排列拟合,若拟合度为1则所述电能表升级成功。
[0139] 需要说明的是,根据待升级电能表对应更新状态位表标记待更新状态位,根据待更新状态位对应的子升级文件包进行编辑定位,再根据编辑定位对对应子升级文件包的特征值进行排列生成特征值阵列,根据完成升级后电能表的子升级文件包特征值与编辑定位的特征值阵列进行排列拟合,若拟合度为1则说明电能表升级成功。
[0140] 本发明第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中包括机器的一种电能表固件快速升级方法程序,所述电能表固件快速升级方法程序被处理器执行时,实现如上述任一项所述的一种电能表固件快速升级方法的步骤。
[0141] 本发明公开的一种电能表固件快速升级方法、系统和可读存储介质,通过采取广播的形式,将启动升级命令帧通过网关设备直接广播至收到广播地址的电能表中,使得电能表根据启动升级命令帧执行升级。本申请还通过向电能表逐一发送升级确认帧,确保电能表的升级状态,提高升级的成功率。另外,本申请基于文件接收状态位表对漏发子升级文件包的电能表定向补发相应地子升级文件包,避免子升级文件包的遗漏,保证升级的完整性。
[0142] 在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0143] 上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0144] 另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0145] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0146] 或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。