信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。

收藏

评论

点赞

定时中断真的像你想的那样运行吗 会员

发布时间:2022-07-20
  • 1
  • 1147
  • 20
  • 6
  • PLC
  • S7-1500
  • 技术文章
摘要: 循环中断,人人都会用,那么循环中断如果不正常执行了怎么解决?我们的故事主人公就遇到了这么蹊跷的事情,让我们来看看他是如何发现问题、解决问题的,还有我们能从这件事情上收获到哪些 CPU 的运行原理。

前言:

定时中断,很多人都用过,在S7-300时代代表是OB35,而在S7-1500时代,代表是OB30,意思是每隔固定长的时间执行一次程序,例如每隔100ms执行一次定时中断组织块中的程序,一般常用在PID计算,或者是精确计时等场合。

故障描述:

在正常生产过程,CPU 1516-3 PN/DP的诊断缓冲区忽然出现大量的相同事件:“超出所允许的未决OB36事件数 – 时间错误,请求启动OB80”,以及“OB36事件缓冲区溢出 – 将继续执行功能(系统响应)”,如图1所示。虽然没有导致 CPU 停机,但是一是影响了其他事件在诊断缓冲区的显示,二是OB36缓冲区溢出似乎导致OB36内的程序的循环执行受到了影响。

 

图1 诊断缓冲区

故障背景:

CPU 1516-3 PN/DP的OB36是每隔10ms执行一次的定时中断。

故障分析:

1) 通过诊断缓冲区提示,“OB36事件缓冲区溢出”,于是打开了OB36的属性设置页面,在OB36的属性中对事件队列进行了如图2的设置。待排队的事件:1,过载事件将在诊断缓冲区中留下一次记录:启用时间错误,时间错误的事件阈值:1。

 

图2 OB36 事件队列设置

缓冲区溢出对应着组态的过载事件,意思是循环中断出现了按照组态的话每隔一定时间执行(比如现在OB86每隔10ms执行一次),但因为种种原因有些次中断时间到了但是没有执行,也就是某些循环中断OB执行被跳过了。

2) 报警“超出所允许的未决OB36事件数 – 时间错误,请求启动OB80”

调用OB80,触发了看门狗的程序。翻阅手册发现一般有这么几个可能:

  • 扫描周期超过最大周期时间

这个首先排除,整个程序的扫描周期并没有超过设置的最大周期时间。

  • 请求的中断无法启动

这个是因为前一个中断没有执行完,而后一个相同的中断又进来了,有一定可能,毕竟OB36循环时间很短,并且内部执行的程序还比较多。

  • 中断队列溢出

这个是因为当前中断因为一些更高优先级的中断的存在,导致无法执行,从而进入缓冲队列,当缓冲队列超过了设置,就会造成时间错误中断。看到了这项,再结合诊断缓冲区的事件信息,基本可以确定是因为这个导致时间错误中断的提示。那是因为什么导致的呢?

3)针对这个问题,做了以下测试,使用RT_INFO指令,读取OB36的执行时间,发现OB36的执行时间不超过6ms,而设置的循环调用时间是10ms,并没超过调用时间,为什么会出现启动OB80的故障呢。

之后又仔细的看了一下帮助,发现了RT_INFO,有一段话:


OB 的运行时间定义为CPU处理此OB的命令的时间段。因此不包含处理更高优先级OB和可能中断OB的通信任务所需的时间。因此,如果想要确定从处理OB的第一个命令到处理OB的最后一个命令(表示包括处理更高优先级OB和可能中断OB的通信任务)之间所用的完整时间

1847会员专享内容,登录后会员免费观看完整内容

本文/视频版权归西门子1847工业学习平台所有,未经允许,不得转载。

满意度
暂无评论

关联文章

  • SIMATIC S7-1200/S7-1500 F-CPU

    免费 2017-12-28
  • 如何配置 SIMATIC S7-1500 的 OPC UA 客户端可以通过 FQDN 或绕过 FQDN 连接服务器?

    免费 2020-03-17
  • 如何在S7-1500R/H冗余控制器上操作DP从站?

    免费 2020-03-17
  • 使用 S7 OPT OPC UA 服务器进行一致的读写操作

    免费 2020-03-17
  • S7-1500作为Modbus TCP客户端访问多个设备的方法

    免费 2020-10-12