S7 1500-CPU的过载特性

描述

发生某个事件时,系统将触发相应的  OB 执行。根据  OB 的优先级和当前处理器的负载情况,如果发生过载,则在  OB 执行前可能会产生一段时间延时。因此,用户程序在处理先前事件的  OB 时,相同的事件可能会发生一次或多次。此时,CPU 将执行以下操作:操作系统将根据发生的顺序,照事件的优先级对其进行排列。CPU 随后会将最早的事件当作优先级最高的事件并处理关联 OB 。OB 处理完毕后,CPU 会处理下一事件的 OB 。 

如果要控制临时过载,则可限制源自同一问题的排队事件的数量。当达到一个特定循环中断  OB 中未决触发的最大数目时,下一个事件将丢弃。 

如果类似事件的出现速度快于  CPU 处理这些事件的速度,则会发生过载。类似事件是指单个源中的事件,如特定循环中断  OB 中的启动事件。 

过载响应的组态 

在可能发生过载的组织块的属性中,可在“ 属性”(Attributes) 和“ 事件排队”(Event queuing) 下选择相应的过载响应。 

处理器

待排队的事件 

OB 参数“ 待排队的事件” (Events to be queued)  用于指定操作系统在相应队列中将稍后处理的类似事件数目。例如,如果此参数值为 1 ,则仅临时存储一个事件。 

如果达到队列中的最大类似启动事件数目,则只对每个额外的启动事件进行计数,然后将其丢弃。在事件的下一调度处理过程中,CPU 通过“ Event_Count ” 输入参数(以启动信息形式)提供已丢弃启动事件的数目。然后对过载情况作出适当响应。然后,CPU 将丢失事件的计数器重置为 0 。

报告事件溢出到诊断缓冲区中 

例如,如果  CPU 首先丢弃了循环中断  OB 的启动事件,则之后的操作将取决于该  OB 参数“ 报告事件溢出到诊断缓冲区中” (Report event overflow into diagnostic buffer)。如果已选中该复选框,CPU 将针对此事件源的过载情况在诊断缓冲区中输入事件。如果再次发生过载的情况(溢出计数器从  0  变为 1 ),则会在下一  OB 结束处输入另一诊断缓冲区条目。 

启用时间错误 

循环中断  OB 参数“ 启用时间错误” (Enable time error)  用于指定在达到类似事件的特定过载级别时是否调用时间错误 OB 。使用  OB 参数“ 启用时间错误” (Enable time error)  设定达到类似事件的限值之前对过载的响应。CPU 丢弃类似事件之前的响应。 

下例显示了多个类似事件的出现速度快于  CPU 处理关联  OB 的速度时  CPU 的响应。在示例  1  中,用户选择了以下参数分配: 

处理器

下图显示了事件调用关联  OB 后的处理序列。 

处理器

发生的事件调用  OB 后,事件会占用  OB 的一个时隙。CPU 处理完该事件后,被占用的时隙会再次可用。如果  CPU 尚未完成对发生事件  OB 的处理,随后发生的事件在这段时间内会各占用  OB 的其它时隙。此数目超过配置的待排队事件数目后,这些事件会被丢弃,并会由溢出计数器进行计数。完成长时间运行的  OB 时,CPU 会在诊断缓冲区中创建一个条目,并会将溢出计数器置零 ( ①)。CPU 处理完长时间运行的  OB 后,会接着处理依次排队事件的 OB 。下次出现新事件时,CPU 会将之前的复位溢出计数器值写入  OB 的启动信息中。CPU 随后会处理  OB ( ②)。 

在示例  2  中,用户选择了以下参数分配: 

处理器

与示例  1  不同,示例  2  中的  CPU 在超出所组态的事件阈值后将请求时间错误。仅当  OB的所有时隙同时释放时,才会出现其它时间错误。 

处理器

 

 

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分