用226 PLC 做了写了一个程序,为了使程序便于调试和阅读,我把机械手夹取工件和放下工件写成2个子程序(自动生产线,子程序都带有局部变量)。。。。我在主程序中一共调取夹取工件子程序3次,放下工件子程序3次,。。。。但是在调用最后一次放下工件子程序程序就执行不正常了, 但当我把最后一次调用放下工件的子程序改为在主程序中直接写出时,就正常了。。。。为什么呢??请各位指教。。。。本人是菜鸟!!!! 还有就是 用子程序有什么需要注意的地方。。。谢谢!!!!!!
问题补充:
"我在主程序中一共调取夹取工件子程序3次,放下工件子程序3次"
程序的前几次调用都正常。。。。就是再最后一次执行放下工件这个子程序就出错!!!。。。而我在顺序功能图中调用这些子程序的条件方法都是一样的。。。但程序只在最后一次调用出错。。。。。这就很纳闷了。。!!
图片说明:
最佳答案
楼主的问题是在子程序中应用了定时器。
转帖一个典型的问题:子程序中如何应用定时器。
定时器在子程序中的表现:
在条件调用子程序的主程序中,当停止子程序调用时,如果定时器已经激活正在计时,停止调用这个子程序会造成定时器的失控。不管此时定时器前面的激活条件如何变化,定时器(1ms、10ms 时基的)会一直走到最大值,定时器输出也会在达到设定值时接通;(100ms 时基的定时器会在上述情况下停止计时,但在逻辑上处于失控状态)。
如果用 SM0.0 调用子程序;或者在控制逻辑的时序上做到能够保证定时功能完整执行,定时器会正常运行。使用条件调用含有定时器的子程序时,一定要注意时序逻辑,以免造成程序运行错误。
提问者对于答案的评价:
谢谢 非常感谢各位前辈的指教!!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc302867.html