博图标准化编程技巧(八)FB背景数据块的保持性
西门子FB和FC的区别就是FB带有一个专属的背景数据块,可以保存程序运行的中间变量。有些变量数据我们希望是断电保持的,比如仪表的量程设置值,流量计的流量累计值,水泵的运行总时间等。在使用S7-300和传统STEP7的时候,FB的背景数据块都是默认断电保持的,如果不想断电保持还需要在DB块的常规属性里勾选“非掉电保持”。

在博图环境下,FC、FB和DB等有优化的块访问和非优化的块访问两种模式,由于习惯了传统STEP7的用法,并且需要与国产SCADA软件通讯,因此我在初次使用1500PLC的时候,还是给所有FC、FB和DB选择了非优化的块访问模式,按照传统STEP7的开发习惯封装FB并将仪表的量程设置存储在背景DB里,顺利的完成了项目。突然有一天现场反馈停电恢复后所有仪表量程和设备运行时间均归零了,在线查看程序发现FB的背景DB数据没有设置为断电保持,经过查询手册发现原来在博图里背景DB已经默认取消断电保持属性,如果要恢复断电保持默认需要在设置中勾选保持性选项。并且博图下非优化的块只能整体设置为断电保持或非断电保持,优化的块可以挑选变量设置为断电保持。


由于断电保持数据区是有限的,在用300的时候,如果程序量较大超出了限制我们只能升级CPU;用1500的时候可以有两种方法解决:一是可以通过选择HF型号的PS电源扩展掉电保持数据区,1511可以扩展到1M;二是可以选择使用优化的块访问模式,只勾选需要掉电保持的变量,减少掉电保持数据区的占用。可如果需要用国产SCADA软件监控PLC怎么办呢?这个我在技巧(一)讲UDT数据的时候已经说过了,可以单独设置一个供上位访问的非优化DB块,SCADA访问的数据统一放置在这个专用DB块里,再通过接口与优化的FB连接,这样就可以使用最少的掉电保持数据区实现国产上位软件的访问。