发明内容
本发明实施例所要解决的技术问题在于,针对现有技术中PLC系统掉电数据保存方案成本较高的缺陷,提供一种成本较低且能满足用户需求的用于PLC系统的掉电数据存取方法及装置。
为了解决上述技术问题,本发明实施例提供了一种用于可编程逻辑控制器系统的掉电数据存储方法,包括:
可编程逻辑控制器系统掉电后,释放超级电容中存储的电能供电;
判断需要存储的掉电数据的数据量是否大于预设的数据量阈值;
若判断为是,将所述掉电数据存储至外插的高容量安全数码卡中;
若判断为否,则将所述掉电数据存储至可编程逻辑控制器系统内置的闪存中。
在本发明所述的用于可编程逻辑控制器系统的掉电数据存储方法中,所述将所述掉电数据存储至可编程逻辑控制器系统内置的闪存中的步骤包括:
将所述可编程逻辑控制器系统内置的闪存划分为掉电存储区和掉电存储备份区;
将所述掉电数据分别存储至所述掉电存储区和所述掉电存储备份区中。
另外,本发明还提供了一种用于可编程逻辑控制器系统的掉电数据读取方法,包括:
可编程逻辑控制器系统上电后,判断需要读取的掉电数据的数据量是否大于预设的数据量阈值;
若判断为是,则从外插的高容量安全数码卡中读取所述掉电数据;
若判断为否,则从可编程逻辑控制器系统内置的闪存中读取所述掉电数据。
在本发明所述的用于可编程逻辑控制器系统的掉电数据读取方法中,所述可编程逻辑控制器系统中内置的闪存被预先划分为掉电存储区和掉电存储备份区,所述从可编程逻辑控制器系统内置的闪存中读取所述掉电数据的步骤包括:
从所述掉电存储区中读取所述掉电数据;
若从掉电存储区中读取掉电数据的操作失败,则从所述掉电存储备份区中读取所述掉电数据。
在本发明所述的用于可编程逻辑控制器系统的掉电数据读取方法中,所述方法还包括:
若从掉电存储区中读取掉电数据的操作失败,则格式化所述掉电存储区,并拷贝所述掉电存储备份区中的掉电数据至所述掉电存储区中。
相应地,本发明还提供了一种用于可编程逻辑控制器系统的掉电数据存储装置,包括内置于可编程逻辑控制器系统中的闪存和外插的高容量安全数码卡,所述装置还包括:
超级电容,用于在可编程逻辑控制器系统上电时存储电能,并在可编程逻辑控制器系统掉电后释放所存储的电能供电;
第一数据量判断模块,用于判断需要存储的掉电数据的数据量是否大于预设的数据量阈值;
存储管理模块,用于在所述数据量判断模块的判断结果为是时,将所述掉电数据存储至所述高容量安全数码卡中,在所述数据量判断模块的判断结果为否时,将所述掉电数据存储至所述闪存中。
在本发明所述的用于可编程逻辑控制器系统的掉电数据存储装置中,所述存储管理模块包括:
闪存区域划分模块,用于将所述闪存划分为掉电存储区和掉电存储备份区;
数据写入模块,用于将所述掉电数据分别存储至所述掉电存储区和所述掉电存储备份区中。
相应地,本发明还提供了一种用于可编程逻辑控制器系统的掉电数据读取装置,包括内置于可编程逻辑控制器系统中的闪存和外插的高容量安全数码卡,其中所述闪存中存储有数据量不大于预设的数据量阈值的掉电数据,所述高容量安全数码卡中存储有数据量大于预设的数据量阈值的掉电数据,所述掉电数据读取装置还包括:
第二数据量判断模块,用于在可编程逻辑控制器系统上电后,判断需要读取的掉电数据的数据量是否大于预设的数据量阈值;
读取管理模块,用于在所述第二数据量判断模块的判断结果为是时,从所述高容量安全数码卡中读取所述掉电数据,在所述第二数据量判断模块的判断结果为否时,从所述闪存中读取所述掉电数据。
在本发明所述的用于可编程逻辑控制器系统的掉电数据读取装置中,所述闪存被预先划分为掉电存储区和掉电存储备份区,所述读取管理模块包括:
存储区读取模块,用于从所述掉电存储区中读取所述掉电数据;
备份区读取模块,用于在所述存储区读取模块从掉电存储区中读取掉电数据的操作失败时,从所述掉电存储备份区中读取所述掉电数据。
在本发明所述的用于可编程逻辑控制器系统的掉电数据读取装置中,所述装置还包括:
存储区修复模块,用在所述存储区读取模块从掉电存储区中读取掉电数据的操作失败时,格式化所述掉电存储区,并拷贝所述掉电存储备份区中的掉电数据至所述掉电存储区中。
实施本发明实施例,具有如下有益效果:通过判断掉电数据的数据量,动态地选择掉电存储介质,不仅能存储大容量的掉电数据,同时还能节省硬件成本和维护成本;通过利用超级电容作为系统掉电后的电源,可避免因电池损耗而增加维护更新成本。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,是本发明提供的用于PLC系统的掉电数据存储方法的第一实施例流程图,该方法包括:
S101、PLC系统掉电后,释放超级电容中存储的电能供电。具体地,可以通过检测是否有掉电信号的方式来判断系统是否掉电,当中断检测到掉电信号,表示系统掉电。在PLC系统上电后正常运行时,由外接电源供电,同时该外接电源还给超级电容充电。当外接电源断电后,即PLC系统掉电后,超级电容依靠其存储的电量来维持PLC系统运行一定的时间,以便PLC系统进行相关的掉电操作及掉电数据保存。例如,可以在AM600中型PLC中,使用容量为15000μF的超级电容,在PLC系统掉电后可以为其提供1.8秒的时间保存掉电数据。
S102、判断需要存储的掉电数据的数据量是否大于预设的数据量阈值。具体地,可以通过用户设置的数据属性来确定掉电数据。例如,对于本文所指的掉电数据,其数据属性一般设置为掉电保存属性。另外,可以设置掉电量标识POC,用以表征掉电数据的数据量大小。只需读取掉电量标识POC,即可确定掉电数据的数据量大小。例如,当POC=1时,表示掉电数据的数据量大于预设的数据量阈值,当POC=0时,表示掉电数据的数据量不大于预设的数据量阈值。
若步骤S102的判断结果判断为是,则执行步骤S103。S103、将所述掉电数据存储至外插的高速高容量安全数码卡(SecureDigitalHighCapacity,简称SDHC)中。一般来说,高速SDHC的擦写速度很快,例如CLASS10的高速SDHC,其擦写速度可达10MB/S。
若步骤S102的判断结果为否,则执行步骤S104。S104、将所述掉电数据存储至PLC系统内置的闪存(flash)中。通常在PLC系统的主板中即自带有flash,因此无需增加额外的硬件成本。flash又可分为NANDflash和NORflash,以NANDflash为例,标准的NANDflash的擦除时间为2ms/128KB~3ms/128KB,写入时间为200~700us/2KB,则其擦写1MB数据的时间下限为16+102.4=118.4ms,时间上限为24+358.4=382.4ms,即在单板的情况下擦写1MB数据需要118.4ms~382.4ms。
在具体应用中,掉电时超级电容的供电时间一般可以维持1秒,根据上述NANDflash和高速SDHC的擦写速度,可以将数据量阈值设置为1MB。即,若掉电数据的数据量小于或等于1MB,则把掉电数据写到主板自带的NANDflash中;若掉电数据的数据量大于1MB,则在检测到掉电信号时,将掉电数据写到外插的SDHC中。通常,当掉电数据量大于1MB且小于8MB时,都可以采用CLASS10以上的高速SDHC。
本发明提供的用于PLC系统的掉电数据存储方法,通过判断掉电数据的数据量,动态地选择掉电存储介质,相比于直接默认将掉电数据存储至flash中的方案,不会受到超级电容容量有限以及flash擦写速度较慢的影响,能够存储大容量的掉电数据;而相比于直接默认将掉电数据存储至SDHC中的方案,又不会因有时掉电数据的数据量太小而浪费SDHC的容量,因此可以节省硬件成本和维护成本。另外,本发明提供的用于PLC系统的掉电数据存储方法,通过利用超级电容作为系统掉电后的电源,可避免因电池损耗而增加维护更新成本。
请参见图2,是本发明提供的用于PLC系统的掉电数据存储方法的第二实施例流程图,该方法包括:
S201、PLC系统掉电后,释放超级电容中存储的电能供电。具体地,可以通过检测是否有掉电信号的方式来判断系统是否掉电,当中断检测到掉电信号,表示系统掉电。
S202、判断需要存储的掉电数据的数据量是否大于预设的数据量阈值。具体地,可以通过用户设置的数据属性来确定掉电数据。例如,对于本文所指的掉电数据,其数据属性一般设置为掉电保存属性。另外,可以设置掉电量标识POC,用以表征掉电数据的数据量大小。只需读取掉电量标识POC,即可确定掉电数据的数据量大小。例如,当POC=1时,表示掉电数据的数据量大于预设的数据量阈值,当POC=0时,表示掉电数据的数据量不大于预设的数据量阈值。
若步骤S202的判断结果判断为是,则执行步骤S203。S203、将所述掉电数据存储至外插的SDHC中。
若步骤S202的判断结果为否,则执行步骤S204。S204、将所述PLC系统内置的flash划分为掉电存储区和掉电存储备份区。接下来执行步骤S205。
S205、将所述掉电数据分别存储至所述掉电存储区和所述掉电存储备份区中。
当掉电数据的数据量小于或等于1MB时,把掉电数据保存到主板上的NANDflash中,由于NANDflash自身结构导致容易出现位交换现象,从而导致所存储的数据发生错误,因此在图2所示的实施例中对存储于NANDflash上的掉电数据采取备份措施,将NANDflash划分为掉电存储区和掉电存储备份区,在掉电时将掉电数据存储至掉电存储区,同时备份至掉电存储备份区。可以使存储于flash中的掉电数据具有自诊断修复功能。
请参见图3,是本发明提供的用于PLC系统的掉电数据读取方法的第一实施例流程图,该方法包括:
S301、PLC系统上电后,判断需要读取的掉电数据的数据量是否大于预设的数据量阈值。其中,需要读取的掉电数据的数据量可以由用户来配置。PLC系统对应有提供给用户编写用户程序的后台软件,掉电数据的数据量是在PLC的后台中由用户配置的,并把此数据量值下载到PLC中,PLC上电运行时,读取此值。掉电数据通常保存在一个文件中,上电后PLC会全部读取此文件,然后根据设置的数据量从掉电文件中抽取相应的数据。若最近一次保存的掉电数据的数据量(即所保存的文件中的数据量)大于用户设置的需要读取的数据量,则从所保存的文件中抽取用户设置的数据量大小的掉电数据,若最近一次保存的掉电数据的数据量(即所保存的文件中的数据量)小于用户设置的需要读取的数据量,则无法读取的掉电数据取其定义时的默认值。可以设置掉电量标识POC,用以表征掉电数据的数据量大小。只需读取掉电量标识POC,即可确定掉电数据的数据量大小。例如,当POC=1时,表示掉电数据的数据量大于预设的数据量阈值,当POC=0时,表示掉电数据的数据量不大于预设的数据量阈值。
若步骤S301的判断结果为是,则执行步骤S302。S302、从外插的SDHC中读取所述掉电数据。通常,SDHC中只保存最近一次的掉电数据,之前的掉电数据都会被擦掉。一般来说,高速SDHC的擦写速度很快,例如CLASS10的高速SDHC,其擦写速度可达10MB/S。
若步骤S301的判断结果为否,则执行步骤S303。S303、从PLC系统内置的flash中读取所述掉电数据。通常,flash中只保存最近一次的掉电数据,之前的掉电数据都会被擦掉。在PLC系统的主板中通常自带有flash,因此无需增加额外的硬件成本。flash又可分为NANDflash和NORflash,以NANDflash为例,标准的NANDflash的擦除时间为2ms/128KB~3ms/128KB,写入时间为200~700us/2KB,则其擦写1MB数据的时间下限为16+102.4=118.4ms,时间上限为24+358.4=382.4ms,即在单板的情况下擦写1MB数据需要118.4ms~382.4ms。
在具体应用中,掉电时超级电容的供电时间一般可以维持1秒,根据上述NANDflash和高速SDHC的擦写速度,可以将数据量阈值设置为1MB。即,若掉电数据的数据量小于或等于1MB,从主板自带的NANDflash中读取掉电数据;若掉电数据的数据量大于1MB,则从外插的SDHC中读取掉电数据。
本发明提供的用于PLC系统的掉电数据读取方法,通过判断掉电数据的数据量,动态地选择掉电存储介质,与图1所示的掉电数据存储方法相配合,相比于直接默认从flash中读取掉电数据的方案,不会受到超级电容容量有限以及flash擦写速度较慢的影响,能够存储大容量的掉电数据;而相比于直接默认从SDHC中读取掉电数据的方案,又不会因有时掉电数据的数据量太小而浪费SDHC的容量,因此可以节省硬件成本和维护成本。
请参见图4,是本发明提供的用于PLC系统的掉电数据读取方法的第二实施例流程图,其中,PLC系统的主板上内置的flash被预先划分为掉电存储区和掉电存储备份区,该方法包括:
S401、PLC系统上电后,判断需要读取的掉电数据的数据量是否大于预设的数据量阈值。其中,需要读取的掉电数据的数据量可以由用户来配置。例如,可以设置掉电量标识POC,用以表征掉电数据的数据量大小。只需读取掉电量标识POC,即可确定掉电数据的数据量大小。例如,当POC=1时,表示掉电数据的数据量大于预设的数据量阈值,当POC=0时,表示掉电数据的数据量不大于预设的数据量阈值。
若步骤S401的判断结果为是,则执行步骤S402。S402、从外插的SDHC中读取所述掉电数据。
若步骤S401的判断结果为否,则执行步骤S403。S403、从所述掉电存储区中读取所述掉电数据。通常,掉电数据保存在flash的文件系统分区中,当加载此分区的文件系统失败时,操作系统会返回加载失败的程序值,以此判断读取操作是否成功。
若步骤S403操作失败,则执行步骤S404。S404、从所述掉电存储备份区中读取所述掉电数据。本方法流程结束。
若步骤S403操作成功,则本方法流程结束。
当需要读取的掉电数据的数据量小于或等于1MB时,需要从主板上的NANDflash中读取掉电数据。由于NANDflash自身结构导致容易出现位交换现象,从而导致所存储的数据发生错误,因此在图2所示的掉电数据存储方法中对存储于NANDflash上的掉电数据采取备份措施,将NANDflash划分为掉电存储区和掉电存储备份区,在掉电时将掉电数据存储至掉电存储区,同时备份至掉电存储备份区。相应地,在图4所示的掉电数据读取方法中,若存储于掉电存储区的掉电数据发生错误,则从掉电存储备份区中读取掉电数据,可使存储于flash中的掉电数据具有自诊断修复功能。
请参见图5,是本发明提供的用于PLC系统的掉电数据读取方法的第三实施例流程图,其中,PLC系统的主板上内置的flash被预先划分为掉电存储区和掉电存储备份区,该方法包括:
S501、PLC系统上电后,判断需要读取的掉电数据的数据量是否大于预设的数据量阈值。其中,需要读取的掉电数据的数据量可以由用户来配置。例如,可以设置掉电量标识POC,用以表征掉电数据的数据量大小。只需读取掉电量标识POC,即可确定掉电数据的数据量大小。例如,当POC=1时,表示掉电数据的数据量大于预设的数据量阈值,当POC=0时,表示掉电数据的数据量不大于预设的数据量阈值。
若步骤S501的判断结果为是,则执行步骤S502。S502、从外插的SDHC中读取所述掉电数据。
若步骤S501的判断结果为否,则执行步骤S503。S503、从所述掉电存储区中读取所述掉电数据。
若步骤S503操作失败,则执行步骤S504。S504、从所述掉电存储备份区中读取所述掉电数据,格式化所述掉电存储区,并拷贝所述掉电存储备份区中的掉电数据至所述掉电存储区中。更进一步地,步骤S504之后,可以卸载掉电存储备份区,这样可以避免PLC在受干扰的情况下错误地直接读取掉电存储备份区中的数据,从而可以增加数据安全性。
若步骤S503操作成功,则本方法流程结束。
请参见图6,是本发明提供的用于PLC系统的掉电数据存储装置的结构示意图。掉电数据存储装置600包括内置的flash610和外插的SDHC620。一般来说,高速SDHC的擦写速度很快,例如CLASS10的高速SDHC,其擦写速度可达10MB/S。通常在PLC系统的主板中即自带有flash,因此无需增加额外的硬件成本。flash又可分为NANDflash和NORflash,以NANDflash为例,标准的NANDflash的擦除时间为2ms/128KB~3ms/128KB,写入时间为200~700us/2KB,则其擦写1MB数据的时间下限为16+102.4=118.4ms,时间上限为24+358.4=382.4ms,即在单板的情况下擦写1MB数据需要118.4ms~382.4ms。
装置600还包括超级电容630、第一数据量判断模块640和存储管理模块650。
超级电容630,用于在PLC系统上电时存储电能,并在系统掉电后释放所存储的电能供电。例如,可以在AM600中型PLC中,使用容量为15000μF的超级电容,在PLC系统掉电后可以为其提供1.8秒的时间保存掉电数据。
第一数据量判断模块640,用于判断需要存储的掉电数据的数据量是否大于预设的数据量阈值。具体地,第一数据量判断模块640可以通过用户设置的数据属性来确定掉电数据。例如,对于本文所指的掉电数据,其数据属性一般设置为掉电保存属性。另外,可以设置掉电量标识POC,用以表征掉电数据的数据量大小。第一数据量判断模块640只需读取掉电量标识POC,即可确定掉电数据的数据量大小。例如,当POC=1时,表示掉电数据的数据量大于预设的数据量阈值,当POC=0时,表示掉电数据的数据量不大于预设的数据量阈值。
存储管理模块650,用于在所述数据量判断模块640的判断结果为是时,将所述掉电数据存储至所述SDHC620中,在所述数据量判断模块640的判断结果为否时,将所述掉电数据存储至所述flash610中。
在具体应用中,掉电时超级电容的供电时间一般可以维持1秒,根据上述NANDflash和高速SDHC的擦写速度,可以将数据量阈值设置为1MB。即,若第一数据量判断模块640确定掉电数据的数据量小于或等于1MB,则存储管理模块650把掉电数据写到主板自带的NANDflash中;若第一数据量判断模块640确定掉电数据的数据量大于1MB,则存储管理模块650将掉电数据写到外插的SDHC中。通常,当掉电数据量大于1MB且小于8MB时,都可以采用CLASS10以上的高速SDHC。
本发明提供的用于PLC系统的掉电数据存储装置,通过判断掉电数据的数据量,动态地选择掉电存储介质,相比于直接默认将掉电数据存储至flash中的装置,不会受到超级电容容量有限以及flash擦写速度较慢的影响,能够存储大容量的掉电数据;而相比于直接默认将掉电数据存储至SDHC中的装置,又不会因有时掉电数据的数据量太小而浪费SDHC的容量,因此可以节省硬件成本和维护成本。另外,本发明提供的用于PLC系统的掉电数据存储装置,通过利用超级电容作为系统掉电后的电源,可避免因电池损耗而增加维护更新成本。
优选地,存储管理模块650可以包括:flash区域划分模块,用于将所述flash划分为掉电存储区和掉电存储备份区;数据写入模块,用于将所述掉电数据分别存储至所述掉电存储区和所述掉电存储备份区中。当掉电数据的数据量小于或等于1MB时,把掉电数据保存到主板上的NANDflash中,由于NANDflash自身结构导致容易出现位交换现象,从而导致所存储的数据发生错误,因此在图6所示的实施例中对存储于NANDflash上的掉电数据采取备份措施,将NANDflash划分为掉电存储区和掉电存储备份区,在掉电时将掉电数据存储至掉电存储区,同时备份至掉电存储备份区。可以使存储于flash中的掉电数据具有自诊断修复功能。
请参见图7,是本发明提供的用于PLC系统的掉电数据读取装置的结构示意图。掉电数据读取装置700包括PLC系统内置的flash710和外插的SDHC720,其中所述flash710中存储有数据量不大于预设的数据量阈值的掉电数据,所述SDHC720中存储有数据量大于预设的数据量阈值的掉电数据。一般来说,高速SDHC的擦写速度很快,例如CLASS10的高速SDHC,其擦写速度可达10MB/S。通常在PLC系统的主板中即自带有flash,因此无需增加额外的硬件成本。flash又可分为NANDflash和NORflash,以NANDflash为例,标准的NANDflash的擦除时间为2ms/128KB~3ms/128KB,写入时间为200~700us/2KB,则其擦写1MB数据的时间下限为16+102.4=118.4ms,时间上限为24+358.4=382.4ms,即在单板的情况下擦写1MB数据需要118.4ms~382.4ms。
掉电数据读取装置700还包括第二数据量判断模块730和读取管理模块740。
第二数据量判断模块730,用于判断需要读取的掉电数据的数据量是否大于预设的数据量阈值。其中,需要读取的掉电数据的数据量可以由用户来配置。PLC系统对应有提供给用户编写用户程序的后台软件,掉电数据的数据量是在PLC的后台中由用户配置的,并把此数据量值下载到PLC中,PLC上电运行时,读取此值。掉电数据通常保存在一个文件中,上电后PLC会全部读取此文件,然后根据设置的数据量从掉电文件中抽取相应的数据。若最近一次保存的掉电数据的数据量(即所保存的文件中的数据量)大于用户设置的需要读取的数据量,则读取管理模块740从所保存的文件中抽取用户设置的数据量大小的掉电数据,若最近一次保存的掉电数据的数据量(即所保存的文件中的数据量)小于用户设置的需要读取的数据量,则对于无法读取的掉电数据,读取管理模块740取其定义时的默认值。例如,可以设置掉电量标识POC,用以表征掉电数据的数据量大小。第二数据量判断模块730只需读取掉电量标识POC,即可确定掉电数据的数据量大小。例如,当POC=1时,表示掉电数据的数据量大于预设的数据量阈值,当POC=0时,表示掉电数据的数据量不大于预设的数据量阈值。
读取管理模块740,用于在所述第二数据量判断模块730的判断结果为是时,从所述SDHC720中读取所述掉电数据,在所述第二数据量判断模块730的判断结果为否时,从所述flash710中读取所述掉电数据。一般来说,高速SDHC的擦写速度很快,例如CLASS10的高速SDHC,其擦写速度可达10MB/S。通常,SDHC中只保存最近一次的掉电数据,之前的掉电数据都会被擦掉。在PLC系统的主板中通常自带有flash,因此无需增加额外的硬件成本。flash又可分为NANDflash和NORflash,以NANDflash为例,标准的NANDflash的擦除时间为2ms/128KB~3ms/128KB,写入时间为200~700us/2KB,则其擦写1MB数据的时间下限为16+102.4=118.4ms,时间上限为24+358.4=382.4ms,即在单板的情况下擦写1MB数据需要118.4ms~382.4ms。
在具体应用中,掉电时超级电容的供电时间一般可以维持1秒,根据上述NANDflash和高速SDHC的擦写速度,可以将数据量阈值设置为1MB。即,若第二数据量判断模块730确定需要读取的掉电数据的数据量小于或等于1MB,则读取管理模块740从主板自带的NANDflash710中读取掉电数据;若第二数据量判断模块730确定需要读取的掉电数据的数据量大于1MB,则读取管理模块740从外插的SDHC720中读取掉电数据。flash710和flash610指代同一个内置存储器,SDHC720和SDHC620指代同一个外插存储器。
本发明提供的用于PLC系统的掉电数据读取装置,在上电后需要读取掉电数据时,通过判断掉电数据的数据量,动态地选择掉电存储介质,与图6所示的掉电数据存储装置相配合,相比于直接默认从flash中读取掉电数据的方案,不会受到超级电容容量有限以及flash擦写速度较慢的影响,能够存储大容量的掉电数据;而相比于直接默认从SDHC中读取掉电数据的方案,又不会因有时掉电数据的数据量太小而浪费SDHC的容量,因此可以节省硬件成本和维护成本。,而且,图6所示的掉电数据存储装置和图7所示的掉电数据读取装置通常集成为一个掉电数据存取装置。
优选地,flash710被预先划分为掉电存储区和掉电存储备份区。此时,读取管理模块740包括:存储区读取模块,用于从所述掉电存储区中读取所述掉电数据;备份区读取模块,用于在所述存储区读取模块从掉电存储区中读取掉电数据的操作失败时,从所述掉电存储备份区中读取所述掉电数据。通常,掉电数据保存在flash的文件系统分区中,当加载此分区的文件系统失败时,操作系统会返回加载失败的程序值,读取管理模块740以此判断读取操作是否成功。
当需要读取的掉电数据的数据量小于或等于1MB时,需要从主板上的NANDflash中读取掉电数据。由于NANDflash自身结构导致容易出现位交换现象,从而导致所存储的数据发生错误,因此可以在图6所示的掉电数据存储装置中对存储于NANDflash上的掉电数据采取备份措施,将NANDflash划分为掉电存储区和掉电存储备份区,在掉电时将掉电数据存储至掉电存储区,同时备份至掉电存储备份区。相应地,在图7所示的掉电数据读取装置中,若存储于掉电存储区的掉电数据发生错误,则备份区读取模块从掉电存储备份区中读取掉电数据,可使存储于flash中的掉电数据具有自诊断修复功能。
更加优选地,掉电数据读取装置700还可以包括:存储区修复模块,用在所述存储区读取模块从掉电存储区中读取掉电数据的操作失败时,格式化所述掉电存储区,并拷贝所述掉电存储备份区中的掉电数据至所述掉电存储区中。更进一步地,将掉电存储备份区的掉电数据拷贝至掉电存储区之后,存储区修复模块可以卸载掉电存储备份区,这样可以避免PLC在受干扰的情况下错误地直接读取掉电存储备份区中的数据,从而可以增加数据安全性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。