PLC丢失问题是一个相对麻烦的问题,因为它不仅涉及到技术问题,同时也可能面临着经济问题。
本文主要从技术层面,对PLC程序丢失的原理、判断方法以及丢失后补救方法,三个方面予以说明。
希望能给对这个问题感兴趣的朋友一点参考,不足之处,也希望大家给予评判指正!
PLC在水电站自动化控制领域是一个非常重要,非常常见的电气设备。
不论是在计算机监控系统的LCU盘柜中,调速器系统的电调柜中,机组辅机控制盘柜中,还是闸门控制柜中,我们都能看见它的身影。
同时它也是非常稳定可靠的电气设备。
一、为何会出现PLC程序丢失问题?
既然PLC本身具有稳定可靠的特性,那为什么还会有程序丢失问题呢?
要说明这个问题,我们还得从PLC存储器的特性来解答。
PLC存储器按照存储方式可以分为随机存储器( RAM)和只读存储器(ROM)。

那什么是RAM呢?
RAM 是英文Random Access Memory的缩写。
Random是随机随意的意思。
Access是访问,存取(计算机文件),到达的意思。
Memory是记忆力,存储器的意思。
合起来就是随机存取存储器的意思。
RAM可以随时读写,而且速度很快 ,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。
RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。
它与ROM的最大区别是数据的易失性。
RAM经常被用来存储用户程序、逻辑变量等信息。
断电后,内存中的内容不再保留。为了防止断电后RAM的内容丢失,PLC采用锂电池作为RAM的备用电源。
那什么是ROM呢?
ROM是英文Read-Only Memory的缩写。
ROM以非破坏性读出方式工作,只能读出无法写入信息。
信息一旦写入后就固定下来, 即使切断电源,信息也不会丢失 ,所以又称为固定存储器。ROM常用于存储各种固定程序和数据。
ROM还有下面3种常见的类型:
PROM编程只读存储器
EPROM可擦可编程序只读存储器
EEPROM带电可擦可编程只读存储器
了解了RAM和ROM的特性,我们也就大致明白了为何高可靠的PLC为何还有程序会丢失的可能性。
那是因为只要PLC的芯片设计需要使用RAM来保存用户数据,就需要电池保持。
一旦电池电压低于某个值或完全没电,没有及时更换,同时PLC的外部电源断电,就会造成程序丢失 。
下图是S7-300 PLC存储器分布图,对西门子PLC比较熟悉的朋友,可以仔细看看它的存储器概念。

结合CPU存储器的特点,还有一个人为因素也会导致PLC程序丢失。
那就是配置了Flash卡的PLC,调试工程人员在*载下**程序的时候,忘记把程序写入Flash卡中 。
那么有人就会问了,Flash卡又是什么东西?
Flash闪存,它属于内存器件的一种。
它不仅具备电子可擦除可编程(EEPROM)的性能,还 不会断电丢失数据,同时可以快速读取数据 (NVRAM的优势)。
所以FLash是结合了ROM和RAM的长处,但介于RAM与ROM之间。
在PLC里,我们可以把它简单理解为ROM。
有了这个东西,PLC中的程序一般是不会丢失的,除非这个闪存卡损坏,或者CPU损坏了。
Flash确实好,因为有了它,我们就不怕PLC的程序丢失了。
但如果从方便的角度的去看, 它有一点不足之处,那就是早期的PLC程序用Flash卡保存程序的时候都需要一步额外的操作 。

工程师在修改程序后需要将程序“复制”到Flash卡中。
S7-400系列PLC和早期的S7-300系列PLC CPU以及GE 90-30系列PLC。
在程序*载下**的过程中都有一步类似这样的操作。
而选择使用RAM作为程序存储器的PLC就没有这个多余操作。
那可能又有人要说了,复制还不简单吗?这根本就不是事。
对,如果将程序复制到Flash卡中的操作只执行一次,那它确实不是事。
但,如果在调试程序的过程中,频繁地进行这项操作,或许它还是一个麻烦事 。
这里有两个问题:
一是, 将程序*载下**到Flash卡中的速度要比*载下**到RAM中慢很多,而在程序调试的过程中也没有必要把程序*载下**到Flash中 。
二是,频繁将程序写入Flash卡,会缩短Flash的使用寿命。
基于以上两个原因, 一般在调试程序的过程中,很少有人会选择在每次修改程序后将程序复制到Flash卡中。
而是在工程完工后,最后选择将程序复制到Flash卡中固化程序,以防丢失。
最后固化,问题就来了。
人脑毕竟不是机器,在最后这个时间节点上,人脑是没有一个定时提醒的。
而完全凭工程师的记忆,要记住最后还要完成这样一步操作,是有遗忘概率的。
如果调试工程师没有将程序固化到Flash卡中,那么即便配置了Flash卡,遇到了PLC双断电的情况,程序一样会丢失。
即便Flash卡中程序没有丢失,PLC重启后,也并非是最新修改过的程序。
二、如何判断PLC程序是否丢失?
明白了PLC程序丢失的原因,那么如何判断PLC的程序丢失了呢?
这里有两个方法:
1.直观法。
2.专业法。
直观法就是用眼睛去观察。
几乎每款PLC面板上,都配置了PLC运行Run指示灯或信息显示屏。
Run指示灯不亮或者信息显示屏显示“Stop”,我们可以初步怀疑PLC程序没有了。
但,不能就此下结论,因为I/O模块损坏,寻址错误,存储卡或者CPU有问题等各种情况都有可能导致CPU故障停机。
此时,如果通过排查,消除故障,将使能过的“Run”、“Stop”切换开关,从Stop工作模式能顺利地切换到Run模式。
那么PLC的程序是没有丢失的。
如果不能切换成功,很有可能程序就没有了,下一步需要做专业判断。
除了通过Run指示灯或信息显示屏判断外,我们还可以通过与PLC连接的其它部件辅助观察。
例如,PLC的输出模块应该输出,而现在却没有任何输出。
与PLC通讯的触摸屏数据不刷新或者组态画面信号指示不正确等。
专业法就是工程电脑去联机。
最常用的方法就是用PLC的编程软件,通过PLC的以太网卡在线联机。
在线联机不了,PLC程序丢失的可能性就非常大。
在线能联机,PLC程序不对等,Flash卡固化的程序或电脑中的程序非最新程序。
三、PLC程序丢失后应该怎么办?
如果PLC中的程序真的丢失了应该怎么办呢?
3个措施可以恢复:
1.如果PLC的硬件没有损坏,同时PLC的源程序备份工作做得也很好, 可直接将备份的源程序重新*载下**到CPU中,完成程序丢失的恢复工作 。
2.如果PLC的硬件没有损坏,但PLC的源程序没有备份了,可选择 邀请专业工程师重新编写程序,重新调试设备 。
3.直接选择技术改造,将原PLC换成具有程序保护功能的新款PLC。
例如,现在阶段使用比较多的施耐德M340系列PLC。
它不同于原Quantum和Premium,它有一张专用的SD卡来保存程序,所以断电后程序不会丢失。
M340处理器本身除了用于处理程序所需的RAM外还自带闪存。
当断电时,数据会从RAM备份到自身闪存中,热启动后再从闪存恢复到RAM中。如图:
