SM331断线检测OB82 判断是哪个通道断线
刘玉蓉
发布于2014-10-14 17:52
169
0
标签:
在硬件里面启用了SM331 0和1通道的断线检测中断,当有断线发生时,在OB82里面怎么判断出是哪个通道断线,我开始以为里面的局部变量#OB82_MDL_ADDR是发生中断通道对应的地址,结果不是是所在模块的起始地址字,我记得OB40里面当有数字量硬件中断发生时通过#OB40_ADL_ADDR(触发中断的模块的地址)和#OB40_POINT_ADDR(触发中断位,这个有点疑问比如我0位发生中断但这个值确是1)可以判断是哪个通道中断,那331通过OB82怎么实现这种判断啊
佳答案
1、OB82不能检测到331具体的哪一个通道坏了。
它只能判断,带有诊断功能的模块,在硬件组态的时候,把这一功能勾选,那么在程序当中调用OB82只能判别出,这个模块有故障!
2、诊断中断组织块(OB82):
如果模块具有诊断能力又使能了诊断中断,当它检测到故障时,它输出一个
诊断中断请求给CPU(到来和离去事件)。于是操作系统调用OB82。
3、OB40可以实现你的功能!
硬件中断组织块(OB40 到OB47):
通过STEP 7 进行参数赋值,可以为能够触发硬件中断的每一个信号模板指定以下参数。
? 哪个通道在哪种条件下触发一个硬件中断。
? 一个硬件中断OB 被分配到单独的通道组。(作为默认,所有硬件中断被OB40处理)
?运用CP 和FM 模板,您可以用它们自己的软件设置这些参数。
?您可以运用STEP 7 为每一个硬件中断OB 选择优先级。
4、理解硬件中断组织块OB 的运行
在硬件中断被模板触发之后,操作系统识别相应的槽和相应的硬件中断OB。
如果这个OB比当前激活的OB 优先级高,则启动该OB。在硬件中断OB 执行之
后,将发送通道确认。如果在处理硬件中断的同时,同一中断模板上有另一
个硬件中断,这个新的中断的识别与确认过程如下:
? 如果事件发生在以前触发硬件中断的通道,旧的硬件中断触发程序正在执
行,则新中断丢失。
? 如果这个事件发生在同一模板的另一个通道,那么没有硬件中断能被触发。
但是这个中断没有丢失,在确认当前激活硬件之后被触发。如果一个硬件中断触发并
且它的OB 正在由于另一个模板的硬件中断而激活着,则记录新的中断申请,
在空闲后会执行该中断。
用SFC 39 – 42 可以禁止、延时和再使能硬件中断。您可以用STEP 7 中的
SFC 55 到57,为硬件中断模板分配参数。