前言
PLC的断电保持是很重要的,在没有上位机进行传参的情况下,PLC又使用了HMI界面,这个时候就需要PLC实现断电后必要的数据保持的功能,当然断电后的数据保持功能也可以用于其它。本文将介绍倍福PLC CX9020的断电后数据保持的操作流程。
一、西门子PLC与倍福PLC断电保持数据的区别
以西门子S71200为例子,想要实现断电后的数据保持功能,只需分配对应的数据存储区来实现数据的掉电保持,就可以实现断电保持,只需要使用博图软件对PLC进行设置。如图1和图2所示
图1
图2
小明:那倍福能不能使用这种方法呢?
小杨:答案是不行
小明:为什么?
小杨:西门子S7-1200的内部存储区包括:装载存储区(load memory)、工作存储区(work memory)和保持存储区(retain memory)
小杨:解释一下这3块存储区的区别:
装载存储区(load memory):
是非易失性存储区,相当于计算机的硬盘。装载存储区用来存放用户项目文件(用户程序、数据和组态)。在不插存储卡的情况下,用户使用STEP7软件下载项目即是下载到装载存储区。除了用户程序和数据,项目中的符号名和注释也会被下载到装载存储区中,极大地方便了用户的后期调试和维护。
工作存储区(work memory):
是易失性存储区,相当于计算机的内存。CPU在执行用户程序时会将一些项目内容从装载存储区复制到工作存储区。断电后工作存储区中的内容会丢失,且不能被扩展。
保持存储区(retain memory):
非易失性存储区,CPU检测到电压降低到一定程度时,会将工作存储区中设置成掉电保持的数据保存到保持存储区中。
小杨:倍福嵌入式控制器与个人计算机类似,其数据存储器包括非易失性存储器(硬盘、CF卡、CFast卡等)和易失性存储器(内存)。为了与传统PLC兼容,将内存的一部分划分出输入映像区(Input)、输出映像区(Output)和位存储区(Memory)。这三种存储区均可以绝对地址访问,默认大小均为128KB。与传统PLC相比没有专门设定保持存储区,所以需要使用其它方法。
二、倍福断电保持的方法与选择
小明:那倍福断电保持数据可以使用什么方法呢?
小杨:据我目前了解到的方法有:
1、写Retain型数据实现保持(NOVRAM功能)
2、写Persistent实现数据保持(需要选购UPS功能)
3、写XML文件实现数据保持
4、写TXT文件实现数据保持
5、等等其它方法
小明:那我在CX9020-0112PLC上面前四种方法都可以使用吗?
小杨:这个可不行
小明:那些可以使用呢?
小杨:首先后面两种需要将要保存的数据从倍福PLC内部导出(格式为TXT或者XML),然后当PLC断电后要保存数据消失了,就可以使用倍福PLC那个读取TXT和XML文件来导入数据。这种操作有些麻烦不是很推荐,无法实时更改(小白见解不喜勿喷)
小杨:然后就是前面两种方法了,(写Retain型数据实现保持)第一种方法是倍福PLC保持数据的通用方法可以使用。(写Persistent实现数据保持)第二种方法需要你的倍福PLC的电源模块带有UPS ,(UPS是一种含有储能装置的不间断电源,当设备中途断电,通过逆变器可以继续向负载提供电源,有的倍福控制器内置了UPS,有的没有,没有内置就需要外置一个UPS电源。 )
小杨:因为小明你的CX9020-0112是没有选购UPS功能的所以你没法使用第二种方法,所以建议你使用第一种方法!当然你也可以购买一个UPS电源,或者买一个CX9020-U900就可以使用第二种方法啦!
小明:好的我知道了
小杨:好再次确认一下
1、倍福PLC型号 CX9020-0112 无外置UPS电源
2、软件TwinCAT2
3、使用断电保持方法:写Retain型数据然后将变量映射到NOVRAM实现功能
(NOVRAM:是一种特殊的存储器,综合了ROM和RAM的优点读写次数机务无限,且随时可以读写,并且掉电能够保持)
小明:OK,那具体如何操作呢?
三、操作步骤
可以直接参考倍福虚拟学院的教学(还是很棒的),里面还有源码与详细的步骤文档而且均可免费下载:
TwinCAT2(CX9020)
https://tr.beckhoff.com.cn/mod/folder/view.php?id=2485
TwinCAT3(CX9020)
https://tr.beckhoff.com.cn/mod/folder/view.php?id=2486
TwinCAT2(CX2020)
https://tr.beckhoff.com.cn/mod/folder/view.php?id=2492
TwinCAT3(CX2020)
https://tr.beckhoff.com.cn/mod/folder/view.php?id=2487
TwinCAT3(CX9020)、TwinCAT3(CX2020)、TwinCAT3(EL6080)NOVRAM断电数据保持功能可参考下面网址:
https://tr.beckhoff.com.cn/mod/folder/view.php?id=2021&lang=en
USP的使用方法
https://tr.beckhoff.com.cn/course/view.php?id=19#section-7
根据上面的教程基本上都能够实现功能
1、简单讲解一下步骤
步骤1:打开下面软件找到NOV,设备ID为3,后面源码设备ID为4需要修改
**步骤2:**导入库
**步骤3:**写入代码
源码可以直接下载,也可以手动敲入,建议直接去上面链接里面下载。
源码是这个样子的:
问题???????????????????????
源码片段:
nReadOffs:= 64,
(可以根据target browser给出的地址信息,计算出数组类型所占地址空间,下一个功能块的地址偏移在原有基础上增加)
nWriteOffs:= 64,
源码里面的数组的地址偏移为什么是64
因为数组定义了100个byte,就是50个字 按照后面的推理,该地址偏移应该填写50,我这里猜测是故意填写为64,有一定的余量(只是猜测)希望有大佬可以解答一二!!!!
四、总结
实现功能,能够实现倍福PLC CX9020的断电保持,且稳定。
拓展:CX9020使用FB_NovRamReadWriteEx写入NOVRAM导致CPU负载间歇性过大的优化办法:
下面是下载文档网址
https://tr.beckhoff.com.cn/pluginfile.php/23100/mod_folder/content/0/%E5%8F%98%E9%87%8F%E7%9A%84%E6%8E%89%E7%94%B5%E4%BF%9D%E6%8C%81/CX9020%E4%BD%BF%E7%94%A8FB_NovRamReadWriteEx%E5%86%99%E5%85%A5NOVRAM%E5%AF%BC%E8%87%B4CPU%E8%B4%9F%E8%BD%BD%E9%97%B4%E6%AD%87%E6%80%A7%E8%BF%87%E5%A4%A7%E7%9A%84%E4%BC%98%E5%8C%96%E5%8A%9E%E6%B3%95/CX9020%E4%BD%BF%E7%94%A8FB_NovRamReadWriteEx%E5%86%99%E5%85%A5NOVRAM%E5%AF%BC%E8%87%B4CPU%E8%B4%9F%E8%BD%BD%E9%97%B4%E6%AD%87%E6%80%A7%E8%BF%87%E5%A4%A7%E7%9A%84%E4%BC%98%E5%8C%96%E5%8A%9E%E6%B3%95.docx