CN107315656A - 多内核的嵌入式plc软件恢复方法和plc - Google Patents
多内核的嵌入式plc软件恢复方法和plc Download PDFInfo
- Publication number
- CN107315656A CN107315656A CN201710439054.1A CN201710439054A CN107315656A CN 107315656 A CN107315656 A CN 107315656A CN 201710439054 A CN201710439054 A CN 201710439054A CN 107315656 A CN107315656 A CN 107315656A
- Authority
- CN
- China
- Prior art keywords
- kernel
- main
- sub
- main kernel
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种多内核的嵌入式PLC软件恢复方法和PLC,此方法,包括:所述嵌入式PLC包括多个内核,所述多个内核包括至少一个主内核和至少一个子内核;所述方法包括:当主内核检测到所述子内核发生异常时,所述主内核向所述子内核发送升级指示消息,升级指示消息中包括所述子内核的恢复程序,子内核的恢复程序存储在所述主内核的存储器备份区中;子内核根据所述升级指示消息进行程序升级;当主内核发生异常时,主内核进行自恢复;当主内核自恢复失败时,所述主内核通过所述子内核进行***恢复。本发明实现了多内核嵌入式PLC中多内核及多内核间的程序恢复,避免了由于软件失效引起的设备故障,提高了多内核嵌入式PLC的可靠性和稳定性。
Description
技术领域
本发明涉及工业控制技术领域,尤其涉及一种多内核的嵌入式PLC软件恢复方法和PLC。
背景技术
为了提高程序的开发效率,充分结合可编程逻辑控制器(Programmable LogicController,PLC)和专用控制器的优势,目前最新的技术是开发嵌入式PLC。嵌入式PLC是指:通过PLC平台的开发、移植,使得嵌入式控制***具备了PLC的功能。
随着我国高端装备制造业的发展,嵌入式PLC的性能需求也水涨船高。当嵌入式PLC中设置有多个内核时,在文件操作过程中、程序升级过程中,或者存储介质出现坏块等情况时,都可能造成文件或程序的损坏,这就需要对多个内核进行程序恢复。现有的嵌入式PLC***一般采用在单内核中进行程序备份来实现***的恢复功能。
但是在嵌入式PLC***的单内核中进行程序备份,很难实现多内核及多内核间的程序恢复操作,从而导致多内核的嵌入式PLC的稳定性不佳。
发明内容
本发明提供一种多内核的嵌入式PLC软件恢复方法和PLC,以实现多内核及多内核间的程序恢复操作,提升多内核嵌入式PLC的稳定性和可靠性。
第一方面,本发明实施例提供一种多内核的嵌入式PLC软件恢复方法,所述方法应用在多内核的嵌入式可编程逻辑控制器PLC中,所述嵌入式可编程逻辑控制器控制器PLC包括至少一个主内核和至少一个子内核,其特征在于,所述方法包括:
当所述主内核检测到所述子内核发生异常时,所述主内核向所述子内核发送升级指示消息,所述升级指示消息中包括所述子内核的恢复程序,所述子内核的恢复程序存储在所述主内核的存储器备份区中;
所述子内核根据所述升级指示消息进行程序升级;
当所述主内核发生异常时,所述主内核进行自恢复;
当所述主内核自恢复失败时,所述主内核通过所述子内核进行***恢复。
可选地,所述主内核通过所述子内核进行***恢复,包括:
所述主内核向所述子内核发送***恢复请求消息;
所述子内核根据所述***恢复请求消息通过继电器对所述主内核进行断电重启。
可选地,所述主内核通过所述子内核进行***恢复,包括:
所述子内核在满足预设条件时,通过继电器对所述主内核进行断电重启。
可选地,在所述主内核M次断电重启失败后,M为预设的是最大重启次数,还包括:
所述子内核拉低所述主内核的特定引脚的电平,并给所述主内核上电;
当所述主内核在启动过程中检测到所述特定引脚的电平为低电平时,强制从FLASH的备份分区启动***;
***成功启动之后,所述主内核从所述主内核的存储器的备份区中读取所述主内核的恢复程序,根据所述恢复文件进行***恢复,所述主内核的存储器的备份区预先存储有所述主内核的恢复程序。
可选地,所述主内核通过所述子内核进行***恢复,包括:
所述主内核向所述子内核发送***恢复请求消息或者心跳报文;
当所述子内核接收到所述***恢复请求消息或者在预设时间内没有接收到所述主内核发送的心跳报文时,所述子内核拉低所述主内核的特定引脚的电平,并给所述主内核上电;
当所述主内核在启动过程中检测到所述特定引脚的电平为低电平时,强制从FLASH的备份分区启动***;
***成功启动之后,所述主内核从所述主内核的存储器的备份区中读取所述主内核的恢复程序,根据所述恢复文件进行***恢复,所述主内核的存储器的备份区预先存储有所述主内核的恢复程序。
可选地,所述当所述主内核发生异常时,所述主内核进行自恢复,包括:
所述主内核进行如下至少一种恢复操作:
所述主内核从所述主内核的存储器备份区中拷贝备份的配置文件,将所述备份的配置文件覆盖原有的配置文件;
所述主内核重启故障的应用程序;
若所述故障应用程序重启失败,从所述主内核的存储器备份区中拷贝所述故障应用程序的备份程序至执行目录下,运行所述备份的应用程序。
可选地,所述预设条件包括:所述子内核在预设时间内没有接收到所述主内核发送的心跳报文,所述通过继电器对所述主内核进行断电重启,包括:
所述子内核的应用程序将断电重启标志位置位;
当所述子内核的引擎程序检测到所述断电重启标志位被置位时,通过继电器对所述主内核进行断电重启。
可选地,所述主内核进行自恢复之前,还包括:
所述主内核的所有应用程序向监视程序发送心跳信息;
如果所述监视程序在预设时间内没有接收到任一应用程序发送的心跳报文,则确定所述主内核发生异常。
可选地,所述主内核向所述子内核发送升级指示消息之前,还包括:
所述主内核定期向所述子内核发送心跳报文;
当所述主内核连续N次没有接收到所述子内核发送的所述心跳报文的响应报文时,所述主内核确定所述子内核发生异常,其中,N为大于等于1的整数。
第二方面,本发明实施例提供一种多内核的嵌入式可编程逻辑控制器PLC,包括:至少一个主内核和至少一个子内核;所述主内核用于执行第一方面中任一项所述的方法中主内核执行的步骤;
所述子内核用于执行第一方面中任一项所述的方法中子内核执行的步骤。
本发明,应用在多内核的嵌入式PLC中,所述嵌入式PLC包括至少一个主内核和至少一个子内核,通过主内核与子内核之间相互检测确定所述主内核和所述子内核是否处于异常状态,当所述主内核检测到所述子内核发生异常时,通过所述主内核发送的升级指示消息使得子内核进行程序升级。当主内核发生异常时,首先进行主内核的自恢复,若所述主内核自恢复失败,则通过子内核使得所述主内核进行***恢复。本实施例实现了多内核嵌入式PLC中多内核及多内核间的程序恢复,避免了由于软件失效引起的设备故障,提高了多内核嵌入式PLC的可靠性和稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的多内核的嵌入式PLC的结构示意图;
图2为本发明实施例二提供的多内核的嵌入式PLC的结构示意图;
图3为本发明实施例三提供的多内核的嵌入式PLC的结构示意图;
图4为本发明实施例一提供的多内核的嵌入式PLC软件恢复方法的流程图;
图5为本发明实施例二提供的多内核的嵌入式PLC软件恢复方法的流程图;
图6为本发明实施例三提供的多内核的嵌入式PLC软件恢复方法的流程图;
图7为本发明实施例四提供的多内核的嵌入式PLC软件恢复方法的流程图;
图8为本发明实施例五提供的多内核的嵌入式PLC软件恢复方法的流程图;
图9为本发明实施例一提供的多内核的嵌入式PLC的FLASH分区结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例一提供的多内核的嵌入式PLC的结构示意图,如图1所示,本实施例中多内核的嵌入式PLC包括:至少一个主内核10和至少一个子内核20。
本实施例中,子内核20可以是完成基本功能的芯片,例如ARM Cortex M3,不采用任何操作***,直接面向芯片开发,通过看门狗保证其稳定运行。本实施例以ARM CortexM3芯片作为子内核的芯片为例进行说明,但是本实施例不限于此。主内核10负责对数据进行分析和处理、告警上报、网络通信、通过WebService提供服务等功能,因此主内核10采用资源丰富的嵌入式芯片(例如ARM 9),能够运行嵌入式操作***。
图2为本发明实施例二提供的多内核的嵌入式PLC的结构示意图,如图2所示,本实施例中多内核的嵌入式PLC在图6所示多内核的嵌入式PLC的基础上,还可以包括:继电器30,子内核20可以通过继电器30控制主内核10电源的开启和关闭。
本实施例中,子内核20和主内核10之间由通信链路连接(如串口或以太网),子内核20通过继电器30能控制主内核10的供电回路,达到断电重启主内核10的目的。
图3为本发明实施例三提供的多内核的嵌入式PLC的结构示意图,如图3所示,多内核的嵌入式PLC的主内核10包括:监视程序11、***程序12、UBoot程序13;子内核20包括:引擎程序21、应用程序22、引导程序23。图3中P1、P2、…Pn表示主内核10中安装的n个应用程序。主内核10中的n个应用程序定期向监视程序11发送心跳信息。主内核10的监视程序11定期向子内核20的应用程序发送心跳报文。子内核20的引擎程序21通过继电器30控制主内核10供电电源的开启和关闭。
本实施例中,子内核20的软件包括引导程序23、引擎程序21和应用程序22三部分。其中引导程序23是固化在子内核20中,在使用过程中引导程序23是无法被修改的,因此具有很高的稳定性。引擎程序21负责硬件资源初始化、任务调度、定时器等功能,也是相对比较稳定的。应用程序22是为了满足应用需要而开发的,主要是为了接入各类传感器及智能设备,变动和升级相对比较频繁。由于子内核20采用了资源有限的芯片,无法缓存整个升级文件并校验,而采用了对接受到的程序块直接写入FLASH的操作。因此在升级过程中出现断电或其他的意外情况,将导致升级失败,***无法正常工作。主内核10包括***程序12、监视程序11、应用程序及配置文件。通过3G/4G无线或有线网络连接,响应外部的通信请求,频繁的文件操作和为了适应场景变化而进行的升级操作,以及FLASH坏块都有可能造成应用软件或***无法正常工作。监视程序11负责监视应用程序发送的心跳信息以及和子内核20之间保持心跳报文的传输与响应。所有主内核10的应用程序向监视程序11发送心跳信息,监视程序11向子内核20发送心跳报文,子内核20收到来自主内核10的心跳报文后,返回一条应答报文,保持内核间的心跳信息,能感知彼此的工作状态。
图4为本发明实施例一提供的多内核的嵌入式PLC软件恢复方法的流程图,如图4所示,本实施例的方法应用在图1-图3所示的多内核的嵌入式PLC包括:
S101、当主内核检测到子内核发生异常时,主内核向子内核发送升级指示消息,升级指示消息中包括子内核的恢复程序,子内核的恢复程序存储在主内核的存储器备份区中。
本实施例中,嵌入式PLC中的主内核检测子内核是否发生异常,若判定子内核处于异常状态,则可以通过无线或者有线通讯方式向子内核发送升级指示消息,升级指示消息用于指示子内核进行程序升级(程序恢复为最新版本)。其中,升级指示消息中包括子内核的恢复程序,子内核的恢复程序存储在主内核的存储器备份区中(在嵌入式PLC中,首先要在主内核的存储器备份区中对所有子内核的恢复程序进行备份)。例如在嵌入式PLC出厂时,在主内核的存储区(例如安全数字卡Secure Digital card,SD卡)中保存了一个完整的***镜像,包括操作***文件及所有的软件和配置文件。需要说明的是出厂时备份的完整的***镜像是指主内核的***文件,子内核的应用程序是以二进制文件形式备份在主内核存储区中。同时在存储区建立一个备份区,主要用于保存升级文件和更改后的配置文件信息,即在备份区中总是保留了最新的应用程序文件和配置文件。通过一个描述文件描述备份的文件信息,包括配置文件或软件的名称、版本号及MD5码(消息摘要算法5,message-digest algorithm 5)等。
S102、子内核根据升级指示消息进行程序升级。
本实施例中,子内核接收主内核发送的升级指示消息,获取升级指示消息中的恢复程序。例如子内核保存升级指示消息中的恢复程序写入子内核的FLASH中,通过FLASH中写入的恢复程序对子内核中的程序进行升级。本实施例中以ARM Cortex M3作为子内核芯片为例进行说明,但是本发明不限于此。采用ARM Cortex M3芯片的子内核不采用任何操作***,采用ARM Cortex M3芯片的子内核可以包括:引导程序、引擎程序和应用程序,能够直接面向芯片开发,通过看门狗保证子内核的稳定运行。例如,当子内核的引擎程序或应用程序由于损坏而无法正常工作时,将引发异常中断并进入异常处理函数,最终通过子内核的看门狗复位程序。
可选地,在子内核启动过程中,引导程序可以接受来自主内核发送的升级请求。且主内核的监视程序定时向子内核发送心跳报文,当超过设定次数(可配置)无法收到子内核的心跳响应报文后,按照一定时间间隔定时发送升级请求报文,当收到来自子内核的应答信息后,进入子内核的升级流程,将保存在主内核备份区中的子内核对应的引擎程序和应用程序按块发送给子内核,子内核的引导程序对接收到的程序块进行校验,校验通过后写入FLASH中。
S103、当主内核发生异常时,主内核进行自恢复。
本实施例中,当主内核中的程序由于各种原因无法正常工作时,例如FLASH坏块、应用程序或者操作***故障等造成主内核中的软件无法正常工作的情况发生时,主内核需要进行自恢复操作。本实施例中以ARM 9作为主内核的芯片为例进行说明,但是本发明不限于此。采用ARM 9芯片的主内核中包括:操作***、监视程序、应用程序和配置文件。主内核的自恢复包括对应用程序的恢复和/或配置文件的恢复。
S104、当主内核自恢复失败时,主内核通过子内核进行***恢复。
本实施例中,当主内核的自恢复失败时(例如通过从备份目录下拷贝备份的应用程序到执行目录下,并启动运行应用程序,但是应用程序依然无法向监视程序发送心跳信息时,则认为主内核的自恢复失败),从而需要借助子内核对主内核进行***恢复,例如通过子内核向主内核施加断电信号,以使主内核进行断电重启,在重启成功后,一般认为主内核的***进行了恢复。当出现达到预设最大重启次数后,主内核依然处于异常状态时,则可以通过子内核触发主内核强制从存储有备份***的备份区启动***,完成对主内核***的恢复。
本实施例,应用在多内核的嵌入式PLC中,嵌入式PLC包括至少一个主内核和至少一个子内核,通过主内核与子内核之间相互检测确定主内核和子内核是否处于异常状态,当主内核检测到子内核发生异常时,通过主内核发送的升级指示消息使得子内核进行程序升级。当主内核发生异常时,首先进行主内核的自恢复,若主内核自恢复失败,则通过子内核使得主内核进行***恢复。本实施例实现了多内核嵌入式PLC中多内核及多内核间的程序恢复,避免了由于软件失效引起的设备故障,提高了多内核嵌入式PLC的可靠性和稳定性。
图5为本发明实施例二提供的多内核的嵌入式PLC软件恢复方法的流程图,如图5所示,本实施例的方法应用在多内核的嵌入式PLC中,嵌入式PLC包括至少一个主内核和至少一个子内核;本实施例的方法可以包括:
S201、当主内核检测到子内核发生异常时,主内核向子内核发送升级指示消息,升级指示消息中包括子内核的恢复程序,子内核的恢复程序存储在主内核的存储器备份区中。
S202、子内核根据升级指示消息进行程序升级。
S203、当主内核发生异常时,主内核进行自恢复。
本实施例S201-S203的具体实现过程参见图4所示方法中的相关描述,此处不再赘述。
S204、当主内核自恢复失败时,主内核向子内核发送***恢复请求消息。
本实施例中,当主内核通过对配置文件和/或应用程序的恢复操作失败时,主内核向子内核发送***恢复请求消息。例如,主内核可以定时通过向子内核发送***恢复请求消息。
S205、子内核根据***恢复请求消息通过继电器对主内核进行断电重启。
本实施例中,当子内核接收到主内核发送的***恢复请求消息后,控制继电器给主内核进行断电重启。当主内核断电重启后,可以通过主内核的监视程序和子内核来检测主内核是否恢复成功,例如在监视程序能够收到主内核应用程序发送的心跳信息时,则可以判定主内核的应用程序重启成功。例如子内核能够定时收到主内核监视程序发送的心跳报文时,则可以判定主内核***恢复成功。
本实施例,通过主内核与子内核之间相互检测确定主内核和子内核是否处于异常状态,当主内核检测到子内核发生异常时,通过主内核发送的升级指示消息使得子内核进行程序升级。当主内核发生异常时,首先进行主内核的自恢复,若主内核自恢复失败,则利用子内核通过继电器使得主内核进行断电重启。本实施例实现了多内核嵌入式PLC中多内核及多内核间的程序恢复,避免了由于软件失效引起的设备故障,提高了多内核嵌入式PLC的可靠性和稳定性。
图6为本发明实施例三提供的多内核的嵌入式PLC软件恢复方法的流程图,如图6所示,本实施例的方法应用在多内核的嵌入式PLC中,嵌入式PLC包括至少一个主内核和至少一个子内核;本实施例的方法可以包括:
S301、当主内核检测到子内核发生异常时,主内核向子内核发送升级指示消息,升级指示消息中包括子内核的恢复程序,子内核的恢复程序存储在主内核的存储器备份区中。
S302、子内核根据升级指示消息进行程序升级。
S303、当主内核发生异常时,主内核进行自恢复。
本实施例S301-S303的具体实现过程参见图4所示方法中的相关描述,此处不再赘述。
S304、当主内核恢复失败时,子内核在满足预设条件时,通过继电器对主内核进行断电重启。
本实施例中,可以通过对子内核设定预设的条件,当满足预设的条件时,子内核通过控制继电器来使得主内核进行断电重启。例如可以将子内核超过预设时间未收到主内核发送的心跳报文的情况作为一个预设条件,当子内核中的计时器计算未收到主内核发送的心跳报文的时间达到预设时间时,则子内核向继电器发送断电重启信号。需要说明的是,本发明不限定预设的条件的具体内容,也就是说预设的条件可以根据实际使用的需要进行设定。
本实施例,通过主内核与子内核之间相互检测确定主内核和子内核是否处于异常状态,当主内核检测到子内核发生异常时,通过主内核发送的升级指示消息使得子内核进行程序升级。当主内核发生异常时,首先进行主内核的自恢复,若主内核自恢复失败或者满足子内核的预设条件时,则利用子内核通过继电器使得主内核进行断电重启。本实施例实现了多内核嵌入式PLC中多内核及多内核间的程序恢复,避免了由于软件失效引起的设备故障,提高了多内核嵌入式PLC的可靠性和稳定性。
可选地,在主内核M次断电重启失败后,M为预设的是最大重启次数,本实施例的方法在图5或者图6所示方法的基础上还可以包括:
子内核拉低主内核的特定引脚(例如AUART0_RX)的电平,并给主内核上电;
当主内核在启动过程中检测到特定引脚的电平为低电平时,强制从FLASH的备份分区启动***;
***成功启动之后,主内核从主内核的存储器的备份区中读取主内核的恢复程序,根据恢复文件进行***恢复,主内核的存储器的备份区预先存储有主内核的恢复程序。
图7为本发明实施例四提供的多内核的嵌入式PLC软件恢复方法的流程图,如图7所示,本实施例的方法应用在多内核的嵌入式PLC中,嵌入式PLC包括至少一个主内核和至少一个子内核;本实施例的方法可以包括:
S401、当主内核检测到子内核发生异常时,主内核向子内核发送升级指示消息,升级指示消息中包括子内核的恢复程序,子内核的恢复程序存储在主内核的存储器备份区中。
S402、子内核根据升级指示消息进行程序升级。
S403、当主内核发生异常时,主内核进行自恢复。
本实施例S401-S403的具体实现过程参见图4所示方法中的相关描述,此处不再赘述。
S404、当主内核自恢复失败时,主内核向子内核发送***恢复请求消息或者心跳报文。
本实施例中,不再对主内核向子内核发送***恢复请求消息的具体实现过程进行赘述(详见图5所示方法中的相关描述)。理论上主内核可能在自恢复之前、自恢复过程中和自恢复之后任一时段恢复向子内核发送心跳报文。
S405、当子内核接收到***恢复请求消息或者在预设时间内没有接收到主内核发送的心跳报文时,子内核拉低主内核的特定引脚的电平,并给主内核上电。
本实施例中,设定两种情况下,子内核可以拉低主内核的特定引脚的电平,并给主内核上电。第一种情况是子内核接收到***恢复请求消息;第二种情况是在预设时间内没有接收到主内核发送的心跳报文。通过设定两种情况,避免发生主内核向子内核发送***恢复请求消息失败而使得主内核长期处于异常状态的情况。进一步提高了本实施例中多内核的嵌入式PLC器件的可靠性。
S406、当主内核在启动过程中检测到特定引脚的电平为低电平时,强制从FLASH的备份分区启动***。
本实施例中,当主内核启动时,会运行UBoot程序,UBoot程序能够检测出特定引脚的电平信息,当特定引脚的电平为低电平时,强制主内核从FLASH的备份分区启动***。
S407、***成功启动之后,主内核从主内核的存储器的备份区中读取主内核的恢复程序,根据恢复文件进行***恢复,主内核的存储器的备份区预先存储有主内核的恢复程序。
本实施例中,当***成功启动之后,主内核从主内核的存储器的备份区中读取主内核的恢复程序,例如主内核从FLASH的备份分区启动***,在***成功启动之后从备份的完整***文件彻底重新升级整个FLASH分区,并生成异常日志。
本实施例,通过主内核与子内核之间相互检测确定主内核和子内核是否处于异常状态,当主内核检测到子内核发生异常时,通过主内核发送的升级指示消息使得子内核进行程序升级。当主内核发生异常时,首先进行主内核的自恢复,若主内核自恢复失败或者满足子内核的预设条件时,则利用子内核通过继电器使得主内核进行断电重启。当在达到最大重启次数后,主内核仍然重启失败,则通过设定两种情况下,子内核可以拉低主内核的特定引脚的电平,并给主内核上电。第一种情况是子内核接收到***恢复请求消息;第二种情况是在预设时间内没有接收到主内核发送的心跳报文。通过设定两种情况,避免发生主内核向子内核发送***恢复请求消息失败而使得主内核长期处于异常状态的情况,进一步提高了本实施例中多内核的嵌入式PLC器件的可靠性。
可选地,本实施例的方法在图4-图7所示方法的基础上还可以包括:当主内核发生异常时,主内核进行自恢复,包括:
主内核进行如下至少一种恢复操作:
主内核从主内核的存储器备份区中拷贝备份的配置文件,将备份的配置文件覆盖原有的配置文件;
主内核重启故障的应用程序;
若故障应用程序重启失败,从主内核的存储器备份区中拷贝故障应用程序的备份程序至执行目录下,运行备份的应用程序。
本实施例中,配置文件保存了主内核的应用程序所需的信息,如服务器的IP地址,用户名密码等。当配置文件损坏时,从主内核的备份区中拷贝备份的文件覆盖损坏的配置文件。每次配置文件被修改后,首先进行文件校验,校验通过后拷贝配置文件到备份区进行备份。主内核监视程序负责主内核中应用程序的启动、监视、恢复,以及保持向子内核发送的心跳信号。当主内核程序启动后,所有应用程序向监视程序发送心跳信息,在监视程序中定时扫描应用程序的心跳信息是否正常,如果超时未收到心跳信息,则可能程序已跑飞,首先尝试重新启动未发送心跳信息的应用程序。如果应用程序重启失败则写故障码(对不同的故障类型进行编码,一个编码对应一类故障信息)到文件后重启***。继续通过监视程序扫描应用程序的心跳信息是否正常(通过心跳信息判断应用程序是否恢复),如果心跳信息正常,则说明应用程序恢复,清除故障码,进入正常工作流程。如果心跳信息异常(例如无法收到应用程序发送的心跳信息),则认为应用程序已损坏,进入应用程序恢复过程。可以从备份目录下拷贝备份的应用程序到执行目录下,并启动运行应用程序。
图8为本发明实施例五提供的多内核的嵌入式PLC软件恢复方法的流程图,如图8所示,本实施例的方法应用在多内核的嵌入式PLC中,嵌入式PLC包括至少一个主内核和至少一个子内核;本实施例的方法在图6所示方法的基础上可以包括:
S501、当主内核检测到子内核发生异常时,主内核向子内核发送升级指示消息,升级指示消息中包括子内核的恢复程序,子内核的恢复程序存储在主内核的存储器备份区中。
S502、子内核根据升级指示消息进行程序升级。
S503、当主内核发生异常时,主内核进行自恢复。
本实施例S501-S503的具体实现过程参见图4所示方法中的相关描述,此处不再赘述。
S504、当主内核自恢复失败时,子内核在预设时间内没有接收到主内核发送的心跳报文,则子内核的应用程序将断电重启标志位置位。
本实施例中,主内核的监视程序定时通过通信端口(如串口或以太网口)向子内核发送心跳报文,在子内核的应用程序具备检测主内核心跳报文的功能,当子内核的应用程序超时未收到主内核发送的心跳报文时,子内核的应用程序将断电重启标志位(例如数据区中相应地址位可以作为断电重启标志位)置位。
S505、当子内核的引擎程序检测到断电重启标志位被置位时,通过继电器对主内核进行断电重启。
本实施例中,在引擎程序中检测到被置位的标志位后,通过继电器给主内核断电重启,解决由于主内核监视程序跑死或跑飞的情况。达到预设的最大重启次数后(例如设置三次断电重启为最大重启次数,最大重启次数可以人为设置)后,子内核都无法收到主内核的心跳报文,则判定主内核的监视程序或操作***损坏。
本实施例,通过主内核与子内核之间相互检测确定主内核和子内核是否处于异常状态,当主内核检测到子内核发生异常时,通过主内核发送的升级指示消息使得子内核进行程序升级。当主内核发生异常时,首先进行主内核的自恢复,若主内核自恢复失败或者满足子内核的预设条件时,则利用子内核通过继电器使得主内核进行断电重启。当在达到最大重启次数后,主内核仍然重启失败,则在预设时间内没有接收到主内核发送的心跳报文后子内核通过应用程序将断电重启标志位置位,当子内核的引擎程序检测到断电重启标志位被置位后通过继电器对主内核进行断电重启。本实施例实现了多内核嵌入式PLC中多内核及多内核间的程序恢复,避免了由于软件失效引起的设备故障,提高了多内核嵌入式PLC的可靠性和稳定性。
可选地,主内核进行自恢复之前,本实施例的方法在图4-图7所示方法的基础上还可以包括:
主内核的所有应用程序向监视程序发送心跳信息;
如果监视程序在预设时间内没有接收到任一应用程序发送的心跳报文,则确定主内核发生异常。
可选地,主内核向子内核发送升级指示消息之前,本实施例的方法在图4-图7所示方法的基础上还可以包括:
主内核定期向子内核发送心跳报文;
当主内核连续N次没有接收到子内核发送的心跳报文的响应报文时,主内核确定子内核发生异常,其中,N为大于等于1的整数。
图9为本发明实施例一提供的多内核的嵌入式PLC的FLASH分区结构示意图,如图9所示,可以将主内核FLASH分区划分为四个区,分别存储不同的恢复程序。例如在实际操作中,FLASH中只备份了主内核的完整***,即出厂时的整个***。而主内核实时更新的应用程序、配置文件和子内核恢复程序是保存在SD卡中的。图9中描述的前三个分区(从左到右)是正常工作所需的引导区U-Boot和***文件,第四个分区是备份的主内核完整***。本实施例中可以通过备份的完整***重写整个主内核工作分区,达到恢复***的目的。
本实施例的多内核的嵌入式PLC的FLASH分区可以被应用于上述所示方法实施例中,其实现原理和技术效果类似,此处不再赘述。
此外,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当用户设备的至少一个处理器执行该计算机执行指令时,用户设备执行上述各种可能的方法。
其中,计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于用户设备中。当然,处理器和存储介质也可以作为分立组件存在于通信设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种多内核的嵌入式PLC软件恢复方法,所述方法应用在多内核的嵌入式可编程逻辑控制器PLC中,所述嵌入式可编程逻辑控制器PLC包括至少一个主内核和至少一个子内核,其特征在于,所述方法包括:
当所述主内核检测到所述子内核发生异常时,所述主内核向所述子内核发送升级指示消息,所述升级指示消息中包括所述子内核的恢复程序,所述子内核的恢复程序存储在所述主内核的存储器备份区中;
所述子内核根据所述升级指示消息进行程序升级;
当所述主内核发生异常时,所述主内核进行自恢复;
当所述主内核自恢复失败时,所述主内核通过所述子内核进行***恢复。
2.根据权利要求1所述的方法,其特征在于,所述主内核通过所述子内核进行***恢复,包括:
所述主内核向所述子内核发送***恢复请求消息;
所述子内核根据所述***恢复请求消息通过继电器对所述主内核进行断电重启。
3.根据权利要求1所述的方法,其特征在于,所述主内核通过所述子内核进行***恢复,包括:
所述子内核在满足预设条件时,通过继电器对所述主内核进行断电重启。
4.根据权利要求2或3所述的方法,其特征在于,在所述主内核M次断电重启失败后,M为预设的是最大重启次数,还包括:
所述子内核拉低所述主内核的特定引脚的电平,并给所述主内核上电;
当所述主内核在启动过程中检测到所述特定引脚的电平为低电平时,强制从FLASH的备份分区启动***;
***成功启动之后,所述主内核从所述主内核的存储器的备份区中读取所述主内核的恢复程序,根据所述恢复文件进行***恢复,所述主内核的存储器的备份区预先存储有所述主内核的恢复程序。
5.根据权利要求1所述方法,其特征在于,所述主内核通过所述子内核进行***恢复,包括:
所述主内核向所述子内核发送***恢复请求消息或者心跳报文;
当所述子内核接收到所述***恢复请求消息或者在预设时间内没有接收到所述主内核发送的心跳报文时,所述子内核拉低所述主内核的特定引脚的电平,并给所述主内核上电;
当所述主内核在启动过程中检测到所述特定引脚的电平为低电平时,强制从FLASH的备份分区启动***;
***成功启动之后,所述主内核从所述主内核的存储器的备份区中读取所述主内核的恢复程序,根据所述恢复文件进行***恢复,所述主内核的存储器的备份区预先存储有所述主内核的恢复程序。
6.根据权利要求1-5中任意一项所述的方法,其特征在于,所述当所述主内核发生异常时,所述主内核进行自恢复,包括:
所述主内核进行如下至少一种恢复操作:
所述主内核从所述主内核的存储器备份区中拷贝备份的配置文件,将所述备份的配置文件覆盖原有的配置文件;
所述主内核重启故障的应用程序;
若所述故障应用程序重启失败,从所述主内核的存储器备份区中拷贝所述故障应用程序的备份程序至执行目录下,运行所述备份的应用程序。
7.根据权利要求3所述的方法,其特征在于,所述预设条件包括:所述子内核在预设时间内没有接收到所述主内核发送的心跳报文,所述通过继电器对所述主内核进行断电重启,包括:
所述子内核的应用程序将断电重启标志位置位;
当所述子内核的引擎程序检测到所述断电重启标志位被置位时,通过继电器对所述主内核进行断电重启。
8.根据权利要求1-5任一项所述的方法,其特征在于,所述主内核进行自恢复之前,还包括:
所述主内核的所有应用程序向监视程序发送心跳信息;
如果所述监视程序在预设时间内没有接收到任一应用程序发送的心跳报文,则确定所述主内核发生异常。
9.根据权利要求1-5任一项所述的方法,其特征在于,所述主内核向所述子内核发送升级指示消息之前,还包括:
所述主内核定期向所述子内核发送心跳报文;
当所述主内核连续N次没有接收到所述子内核发送的所述心跳报文的响应报文时,所述主内核确定所述子内核发生异常,其中,N为大于等于1的整数。
10.一种多内核的嵌入式可编程逻辑控制器PLC,其特征在于,包括:至少一个主内核和至少一个子内核;
所述主内核用于执行上述权利要求1-9中任一项所述的方法中主内核执行的步骤;
所述子内核用于执行上述权利要求1-9中任一项所述的方法中子内核执行的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710439054.1A CN107315656B (zh) | 2017-06-12 | 2017-06-12 | 多内核的嵌入式plc软件恢复方法和plc |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710439054.1A CN107315656B (zh) | 2017-06-12 | 2017-06-12 | 多内核的嵌入式plc软件恢复方法和plc |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107315656A true CN107315656A (zh) | 2017-11-03 |
CN107315656B CN107315656B (zh) | 2020-10-16 |
Family
ID=60183996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710439054.1A Active CN107315656B (zh) | 2017-06-12 | 2017-06-12 | 多内核的嵌入式plc软件恢复方法和plc |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107315656B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108038027A (zh) * | 2017-12-11 | 2018-05-15 | 芜湖华烨新材料有限公司 | 浸胶控制软件备份的方法 |
CN108873802A (zh) * | 2018-08-02 | 2018-11-23 | 佛山职业技术学院 | 一种用于光伏组件清洁检测机器人的电路控制*** |
CN109471670A (zh) * | 2018-12-21 | 2019-03-15 | 迈普通信技术股份有限公司 | 设备启动方法及电子设备 |
CN110083493A (zh) * | 2018-01-25 | 2019-08-02 | 厦门雅迅网络股份有限公司 | 一种嵌入式***故障自恢复方法、终端设备及存储介质 |
CN110300103A (zh) * | 2019-06-20 | 2019-10-01 | 厦门市美亚柏科信息股份有限公司 | 无线数据探测设备、修复方法及备份方法 |
CN110554934A (zh) * | 2019-09-06 | 2019-12-10 | 山东超越数控电子股份有限公司 | 一种嵌入式设备及其***分区和升级方法 |
CN111209143A (zh) * | 2020-01-02 | 2020-05-29 | 广州广哈通信股份有限公司 | 嵌入式***的恢复方法、装置、嵌入式设备及存储介质 |
CN112202909A (zh) * | 2020-10-10 | 2021-01-08 | 上海威固信息技术股份有限公司 | 一种计算机存储***在线升级方法及*** |
CN113236329A (zh) * | 2021-05-20 | 2021-08-10 | 三一智矿科技有限公司 | 一种电液支架控制器及电液支架控制器的故障恢复方法 |
CN114750774A (zh) * | 2021-12-20 | 2022-07-15 | 广州汽车集团股份有限公司 | 安全监测方法和汽车 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963759A (zh) * | 2006-12-01 | 2007-05-16 | 北京中星微电子有限公司 | 一种协处理器引导方法及*** |
US20120042201A1 (en) * | 2009-06-05 | 2012-02-16 | Resnick David R | Failure recovery memory devices and methods |
CN102520778A (zh) * | 2011-12-09 | 2012-06-27 | 山东大学 | 一种适用于嵌入式Linux操作***的***一键还原方法 |
CN103425553A (zh) * | 2013-09-06 | 2013-12-04 | 哈尔滨工业大学 | 一种双机热备份***及该***的故障检测方法 |
CN106095454A (zh) * | 2016-06-16 | 2016-11-09 | 北京经纬恒润科技有限公司 | 一种协处理器的软件更新方法、***及主处理器 |
CN106407032A (zh) * | 2016-09-18 | 2017-02-15 | 深圳震有科技股份有限公司 | 一种基于多核***的硬件看门狗控制方法及*** |
-
2017
- 2017-06-12 CN CN201710439054.1A patent/CN107315656B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963759A (zh) * | 2006-12-01 | 2007-05-16 | 北京中星微电子有限公司 | 一种协处理器引导方法及*** |
US20120042201A1 (en) * | 2009-06-05 | 2012-02-16 | Resnick David R | Failure recovery memory devices and methods |
CN102520778A (zh) * | 2011-12-09 | 2012-06-27 | 山东大学 | 一种适用于嵌入式Linux操作***的***一键还原方法 |
CN103425553A (zh) * | 2013-09-06 | 2013-12-04 | 哈尔滨工业大学 | 一种双机热备份***及该***的故障检测方法 |
CN106095454A (zh) * | 2016-06-16 | 2016-11-09 | 北京经纬恒润科技有限公司 | 一种协处理器的软件更新方法、***及主处理器 |
CN106407032A (zh) * | 2016-09-18 | 2017-02-15 | 深圳震有科技股份有限公司 | 一种基于多核***的硬件看门狗控制方法及*** |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108038027A (zh) * | 2017-12-11 | 2018-05-15 | 芜湖华烨新材料有限公司 | 浸胶控制软件备份的方法 |
CN110083493A (zh) * | 2018-01-25 | 2019-08-02 | 厦门雅迅网络股份有限公司 | 一种嵌入式***故障自恢复方法、终端设备及存储介质 |
CN108873802A (zh) * | 2018-08-02 | 2018-11-23 | 佛山职业技术学院 | 一种用于光伏组件清洁检测机器人的电路控制*** |
CN109471670A (zh) * | 2018-12-21 | 2019-03-15 | 迈普通信技术股份有限公司 | 设备启动方法及电子设备 |
CN110300103A (zh) * | 2019-06-20 | 2019-10-01 | 厦门市美亚柏科信息股份有限公司 | 无线数据探测设备、修复方法及备份方法 |
CN110554934B (zh) * | 2019-09-06 | 2022-08-19 | 超越科技股份有限公司 | 一种嵌入式设备及其***分区和升级方法 |
CN110554934A (zh) * | 2019-09-06 | 2019-12-10 | 山东超越数控电子股份有限公司 | 一种嵌入式设备及其***分区和升级方法 |
CN111209143A (zh) * | 2020-01-02 | 2020-05-29 | 广州广哈通信股份有限公司 | 嵌入式***的恢复方法、装置、嵌入式设备及存储介质 |
CN111209143B (zh) * | 2020-01-02 | 2023-12-22 | 广州广哈通信股份有限公司 | 嵌入式***的恢复方法、装置、嵌入式设备及存储介质 |
CN112202909A (zh) * | 2020-10-10 | 2021-01-08 | 上海威固信息技术股份有限公司 | 一种计算机存储***在线升级方法及*** |
CN113236329A (zh) * | 2021-05-20 | 2021-08-10 | 三一智矿科技有限公司 | 一种电液支架控制器及电液支架控制器的故障恢复方法 |
CN113236329B (zh) * | 2021-05-20 | 2024-02-20 | 三一智矿科技有限公司 | 一种电液支架控制器及电液支架控制器的故障恢复方法 |
CN114750774A (zh) * | 2021-12-20 | 2022-07-15 | 广州汽车集团股份有限公司 | 安全监测方法和汽车 |
CN114750774B (zh) * | 2021-12-20 | 2023-01-13 | 广州汽车集团股份有限公司 | 安全监测方法和汽车 |
Also Published As
Publication number | Publication date |
---|---|
CN107315656B (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107315656A (zh) | 多内核的嵌入式plc软件恢复方法和plc | |
JP6291248B2 (ja) | ファームウェアアップグレードエラー検出および自動ロールバック | |
CN103201724B (zh) | 在高可用性虚拟机环境中提供高可用性应用程序 | |
CN102981931B (zh) | 虚拟机备份方法及装置 | |
CN101882085B (zh) | ***启动方法以及嵌入式设备 | |
CN106789306B (zh) | 通信设备软件故障检测收集恢复方法和*** | |
US6425093B1 (en) | Methods and apparatuses for controlling the execution of software on a digital processing system | |
CN106873990B (zh) | 嵌入式***ram损坏模式下的多分区引导方法 | |
CN101877651B (zh) | 一种网络终端设备中恢复***软件的方法和*** | |
CN104461594B (zh) | 嵌入式操作***的升级方法及装置 | |
CN114116280B (zh) | 交互式bmc自恢复方法、***、终端及存储介质 | |
CN111800304A (zh) | 进程运行的监测方法、存储介质和虚拟装置 | |
CN112035285B (zh) | 基于高通平台的硬件看门狗电路***及其监控方法 | |
CN117251333A (zh) | 一种硬盘信息获取方法、装置、设备及存储介质 | |
CN115658113A (zh) | 服务器自启动方法、装置、可读存储介质及电子设备 | |
CN112732412B (zh) | 一种服务配置文件处理方法、装置、存储介质及电子设备 | |
CN111309388B (zh) | 设备的***软件版本的自动回滚***及其方法 | |
JP6124644B2 (ja) | 情報処理装置および情報処理システム | |
CN104346239A (zh) | 嵌入式***中应用程序的异常恢复方法和装置 | |
CN105760276B (zh) | 提高reboot命令重启可靠性并增加复位日志的方法 | |
CN111158952A (zh) | 一种利用外接存储设备自动备份配置文件的方法 | |
CN107273291B (zh) | 一种处理器调试方法及*** | |
CN107590647A (zh) | 船舶管理***的伺服监管*** | |
JP2001101034A (ja) | 異種os間制御による障害復旧方法 | |
CN117873771B (zh) | 一种***宕机处理方法、装置、设备、存储介质及服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20171103 Assignee: ZEHJIANG OVI TECHNOLOGY Co.,Ltd. Assignor: HANGZHOU DIANZI University Contract record no.: X2020330000123 Denomination of invention: Multi core embedded PLC software recovery method and PLC Granted publication date: 20201016 License type: Common License Record date: 20201226 |