我想问一下,例如我在功能块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,
问题补充:
要是我把形参定义输入输出类型变量时,情况是相反的。
图片说明:
最佳答案
为什么实参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。
是的。
提问者对于答案的评价:
但是把形参定义为输入输出时,情况就相反了!这是不是说明与形参定义的类型有关联!以前没注意到这个问题
最佳答案作者回复:
是的,输入输出类型的对于本程序块来说是可读可写的,输入类型的是对于本程序块来说是只读的,不能修改,输出类型的是本程序块可以读写,但外部程序只能读,不能写。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc206789.html