功能块和背景数据块迷惑(1)
刘玉蓉
发布于2014-11-11 17:01
36
0
标签:
想问一下,例如我在功能块FB2输出参数定义一个形参变量OUT2,而在OB1中调用该块FB2,并分配实参。生成的背景数据块为DB1,而该形参变量OUT2在背景数据块中对应的地址为DB1.DBX2.0
1、当我通过输入实参变量M4.0接通为1在断开,输出实参M4.2为1,同时背景数据块中输出DB1.DBX2.0也为1
当我在主程序中用一变量恒为1使M4.2复位0,M4.2变为0.看到背景数据块中DB1.DBX2.0仍然为1.断开该变量后,M4.2又返回1.而当我用一变量恒为1使DB1.DBX2.0复位0时,DB1.DBX2.0变为0,M4.2也被复位0。断开该变量后,DB1.DBX2.0和M4.2仍然为0.
为什么实参M4.2变为0,背景数据对应的DB1.DBX2.0不变为0呢?反而背景数据块DB1.DBX2.0变为0的时候,M4.2也为0.是不是形参输出对应背景数据块中地址DB1.DBX2.0决定实参M4.2,
问题补充:
要是我把形参定义输入输出类型变量时,情况是相反的。
图片说明: 1,背景数据块DB1 2,OB1调用该块 3,功能块FB2
佳答案
为什么实参M4.2变为0,背景数据对应的DB1.DBX2.0不变为0呢?
out2是输出类型的变量,它的值只能有程序来决定,不是由外部数据改变的,只有它去改变外部数据。因为m4.2是保存的db1.dbx2.0的值,即由db1.dbx2.0决定m4.2的状态,反过来你强制了m4.2的值db1.dbx2.0是不会变得。
是不是形参输出对应背景数据块中地址DB1.DBX2.0决定实参M4.2。
是的。