何启海
级别: 略有小成
精华主题: 0
发帖数量: 263 个
工控威望: 383 点
下载积分: 1363 分
在线时间: 142(小时)
注册时间: 2017-02-20
最后登录: 2024-12-08
查看何启海的 主题 / 回贴
楼主  发表于: 2023-07-23 14:34
话说中断大家都用过,一般逻辑程序都是放在主程序里面,这时候降低程序的扫描周期,有没有谁把程序写进中断里面的啊,例如西门子中大型机,直接把FC块拉进OB中断里面。例如中断时间设置成10ms,这时候疑问来了,例如原本程序需要80毫秒扫码一次,把所有的块都拉进中断里面时,是10ms扫码一次,还是80ms扫码一次呢?
曾以为80毫秒的扫描时间很短,但是到达执行元件时已经是轻舟已过万重山了。
gxtmdb82164
级别: 论坛先锋
精华主题: 0
发帖数量: 770 个
工控威望: 1148 点
下载积分: 399 分
在线时间: 604(小时)
注册时间: 2019-09-22
最后登录: 2024-12-23
查看gxtmdb82164的 主题 / 回贴
1楼  发表于: 2023-08-01 15:38
主要还是现在PLC的速度足够快,绝大多数情况下没有中断重入的问题,加上本身PLC底层会做一定的保护,真在单片机裸机环境下,在中断里面胡写八写,或者中断源没有管理好,遇到中断重入,肯定是会出问题的.

1L的例子其实是非常好的,估计有的人还没看懂,正常循环执行的程序,本身就需要80ms去执行的代码,放到中断中每10ms启动一次,怎么可能执行的完呢?(假设这个80ms是纯粹的程序扫描时间,不是后台处理)

按照大部分小型PLC的编程范式要求进中断以后关总中断,出中断开总中断是一种典型的处理方式(主动丢弃),
还有一些PLC会在底层处理,这个要看手册,一般都是中断挂起的方式(被动丢弃),总之是不能重入的,这个看一下中断嵌套会加深理解