发明内容
本发明要解决的技术问题在于,针对上述PLC固件升级缺乏断电处理等问题,提供一种PLC固件升级系统及方法。
本发明解决上述技术问题的技术方案是,提供一种PLC固件升级系统,包括升级判断单元、系统升级单元、升级启动单元以及位于非易失性存储器中的升级标识,其中:所述升级判断单元,用于判断升级标识是否有效并在升级标识无效时启动PLC系统处理PLC任务,该升级判断单元在PLC上电启动时自动执行;所述系统升级单元,用于在所述升级标识有效时接收升级数据及使用所述升级数据更新PLC系统程序,并在数据更新完成后将所述升级标识设为无效及启动更新后PLC系统处理PLC任务;所述升级启动单元,用于在接收到固件升级指令时使PLC系统中断PLC任务及将升级标识设为有效,并启动升级判断单元;所述升级标识为非易失性存储器中的一个字段。
在本发明所述的PLC固件升级系统中,所述升级启动单元包括指令接收子单元、权限验证子单元、系统中断子单元以及标识设置子单元;所述指令接收子单元用于接收固件升级指令及升级校验码;所述权限验证子单元用于通过预存的校验码对升级校验码进行验证;所述系统中断子单元用于在升级校验码验证通过后使PLC系统中断PLC任务;所述标识设置子单元用于在升级校验码验证通过后将升级标识设置为有效,并启动升级判断单元。
在本发明所述的PLC固件升级系统中,所述系统升级单元包括标签验证子单元、数据接收子单元、数据更新子单元以及标识修改子单元;所述标签验证子单元用于从控制终端接收更新数据的标签信息并验证该标签信息;所述数据接收子单元用于在所述标签信息验证通过后接收升级数据;所述数据更新子单元用于使用所述升级数据更新PLC系统;标识修改子单元用于在系统更新完成后将升级标识修改为无效,并启动更新后的PLC系统。
在本发明所述的PLC固件升级系统中,所述升级启动单元还包括标签保存子单元,用于保存当前运行的PLC系统的标签信息;所述标签验证子单元根据标签保存子单元保存的标签信息验证从控制终端接收的标签信息。
在本发明所述的PLC固件升级系统中,所述系统升级单元通过串口、USB接口或者无线网络从控制终端接收加密的升级数据。
本发明还提供一种PLC固件升级方法,包括以下步骤:
(a)PLC上电启动;
(b)PLC判断升级标识是否有效,并在所述升级标识有效时执行步骤(c),否则执行步骤(d),所述升级标识位于非易失性存储器中,并为非易失性存储器中的一个字段;
(c)所述PLC接收升级数据并使用所述升级数据更新PLC系统程序,在更新完成后擦除所述升级标识并执行步骤(d);
(d)所述PLC执行PLC任务并在接收到固件升级指令后使PLC系统中断PLC任务及将升级标识设置为有效,然后执行步骤(a)。
在本发明所述的PLC固件升级方法中,所述步骤(d)中,所述PLC在接收到固件升级指令后对升级权限进行验证并在升级权限验证通过后使PLC系统中断PLC任务及将升级标识设置为有效。
在本发明所述的PLC固件升级方法中,所述步骤(b)包括:
(b1)所述PLC接收并验证标签信息,在所述标签信息验证通过后执行步骤(c),否则升级失败。
在本发明所述的PLC固件升级方法中,所述步骤(d)中包括:保存当前运行的PLC系统的标签信息,所述步骤(b1)中根据保存的标签信息验证接收的升级数据的标签信息。
在本发明所述的PLC固件升级方法中,所述步骤(c)中,PLC通过串口、USB接口或者无线网络从控制终端接收加密的升级数据。
本发明的PLC固件升级系统及方法,通过升级标识并在PLC上电启动时判断升级标识是否有效来启动固件升级过程,保证了固件升级过程中突然断电等异常情况恢复后重新开始升级。本发明还提供添加PLC系统的标签信息保证了升级数据和待升级PLC系统的一致性,有效防止误升级问题的产生。并且,本发明通过固件升级校验码来限制升级权限,可防止误操作的发生。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明适用于基于微处理器的PLC产品的固件升级,该PLC包括PLC系统和独立于PLC系统的用于固件升级的升级引导系统(BootLoader),其中PLC系统具有PLC产品的全部功能,而升级引导系统主要进行PLC系统软件的升级。在PLC上电启动后首先进入升级引导系统,判断升级标志(或者升级引脚),如果有效则开始固件升级过程,否则跳转到PLC系统运行。
如图1所示,是本发明PLC固件升级系统实施例的示意图。本发明的固件升级系统包括升级引导系统以及升级启动单元,其中升级引导系统独立于用于执行PLC任务的PLC系统,其在PLC上电启动时载入PLC的处理器运行。上述升级引导系统包括升级标识、升级判断单元11、系统升级单元13。上述升级判断单元11、系统升级单元13以及升级启动单元12由运行于PLC的处理器的软件实现。
升级标识为PLC的存储装置(非易失存储器,可掉电存储)中的一个字段,当该字段的值为预设值时升级标识有效,否则升级标识无效。
升级判断单元11用于判断升级标识是否有效并在升级标识无效时(即升级标识非预设值)启动PLC系统执行PLC任务、在升级标识有效(即升级标识为预设值)时启动系统升级单元13进行系统升级。该升级判断单元11在PLC上电启动时自动执行。由于升级判断单元11在上电启动时即执行,因此在PLC升级异常(例如在固件升级过程中断电等)并恢复后自动重新进入固件升级操作。
在实际应用中,上述升级标识也可用升级引脚代替,即升级判断单元11在判断升级引脚是否有效,并根据升级引脚是否有效来进行相应操作。
系统升级单元13用于在升级标识有效时接收升级数据及使用升级数据更新PLC系统程序。该系统升级单元13在数据更新完成(即固件升级完成)后将升级标识设为无效,然后启动更新后的PLC系统工作,执行PLC任务。
具体地,升级数据可以通过连接升级服务器、官方网站下载对应的升级包等途径获得(例如通过具有PLC控制软件的控制终端下载)。升级数据可使用算法加密,并通过串口、USB甚至无线网络等通讯方式从控制终端接收。上述控制终端可以为个人电脑(PC)。
在PLC系统正常运行过程中,升级启动单元12在接收到固件升级指令时使PLC系统中断PLC任务处理及将升级标识设为有效,并启动升级判断单元11开始固件升级操作。
如图2所示,是图1中升级启动单元12的实施例的示意图。该升级启动单元12包括指令接收子单元121、权限验证子单元122、系统中断子单元123以及标识设置子单元124。上述指令接收子单元121、权限验证子单元122、系统中断子单元123以及标识设置子单元124由运行于PLC的处理器的软件实现。
指令接收子单元121用于接收固件升级指令及升级校验码(该固件升级指令及升级校验码由与PLC连接的控制终端发送)。升级校验码可通过控制终端的人机界面输入,用于进行升级权限验证。
权限验证子单元122用于通过预存的校验码对升级校验码进行验证。上述预存的校验码存储于PLC的非易失存储器中。若指令接收子单元121接收的升级校验码与预存的校验码匹配,则升级权限验证通过。
系统中断子单元123用于在升级校验码验证通过后使PLC系统中断操作,停止相应的处理。
标识设置子单元124用于在升级校验码验证通过后将升级标识设置为有效,并启动升级判断单元11。
如图3所示,是图1中系统升级单元13实施例的示意图。该系统升级单元13包括标签验证子单元131、数据接收子单元132、数据更新子单元133以及标识修改子单元134。上述签验证子单元131、数据接收子单元132、数据更新子单元133以及标识修改子单元134由运行于PLC的处理器的软件实现。
标签验证子单元131用于从控制终端接收更新数据的标签信息并验证该标签信息。该标签验证子单元131可通过存储在PLC的非易失存储器中的标签信息对接收的标签信息进行验证。上述从控制终端接收的标签信息可包括更新后的PLC系统程序的版本号、使用环境、PLC型号等。而PLC中预存的标签信息则为当前PLC系统的版本号、使用环境、PLC型号等。只有当接收的标签信息中的PLC型号与预存标签信息中的PLC型号相同、接收的标签信息中的使用环境与预存标签信息中的使用环境相同时,标签验证子单元131才确认通过标签信息验证。
数据接收子单元132用于在标签信息验证通过后接收升级数据;数据更新子单元133用于使用接收的升级数据更新PLC系统。该过程与现有的PLC升级过程类似,该过程中可包括升级数据完整性校验等。
标识修改子单元134用于在系统更新完成后将升级标识修改为无效,并启动更新后的PLC系统。标识修改子单元134还可在标签验证未通过时将升级标识修改为无效,通知与PLC通讯的控制终端标签信息不匹配升级失败,并启动原有的PLC系统。
上述的升级启动单元12还可包括标签保存子单元,用于保存当前运行的PLC系统的标签信息(存储到非易失存储器中)。标签验证子单元131即根据标签保存子单元保存的标签信息验证从控制终端接收的标签信息。该标签保存子单元可在PLC系统固件升级启动前保存标签信息,也可在PLC系统运行过程中保存标签信息。
如图4所示,是本发明PLC固件升级方法实施例的示意图,包括以下步骤:
步骤S41:PLC上电启动。
步骤S42:PLC判断升级标识是否有效,并在升级标识有效时执行步骤S43,否则执行步骤S44。上述升级标识为PLC的存储装置(非易失存储器,可掉电存储)中的一个字段,当该字段的值为预设值时升级标识有效,否则升级标识无效。
步骤S43:PLC接收升级数据并使用升级数据更新PLC系统程序,在更新完成后擦除所述升级标识并执行步骤S44。具体地,升级数据可以通过连接升级服务器、官方网站下载对应的升级包等途径获得(例如通过具有PLC控制软件的控制终端下载)。且升级数据可使用算法加密,并通过串口、USB甚至无线网络等通讯方式从控制终端接收。
在该步骤中,在接收升级数据前可包括标签信息验证步骤,即接收并验证标签信息(包括升级数据的版本号、使用环境、PLC型号等),在标签信息验证通过后进行固件升级,否则执行步骤S44。
步骤S44:启动PLC系统,执行PLC任务。
步骤S45:PLC判断是否接收到固件升级指令,并在接收到固件升级指令后使PLC系统中断PLC任务及将升级标识设置为有效,然后执行步骤S41。
在该步骤中,PLC在接收到固件升级指令后对升级权限进行验证并在升级权限验证通过后使PLC系统中断PLC任务及将升级标识设置为有效。
在上述步骤S45中,还可包括:保存运行的PLC系统的标签,从而在进行标签信息验证中可根据保存的系统标签验证接收的标签信息。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。