本申请涉及plc(programmable logic controller,可编程逻辑控制器),尤其涉及一种掉电数据保存方法、装置、设备及可读存储介质。
背景技术:
1、在plc程序运行过程中,产生的部分关键数据要求在重启plc后,仍然保持上一次运行时的数值,而在通常情况下上一次运行产生的数据都储存在易失性存储器,而易失性存储器断电后,所有数据都会丢失,因此断电重启后,上一次运行时数据也会丢失。针对该问题在目前一些传统的技术方案中,会在掉电后的将需要掉电保持的关键数据写入至非易失性存储器中,以保证断电重启依然可以保留上一次运行时的数据。但是由于掉电的发生是不可预期的,故在掉电瞬间可能会产生新的关键数据,也即保存关键数据时关键数据存在有变更的风险,因此,在传统方案中在掉电后保存的关键数据存在有较大的风险为错误数据。
技术实现思路
1、本申请的主要目的在于提供一种掉电数据保存方法,旨在解决传统方案中在掉电后保存的关键数据存在有较大的风险为错误数据的技术问题。
2、为实现上述目的,本申请提供一种掉电数据保存方法,应用于掉电设备,所述掉电设备包括易失性存储区和非易失性存储区,所述掉电数据保存方法包括:
3、若掉电设备接收到掉电信号,停止调用新的程序任务;
4、确定已执行的目标程序任务的任务状态,若各所述目标程序任务的任务状态均为执行完成,将所述目标程序任务对应的掉电数据从所述易失性存储区保存至所述非易失性存储区。
5、可选地,所述易失性存储区包括数据区和保持区,所述若掉电设备接收到掉电信号,停止调用新的程序任务的步骤包括:
6、若掉电设备接收到掉电信号,变更控制变量为停止状态,以停止调用新的程序任务对应的正向同步函数,其中,所述正向同步函数用于将所述程序任务对应的掉电数据从所述数据区保存至所述保持区。
7、可选地,所述确定已执行的目标程序任务的任务状态,若各所述目标程序任务的任务状态均为执行完成,将所述目标程序任务对应的掉电数据从所述易失性存储区保存至所述非易失性存储区的步骤包括:
8、监测已执行的目标程序任务对应的正向同步函数的状态变量;
9、基于所述状态变量确定已执行的目标程序任务的任务状态;
10、若各目标程序任务的任务状态均为执行完成,则将各所述目标程序任务对应的掉电数据从所述保持区保存至所述非易失性存储区中。
11、可选地,所述基于所述状态变量确定已执行的目标程序任务的任务状态的步骤还包括:
12、在所述状态变量表征各目标程序任务的整体执行状态的情况下,若所述状态变量为预设初始值,则确定各所述目标程序任务的任务状态均为执行完成;
13、若所述状态变量不为预设初始值,则确定存在任务状态为执行中的目标程序任务。
14、可选地,所述基于所述状态变量确定已执行的目标程序任务的任务状态的步骤还包括:
15、在一个目标程序任务对应一个状态变量的情况下,若各所述状态变量均表征结束状态,则确定各所述目标程序任务的任务状态均为执行完成;
16、若存在状态变量表征执行状态,则确定存在任务状态为执行中的目标程序任务。
17、可选地,所述掉电数据保存方法还包括:
18、监测所述控制变量;
19、基于所述控制变量控制程序任务的调用执行,并基于所述程序任务的执行情况对所述状态变量进行更新。
20、可选地,所述基于所述控制变量控制程序任务的调用执行的步骤还包括:
21、若所述控制变量为停止状态,则停止调用执行新的程序任务;
22、若所述控制变量为允许状态,则基于预设执行周期调用执行所述程序任务。
23、可选地,所述基于所述程序任务的执行情况对所述状态变量进行更新的步骤包括:
24、在所述状态变量表征各目标程序任务的整体执行状态的情况下,对于任意一个目标程序任务,在所述目标程序任务开始执行时,将所述状态变量增加预设数值;
25、在所述目标程序任务执行完成时,将所述状态变量减去预设数值。
26、可选地,所述基于所述程序任务的执行情况对所述状态变量进行更新的步骤还包括:
27、在一个目标程序任务对应一个状态变量的情况下,对于任意一个目标程序任务,在所述目标程序任务开始执行时,更新所述目标程序任务对应的状态变量,以表征执行状态;
28、在所述目标程序任务执行完成时,更新所述目标程序任务对应的状态变量,以表征结束状态。
29、可选地,所述掉电数据由应用程序运行时产生,所述掉电数据保存方法还包括:
30、在所述应用程序编译过程中,对于所述应用程序在运行过程中将要产生的任意一个掉电数据,生成所述掉电数据对应的程序任务;
31、生成用于控制各程序任务调用执行的控制变量。
32、为实现上述目的,本申请还提供一种掉电数据保存装置,应用于掉电设备,所述掉电设备包括易失性存储区和非易失性存储区,所述掉电数据保存装置包括:
33、停止模块,用于若掉电设备接收到掉电信号,停止调用新的程序任务;
34、保存模块,用于确定已执行的目标程序任务的任务状态,若各所述目标程序任务的任务状态均为执行完成,将所述目标程序任务对应的掉电数据从所述易失性存储区保存至所述非易失性存储区。
35、为实现上述目的,本申请还提供一种掉电数据保存设备,所述掉电数据保存设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的掉电数据保存程序,所述掉电数据保存程序被所述处理器执行时实现如上述的掉电数据保存方法的步骤。
36、为实现上述目的,本申请还提供一种可读存储介质,所述可读存储介质上存储有掉电数据保存程序,所述掉电数据保存程序被处理器执行时实现如上述的掉电数据保存方法的步骤。
37、本申请实施例提出的一种掉电数据保存方法、装置、设备及可读存储介质。应用于掉电设备,且在掉电设备中包括易失性存储区和非易失性存储区,若掉电设备接收到掉电信号,停止调用新的程序任务;确定已执行的目标程序任务的任务状态,若各所述目标程序任务的任务状态均为执行完成,将所述目标程序任务对应的掉电数据从所述易失性存储区保存至所述非易失性存储区。相比于传统保存方案,本申请实施例,在发生掉电后,会先停止调用新的程序任务执行,从而避免新的程序任务被调用执行导致需要保存的掉电数据存在新的变更,且在停止调用新的程序任务后,再确定已执行的目标程序任务的任务状态,若目标程序任务的任务状态均为执行完成,则将保持区中掉电数据保存至非易失性存储区中,从而确保保持区中需要变更的掉电数据在保存到非易失性存储区之前,已经变更完成。故通过上述方式本申请可保证掉电发生后,非易失性存储区中掉电数据的新旧一致性,避免数据错误的情况发生。
1.一种掉电数据保存方法,应用于掉电设备,所述掉电设备包括易失性存储区和非易失性存储区,其特征在于,所述掉电数据保存方法包括:
2.如权利要求1所述的掉电数据保存方法,其特征在于,所述易失性存储区包括数据区和保持区,所述若掉电设备接收到掉电信号,停止调用新的程序任务的步骤包括:
3.如权利要求2所述的掉电数据保存方法,其特征在于,所述确定已执行的目标程序任务的任务状态,若各所述目标程序任务的任务状态均为执行完成,将所述目标程序任务对应的掉电数据从所述易失性存储区保存至所述非易失性存储区的步骤包括:
4.如权利要求3所述的掉电数据保存方法,其特征在于,所述基于所述状态变量确定已执行的目标程序任务的任务状态的步骤还包括:
5.如权利要求3所述的掉电数据保存方法,其特征在于,所述基于所述状态变量确定已执行的目标程序任务的任务状态的步骤还包括:
6.如权利要求3所述的掉电数据保存方法,其特征在于,所述掉电数据保存方法还包括:
7.如权利要求6所述的掉电数据保存方法,其特征在于,所述基于所述控制变量控制程序任务的调用执行的步骤还包括:
8.如权利要求6所述的掉电数据保存方法,其特征在于,所述基于所述程序任务的执行情况对所述状态变量进行更新的步骤包括:
9.如权利要求6所述的掉电数据保存方法,其特征在于,所述基于所述程序任务的执行情况对所述状态变量进行更新的步骤还包括:
10.如权利要求1至9任意一项所述的掉电数据保存方法,其特征在于,所述掉电数据由应用程序运行时产生,所述掉电数据保存方法还包括:
11.一种掉电数据保存装置,其特征在于,应用于掉电设备,所述掉电设备包括易失性存储区和非易失性存储区,所述掉电数据保存装置包括:
12.一种掉电数据保存设备,其特征在于,所述掉电数据保存设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的掉电数据保存程序,所述掉电数据保存程序被所述处理器执行时实现如权利要求1至10中任一项所述的掉电数据保存方法的步骤。
13.一种可读存储介质,其特征在于,所述可读存储介质为计算可读存储介质,所述可读存储介质上存储有掉电数据保存程序,所述掉电数据保存程序被处理器执行时实现如权利要求1至10中任一项所述的掉电数据保存方法的步骤。