在FB中用到上升沿,为了不想再对其分配地址,就定义在Stat中,可是有的时候可以,有的时候就不可以,即有时候只执行一遍,有时候不停执行,上升沿FP根本没用,怎么解释呀?请大师指教
问题补充:
回复letham:程序比较大,再加上要有保密性,不方便外传,加FP边沿检测的语句再加跳转是可以的,之前有这么写过,刚刚这个段落的程序剪切到其他段落,重新下载又好了,就是不理解为什么时而好时而坏,前后什么都没改,只是换个段落而已
图片说明:
最佳答案
这样用stat是没问题的,你遇到的问题可能是重新编辑FB后 对应背景DB没有完全更新所致,亦或多重调用FB时没有及时完整更新相关DB。所以这些DB都要注意重新建一遍为妥。
提问者对于答案的评价:
感谢给我大师的指点,原因我找到了,是因为我在前面用了AR2,导致FB内部寻址发生错误,要再对AR2重新赋给初始化值才可以,具体多少就看该FB声明在背景数据块收个地址了。例如:因为我用的多重背景,打开背景数据块,找到这个FB第一个声明的地址,我这个是从4.0开始的,所以AR2应该默认是4.0开始,而在这个FB内部,我用到了AR2,对其进行了重新赋值10.0,那么这时候stat寻址就会发生错误,必须要在重新对AR2赋值4.0,FB才不会出现错误。
换言之,AR2是FB、FC内部地址寄存器,只要在接口声明了变量,IN,OUT,IN_OUT,STAT,TEMP任何一个,只要你定义了,此时你再用AR2时就要注意,用完后要记得赋初始化值,具体多少,只需打开背景数据块找找即可。
专家置评
没有对整个程序的参考,这个问题很难查找。
楼主遇到的问题参考:
西门子STL间接寻址常问问题集
https://support.industry.siemens.com/cs/cn/zh/view/76492353
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc225187.html