DB和M的使用区别

本人在调试时,发现一个这样的问题,具体见图片:OB1多次调用FC1,其中FC1中形参add5为IN_OUT接口,如果ob1中调用
FC1输出给DB块,则在Sure为0时,DB块不能保持Sure为1时的数值,而如果FC1输出给M,则M可在Sure为0时保持Sure为1时的值,疑惑为什么会有这样的区别,在使用DB时,在sure为0时,所有的FC输出为同一个值,均为最后一个FC1在sure为1时的值,我发到论坛讨论的地址:http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1381183&b_id=4&b_sid=0&s_id=0&pno=0#1381183
各位大侠请帮忙解惑

问题补充:
最近做了几次试验最终得到了一部分结论,具体见我的分享贴:http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1381183&b_id=4&b_sid=0&s_id=23&pno=1

大体意思是:ob1在调用FC时,其L堆栈的L21-26存放输入db块的pointer地址,L27-L30存放输出地址,当无输出时,FOB1 L堆栈中27-30存放的数据会复制到此时的输出值,整个过程类似于在FC中使用临时变量。总结:使用DB块时,也要在FC中保持DB块对应的形参时刻有赋值

图片说明:

DB和M的使用区别    DB和M的使用区别   

最佳答案

数据块DB地址与M地址是一致的。
你的问题在于调用FC时,临时变量需要先赋值(这里必须是先清0后),才进行求和,FC子程序调用改为有条件调用。

提问者对于答案的评价:

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc153032.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月5日 下午7:48
下一篇 2017年6月5日 下午7:48

相关推荐