CPU 的过载特性

时间:2021-07-26点击次数:127

CPU 的过载特性

CPU 过载特性的原理

S7-1500 CPU 用户程序的执行顺序基于事件的不同**级。 事件会触发 OB 的执行,而 OB 只能按**级执行。这意味着同时发出多个 OB 请求时,将首先执行**级较高的 OB。 如果所发生事件的**级**当前执行的 OB,则中断此 OB 的执行。 **级相同的事件按发生的时间顺序进行处理。

以下部分我们假设,每个事件源都分配了一个 OB 且这些 OB 具有相同的**级。 *二个假设条件只是为了简化情景说明。

当一个事件发生时,将触发相关 OB 的执行。 这意味着事件将**级进行排序。 根据 OB **级和当前处理器的负载情况,通常在执行 OB 之前会发生一段时间的延时。 因此,在处理属于先前事件的 OB 前,相同的事件可能会再次或多次发生。 CPU 将按以下方式处理这种情况: 根据发生的顺序,操作系统将按照它们的**级对这些事件进行排列。

如果要控制临时过载,则可以限制与同一源相关的未决事件数量。 当达到一个特定循环中断 OB 中未决启动事件的较大数目时,将丢弃下一事件。

当同一个源的事件的发生速度大于 CPU 的处理速度时,将会发生过载。

我们将在后继章节中,介绍更多详细信息。

丢弃类似事件或稍后执行

下面提及的“类似事件”是指单个源中的事件,如特定循环中断 OB 中的启动事件。

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


提示

通常后期不再对循环事件在进行处理,这是因为这样可能会导致相同或较低**级的 OB 发生过载。 因此,通常会在处理下一个调度的 OB 过程中丢弃类似事件的执行来避免发生过载情况。 “待排队的事件”(Events to be queued) 的值比较低,可确保减轻过载情况而非加重这种情况。



例如,如果达到循环中断 OB 的较大启动事件数目,则只对每个额外的启动事件进行计数,然后将其丢弃。 在 OB 的下一调度执行过程中,可在“event_count”输入参数中(以优化的启动信息形式)获取已丢弃启动事件的数目。 然后对过载情况作出适当响应。 CPU 之后将丢失事件的计数器设置为 0。

例如,如果 CPU 丢弃了循环中断 OB 的启动事件,那么之后的行为特性将取决于 OB 参数“报告事件溢出到诊断缓冲区”(Report event overrun into diagnostic buffer): 如果选中了该复选框,CPU 将在诊断缓冲区中对此事件源的过载情况输入事件 DW#16#0002:3507 一次。 与此事件源相关事件 DW# 16 #0002:3507 的其它诊断缓冲区条目都将禁用,直到后期对该源的事件进行了处理。

时间错误 OB 请求的阈值机制

OB 参数“启用时间错误”(Enable time error) 用于*在达到类似事件的*过载级别时是否调用时间错误 OB。

如果调用(选中复选框),则需使用 OB 参数“时间错误的事件阈值”(Event threshold for time error) *调用时间错误 OB 时队列中类似事件的数量。 例如,如果参数值为 1,则在诊断缓冲区中输入事件 DW#16#0002:3502 一次,并在发生*二个事件时请求时间错误 OB。 与此事件源相关事件 DW# 16 #0002:3502 的其它诊断缓冲区条目都将禁用,直到后期对该源的事件进行了处理。

因此,在发生过载时可选择在尚未达到类似事件限值之前以及在丢弃事件之前编程一个响应。

下列值范围适用于“时间错误的事件阈值”(Event threshold for time error) 参数。 1 <= “时间错误的事件阈值” <= “待排队的事件”



http://shtxjd.cn.b2b168.com

产品推荐