今天用博图编程的时候由于博图总是自动生成程序段的注释,所以想在选项里关掉,结果在设置里偶然发现有这么一个选项:将访问方式为“标准”的背景数据块元素设置为具有保持性(S7-1200/S7-1500)
看字面的意思就是给标准的1200和1500的FB背景数据块设置为“保持”属性。用过300的都知道,FB的背景数据块默认就是保持的呀,难道到了博图需要手动设置了?看一下手册说明,果然如此:300和400是系统默认设置DB块为保持性,不论是全局DB还是背景DB;1200和1500的背景DB如果是非优化的访问就通过这个选项设置保持性。
我测试了一下这个选项的功能,同样的非优化访问的FB,在不激活这个选项的时候,FB的背景DB是非保持的,如果激活这个选项生成的DB就是保持的。
我赶紧找出之前做的项目程序,打开发现所有的背景DB都是非保持的,这下完蛋了,现场如果断电重启那么程序的历史数据将会清空。要解决这个问题只能手动将DB设置为保持,但是需要重新初始化和下载,影响是不可避免了。
不理解博图为啥要这么设置,使用FB就是为了能保持历史数据,怎么搞出这么一个选项呢?如果不注意可是要出大问题了,应该继续默认保持,如果不保持才需要手动修改才对。
另外如果要保持非优化访问的DB,那么整个DB都要存储到保持存储区,而1511系列的保持存储区才128K,虽然一般项目够用,也明显浪费。如果采用优化访问的话可以单独设置变量的保持性,可以节省不少。但是之前为了兼容国产上位软件我使用1500也是采用了非优化的方式,方便上位机访问背景数据。要解决这个问题我认为通过UDT的方式将需要上位访问的变量放在全局DB中并设置为断电保持,通过FB的接口传送给FB,这样就可以把FB设置为优化的块访问,只把背景数据里需要断电保持的变量设置为保持即可,即节省断电保持存储区,又能兼容国产上位软件。不知道大家是怎么处理背景DB的保持性的?