西门子PLC执行中断程序时对OB1中的其他程序有影响吗

西门子PLC执行中断程序时对OB1中的其他程序有影响吗,第1张

你如果了解中断的概念就不会有这个疑问了。

中断就是程序正常运行中的任意时刻,中断触发的条件满足以后,暂停正在执行的程序,保存当前状态,然后转而执行中断程序,执行完毕后再恢复被暂停的程序。

中断调用时保存的当前状态仅仅是PLC中累加器、指令指针、状态位寄存器、堆栈寄存器等少数几个数据,并不是OB1中涉及的所有存储区,因此中断结束恢复执行仅仅是保证程序的连续执行。

比如OB1中进行一个加法运算,进行到一半的时候被中断了,如果这时候不保存状态,在中断程序中也会用到累加器,再返回继续加法的时候累加器的数就不是之前的数了,加法运算就错了。在这个层面上中断程序不会对其他程序有影响。

又比如,中断程序中修改了某个数据,这个数据在OB1中用到了,这样必然会影响OB1执行的结果。

中断连接指令(ATCH)使中断事件(EVNT)与中断程序号码(INT)相联系,并启动中断事件。根据指定事件优先级组,PLC按照先来先服务的顺序对中断提供服务。

任何时刻只能激活一个用户中断。其它中断处于激活状态时,CPU发出中断暂时入队,等待以后处理。如果发生的中断数目过多,队列无法处理,则设定队列溢出状态位。当队空时,重置这些位。

中断程序必须由三部分构成:中断程序标号(即中断事件的编号)、中断程序指令和无条件返回指令。在中断程序中不能使用DISI、ENI、HDEF、LSCR和END指令。

扩展资料:

中断优先级

给中断源指定处理的次序就是给中断源确定中断优先级。中断按以下固定的优先级顺序执行:通信(最高优先级)、I/O中断和定时中断(最低优先级)。在上述3个优先级范围内,CPU按照先来先服务的原则处理中断,任何时刻只能执行一个用户中断程序。

如果发生中断过于频繁,使中断产生的速率比可处理的速率快,或中断被DISI指令禁止,中断队列溢出状态位被置1。只应在中断程序中使用这些位,因为当队列变空或返回主程序时,这些位会被复位。

参考资料:

百度百科-中断指令

从名词上就能理解了嘛,中断就是CPU对该程序停止响应。中断方式有定时中断、输入中断、计数器中断等,当这些中断事件发生时,中断程序就执行。指令中有个ENI这是开放中断程序的,中断程序在INT_0中编写

以上就是关于西门子PLC执行中断程序时对OB1中的其他程序有影响吗全部的内容,包括:西门子PLC执行中断程序时对OB1中的其他程序有影响吗、西门子PLC的ATCH中断指令使用、西门子200PLC 关于中断子程序的问题 谁能跟我说一下什么是中断,中断的作用,怎么使用,看资料总是看不懂等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10075312.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存