我抽取了比较典型问题,简化了电气信号贴出来,仍是关于上个问题的延续。中断程序里只留下了一个累加器记录中断次数。信号i0.0、i0.1、i0.2来自不同时间片,相互不关联。每个中断关联后已经开启中断,动作完毕后取消关联。三个工段靠t32/t96接力定时。实际调试时,t32/t96根本不动作。中断程序里累加器没有记录。v100.x换成m点等其他中间触点,结果仍然一样。
问题补充:
说明:sm0.1上电加载条件关联中断子程序,已经一次性给定。主程序里由输入信号来临时刻引发分段调用。中断程序里只保留累加器跟踪中断次数。
T32如果顺利执行的话,中断次数累加1,然后回到主程序完成开关动作,T96完成动作后,复位段标志,复位定时器。中断程序里没有摆放更多指令是担心执行时间长了,引发系统执行时间出现问题。就这种简化过的过程,还是出现了T32/T96不能正常计时的问题。T32/T96在0-1之间摇摆的现象。
图片说明:
最佳答案
看了你的程序,有几处不合理。
1)首先是对定时器多次赋值的应用,错误理解。
如定时器T32不允许你那样多次调用?你如果需要给定时器赋值,只能是改变定时器PT端,如VW254的数据。
2)这2个定时中断T32/T96,你还是没有理解上次提问中我的回复。该定时中断如T32定时时间到的那些赋值,如给AQW4的那段程序,应该是写到连接定时中断所指定的中断子程序中,你这样的写方式,没有了定时中断的概念,实际上如普通定时器的应用一致了。
3)关于定义中断。这个调用仅仅需要在一个周期内定义一次就可以了,不需要多次定义中断初始化,一般用SM0.1或者沿触发。当调用中断分离后,如果仅仅需要启用定时中断,则仍然需要触发一次定时中断初始化。
补充问题回复:
你在玩不安套路出牌的程序。
如果你需要调用不同定时中断时间,那么可以在T32定时器的PT管脚赋值不同的时间值就可以,T32/T96的定时中断不是这样定义的。
建议先理解T32/T96定时中断的初始,然后在所连接的中断子程序中不断变化定时中断时间,相当于你中断子程序0或者1中定义。
提问者对于答案的评价:
十分感谢网站中热情的朋友们对我的提问做出的解答。能够和同道们一起交流是件愉快的事情。但是就这个问题而言,是有点打破常规的地方。wwcwwc网友的意见,显然是看到了我的关键问题所在。我会按照他的意见去修改实际的代码,或许努力还是不能成功,但在失败当中摸索前行,不就是我们的日常吗?感谢了朋友们!
最佳答案作者回复:
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1621944&b_id=64&s_id=83&pno=0
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc280296.html