为什么我的程序加一个 (P) 就报错

图一, 程序段6,为什么一加上一个上升沿P我的程序就报错。??   图二,程序段1, 在OB1中调用FC105,   报错指示:Status PIW 还是0, 显示正常没有报错,  一运行到程序6我加上上升沿,程序的结尾(图三)就报错, MW2  就变成16#0100,   这也能检测出来吗???   为什么程序段6加上升沿不对??   求解释,请赐教

问题补充:
是的,在FC105的输入口,我输入的范围一直没有超过量程,是0-27648范围内。  我仿真器上改变数值0-27648来运行, 我认为讲解者视频编写的程序段6那里加个(P)会更好些,当然是个人看法。  后来我就加了。我看见大家回答的我这软件里也没有|  P | 啊, 只有线圈的P ,  补充提问图1的那两个红圈。它们有什么区别吗?我读了软件上的帮助我也没有读懂。尴尬

补充提问的图2,我加了(P),之后,T1一接通, 程序段最后故障检测就变成不是0了,正常的话应该是0000, 现在变成图3的样子。    如果把(P)删除了就可以了。  就正常了。  我很纳闷, 程序最开始的FC105输出的是正常的MW0,  就是0嘛。就是正常嘛。  我只是加了 (P)再T1接通后,我也没有动MW0,    到程序最后故障检测它的值就变了。神奇。。。。。当然一定是我加个P引起的,但我不知道什么原因啊。。。。。
钻牛角尖了,但我还是想向大家学习学习请教请教,非常感谢!

图片说明:

为什么我的程序加一个 (P) 就报错    为什么我的程序加一个 (P) 就报错    为什么我的程序加一个 (P) 就报错    为什么我的程序加一个 (P) 就报错    为什么我的程序加一个 (P) 就报错    为什么我的程序加一个 (P) 就报错   

最佳答案

你上升沿地址用错了啊
输入用的MW2包括M2.0-M3.7的地址,M2.3包含在里面了,所以当你上升沿使用M2.3的时候,把MW2里面的值也就改了

另外如果你这个程序是多次调用的,上升沿指令的地址如果是FB的建议使用静态类型的变量,如果是FC,那就使用INOUT类型从外部输入一个地址,要不然,多次调用,里面上升沿使用一个地址的话,子程序的逻辑结果会是错误的

提问者对于答案的评价:
尴尬流汗,我说的呢,来回试了好几次不行。  非常感谢大家的回答。谢谢

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日 下午10:56
下一篇 2020年10月30日 下午10:56

相关推荐