Twido PLC的所有运行数据都具有掉电保持功能,也就是说,PLC运行过程中的所有字寄存器、位寄存器及特殊功能模块等内部变量的数据,在下一次通电时的值与其断电前的值是一致的,例外情况是当PLC发生冷启动时,所有数据被清零(关于冷启动的概念请参考Twido的资料)。
有些设备中要求上电时部分或全部的数据区都要清零才能工作,例如为防止设备在突然失电后再次通电时,设备突然工作而带来对操作人员的潜在的危险;或者设备的启动需要严格依照特定的顺序才能进入正常工作流程,等等。在这些设备的控制中,都需要在PLC上电时的第一个扫描周期处理相应的数据处理(多数为清除数据中的内容或清除数据内容后再对部分数据赋以初始值)。
从不同设备的数据初始化的要求上划分,有清除全部数据或清除部分数据的要求;而从Twido PLC的实现上来讲,实现两种要求都没有问题。设备的编程人员需要分析设备的实际要求,确认清除全部同内存是否可以,如果可以,那么PLC的编程非常简单;如果不能清除全部内存数据,需要知道那些类型的内存数据(内存字寄存器?内存位寄存器?还是某些特殊功能块的数据?等等)不可以被清除,不同的内存数据清除要求,其实现的PLC程序是不一样的。下面就几种不同内存数据清除要求分别说明。
一、 PLC中的所有内存数据都可以清除
这种情况下的编程是最简单的,只要利用Twido PLC的系统位%S0就可以完成。见下面程序图。需要注意,对系统位%S0的操作不能用SET指令,否则PLC无法正常工作。
指令表程序:
(* 上电后第一个扫描周期做初始化,清除全部数据 *)
(* %S1热启动标志;%S13是PLC由编程状态转入运行状态标志 *)
LD 1
AND( %S1
OR %S13
)
ST %S0
二、 PLC中除部分内存字寄存器(%MW)外的所有内存数据都可以清除
这种情况的编程简单的方式是用第一种情况的程序再配合系统位%S95、%S96及系统字%SW97,将需要保留的内存字寄存器%MW的数据保存到Twido PLC内置的Flash中,等到数据清除操作完成后,再将相关的%MW的数据从Flash中调出。
使用Twido PLC的内置的Falsh保存及恢复%MW数据,需要规划好需要操作的%MW数据区,使之从%MW0开始。编程的细节可以参考另外一篇文章《施耐德电气Twido系列PLC数据掉电保存的应用》。
三、 PLC中需要保留部分内存字寄存器(%MW)及部分内存位寄存器(%M)
这种情况可以考虑为清除掉不需要保留的内存字寄存器(%MW)及内存位寄存器(%M),先生成一个第一个扫描周期的标志,用这个标志完成不需要保留部分内存的数据。
下面的程序中清除%MW90~%MW189共100个内存字寄存器%MW及%M64~%M95共32个内存位寄存器%M。
指令表程序:
(* 得到上电后第一个扫描周期的标志 *)
(* %S1热启动标志;%S13是PLC由编程状态转入运行状态标志 *)
LD 1
AND( %S1
OR %S13
)
ST %M0
(* 清除部分内存字寄存器%MW及部分内存位寄存器%M *)
LD %M0
[ %MW90:100 := 0 ]
[ %M64:16 := 0 ]
[ %M80:16 := 0 ]
四、 清除部分特殊功能块的数据
首先需要生成一个第一个扫描周期的标志:
上电时清除定时器的数据(复位)
上电时清除计数器的数据(复位)
上电时清除步进计数器的数据(复位)
上电时清除堆栈(LIFO)寄存器/队列(FIFO)寄存器/移位寄存器的数据(复位)
上电时清除鼓形控制器的数据(复位)
其它带有复位端(R)的特殊功能块,都可以将第一个扫描周期信号接到它的复位端上完成其数据清除功能。
五、 Twido PLC数据的掉电保持功能对输出点的影响
在Twido PLC中,如果PLC在掉电时某一个输出点正处出输出状态,则其在上电时会有一个瞬间的接通过程,即使这个输出点在上电时它相关程序部分不满足输出的条件。这样一来,会使部分输出点有一个快速的闪动,在有些设备的控制上不允许这种情况发生,可以用以下处理方式中的一种去除这种影响。
将第一个扫描周期信号的常闭点串接在输出点控制回路中是最容易想到的:
Twido PLC的系统字%S9作用是当它被置为1时,PLC的所有输出点被强制为0,利用这个功能,做出下面的防止PLC输出点在上电时闪动的程序:
如果想让抑制PLC输出点在上电时闪动的功能更加可靠,可以改为:
通过上面介绍可以看到,Twido PLC虽然没有提供某些PLC的可配置掉电保持区域的功能,但可以通过编写程序的方式完成各种要求的内存数据的保持或清除。虽然在使用时会略显麻烦,但为编程者提供了更多的选择,从这个角度看,Twido PLC的数据保持/清除功能比使用配置方式的产品有更大的灵活性。