数据块调用
刘玉蓉
发布于2014-10-17 16:52
160
0
标签:
在主程序里调用了两个FB(均为压力的数据采集程序)功能块,由于M区的数据存储量不够,编了两个共享DB块,可是在主程序调用FB块时出现图中所示的问题,自动生成调用数据块时,我怎么填都不对,总是有报警显示,总提示“数据类型冲突”,而且字体显示红色,截图如下,请高手指教?
CPU31401AG13-0AB0,模拟量331-7KF0200AB0
有哪位可以说说.
问题补充:
想问下,那些自动生成的“背景DB”块,里边应该是什么内容啊?我的是打开以后什么都没有?截图如下,有哪位给个明示啊?
图片说明: 1,问题截图 2,背景DB界面
佳答案
从问题截图可以看出DB2为红色,说明DB2不存在或它不是当前功能块FB的背景数据块,背景数据块用来保存FB和SFB的实参和静态数据,背景数据块中的数据是自动生成的,它们是FB的前边变量声明表中的数据(不包括临时变量TEMP)。调用FB时必须指定对应的背景数据块。
你在编写FB中程序时,保存FB时,PLC操作系统在编译FB时,将自动生成与功能块FB对应的背景数据块中的数据,其变量与对应的功能块中的变量声明表中的变量相同,不能在背景数据块中增减变量,只能在数据显示方式下修改实际值,或者通过对应的功能块的变量声明表来修改。
一般你可以直接编写FB块中的程序,并保存,不要建立任何共享数据块或背景数据块;然后在组织块OB1中调用FB时,如调用一个功能块为FB2,可以直接填写数据块如DB2(数据块DB2不存在,这时它为红色):
CALL FB2,DB2(实际背景数据块不存在,DB2 为红色)
你在填写DB2时,它为红色,表示不存在,你在点击FB2中工具栏上“保存”按钮时,会出现下列对话框:
LADS/STL/FBD (30:150)
The instance data block DB2 doesn’t exist, do you want to generate it?(背景数据块DB2不存在,你想建立它吗?)
单击“Yes”,就自动建立与生成与功能块FB对应的背景数据块中的数据块DB2,同时CALL FB2, DB2中DB2变为黑色,表示DB2已经建立,可以在你的项目“块”中看到。其变量与对应的功能块中的变量声明表中的变量相同,它们是一一对应关系。这时可以打开DB2,看到背景数据块中所有数据。
根据你的情况,你可以删除共享数据块,一般FB有自己的专用背景数据块(一个FB可以有多个背景数据块,但一个背景数据块只能属于具体的一个FB),然后在组织块如OB1中重新调用如FB2、FB3,直接填写相应的空的背景数据块,按照上述方法产生新的对应的FB的背景块,就没有上述问题。建议在调用FB时不要使用共享数据块,而是直接产生对应的背景数据块。