PLC掉电保持数据丢失常见原因分析及解决措施

浏览: 时间:2024-03-01 分类:PLC

掉电保持是PLC应用中的一个重要功能,它的正确使用确保了系统的可靠性和稳定性。通过正确配置和使用掉电保持功能,可以避免因异常断电而导致的数据丢失、程序中断或系统崩溃等问题。

然而,在实际使用过程中可能会发生各种异常情况,导致掉电保持数据有丢失的风险。因此,本文将列举分析可能导致数据丢失的常见情况,以加强我们对这一功能的理解和应用。


一、电容问题


》产生原因

少部分的PLC因实际使用环境的原因导致部分电容寿命耗尽,电容损坏的情况。

》排查方法

1)直接在掉电保持区里面的变量重新赋值,然后断电重启,如断电重启后数值没有变化,跟更改前一致,则可以判断为电容损坏。

2)双击device,点击文件,然后点击刷新,找到文件夹PlcLogic点击打开选择Application文件夹,找到Application.ret文件点击删除项(删除之前可以点击中间的左箭头把文件放到电脑里面备份),断电重启,再按照以上的方法查看Application文件夹中是否有再次生成Application.ret文件,如果没有则可以判断为电容损坏,操作步骤如下图所示。

注:

PMC600和610在固件版本20221028之前的,APP和RET存放于:CODESYSControl/
在固件版本为20221028以及之后的版本APP和RET存放于:PlcLogic/Application/

MC500在固件版本110121014之前的,APP存放于:CODESYSControl/
在固件版本为110121014以及之后的版本APP和RET存放于:PlcLogic/Application/

下图为PMC600和PMC610,20221028和MC500,110121014之后版本的打开.ret文件的操作步骤。

MC_13

MC_14

MC_15

下图为PMC600和PMC610,20221028和MC500,110121014之前版本的打开.ret文件的操作步骤。

MC_16

》解决措施

联系我司工作人员进行返厂维修。


二、PLC下载程序时更新配置文件导致


》产生原因
因为Codesys机制原因,当下载程序时,掉电保持文件(.ret)和程序文件(.app)是通过CODESYS BACnet的服务器时写入BACnet堆栈的配置文件,然后在运行时组件中读取该文件。所以部分概率会出现掉电保持文件被刷新的情况。

》排查方法
当日志中出现下图的信息,可以判断为掉电保持文件被刷新

MC_17

》解决措施

通过配方管理器的功能,先将掉电保持数据保存一份,或者使用我司最新优化的掉电保持功能进行储存(可联系我司工作人员升级软件和固件)。


三、CPU负载率过高


》产生原因

工程调试过程中,若CPU占用率很高(97%以上),且下载或者在线修改中弹出下图“创建启动工程失败”错误提示时,此时若设备重新上电,程序和数据都会出现丢失的情况。

MC_18

MC_19

》排查方法

可在device----PLC指令中输入PLCload或者查看最下面的CPU负载率查看PLC的CPU占用率。

MC_20

MC_21

》解决措施
优化程序合理分配任务优先级和任务调度的情况。


四、重复定义IoDrvEtherCAT


》产生原因

程序中增加IoDrvEtherCAT块定义(原本不需要定义),程序下载后会弹出下图的报错,需要使用SD或者U盘的方式重新下载一个空程序,当重新下载程序后工程和数据可能会出现丢失的情况,因为由于IoDrvEtherCAT作为IoDrv在系统初始化阶段就存在系统回调函数(例如IoDrvUpdateConfiguration、IoDrvUpdateMapping或功能块FB_init 等),如果在此类函数中出现异常,将可能出现GlobalInit或 CodeInit阶段的“异常”的警告的出现。

》解决措施

请勿定义直接使用IoDrvEtherCAT块。

MC_22

五、永久性变化需初始化提示


》产生原因

在线修改或者全部下载过程中,若提示“永久性变化需要初始化” 如果选择【取消】,则再次登录时提示设备中无应用,程序和数据将会丢失,如果选择“是”,这时所有的永久性变量会被初始化,如果选择“否”,会用PLC中永久性变量初始化当前工程中永久性变量,由于地址出现了偏差,可能造成永久性变量值出现错位。(注意:常见工程升级、设置“静态分析灯”、修改编译选项会引起永久性变量的存储位置和名称变化,登录时均可能提示“永久性变化需要初始化”)。

MC_23

》解决措施

通过配方管理器的功能,先将掉电保持数据保存一份。

六、数组越界、指针异常、死循环


》产生原因

数组超限、指针异常和死循环时可能会出现底层的runtime系统出现异常,当重新下载程序时,程序运行报异常如下图所示,退出登录,再次在线时提示“无源代码”(如下图所示),此时PLC重新上电时一定概率出现程序和数据都丢失。

MC_24

MC_25

》解决措施

优化程序,检查程序中是否有数组越界、指针异常、死循环等情况。


七、修改持久性变量表


》产生原因

修改持久性变量表后在线修改或者下载时未勾选“更新启动项目”,可能会导致掉电保持功能失效,从而导致出现持久性变量均变为初值。


MC_26

》解决措施

当修改RETAIN变量或者PERSISTENT变量,在登录PLC时,弹出“代码更改处理方式”对话框,如上图,都要选择更新启动项目,否则有可能导致数据丢失。


八、掉电保持变量未在程序里面使用


》产生原因

在POU或者全局变量中中定义持久性变量且添加实例化路径到持久性变量列表,若该POU未被任务调用或者调用或者全局变量定义的未在程序中调用,该持久性变量掉电不保存。

MC_27

MC_28

》解决措施

要求在循环执行任务中调用POU和全局变量定义的变量在程序中调用。


九、删除掉电保持路径


》产生原因

若删除持久性变量表中所有实例化路径,并全部重新添加,PLC会重新划分地址区域,此时再次通过实例化添加持久性变量值都会变成初始值。

MC_29

》解决措施

请勿随意删除实例化路径。


十、写文件过于频繁


》产生原因

因为我们的掉电保持变量是存储在flash里面,如果进行频繁写入文件的操作(例如1ms写2次)会对flash造成损坏,有一定概率会出现数据丢失的情况。

》解决措施

合理设置写文件的频繁,合理的编写代码。


十一、列表重新排序


》产生原因

当你选择列表重新排序时,PLC内部的储存区会重新分配内存,从而导致掉电保持数据初始化。

MC_30

》解决措施

通过配方管理器的功能,先将掉电保持数据保存一份。