时间错误中断OB

2019年1月14日15:42:33 发表评论 179 阅读

如已组态,那么当扫描周期超过最大周期时间或发生时间错误事件时,将执行时间错误中 断 OB (OB 80)。 如已触发,错误中断将中断正常的循环程序执行或其它任何事件 OB。

发生任何上述事件都将生成一个描述相应事件的诊断缓冲区条目。 无论是否存在时间错误中断 OB,都将生成诊断缓冲区条目。

时间错误中断事件

出现几种不同时间错误情况中的任何一种都会引起时间错误事件:

  • 扫描周期超过最大周期时间如果程序循环在指定的最大扫描周期时间内未完成,就会出现“超出最大周期时间”这种 情况。
  • 由于在CPU结束执行第一次中断 OB 前又启动了第二次中断(循环或延时),因此CPU 无法启动所请求的 OB。
  • 发生队列溢出

如果中断的出现频率超过 CPU 的处理频率,就会出现“发生队列溢出”这种情况。 CPU 通过不同的队列对各种事件类型的未决(排队的)事件数量加以限制。 如果相应队列已满时发生某一事件,那么 CPU 将生成一个时间错误事件。

所有时间错误事件都会触发时间错误中断 OB(如果存在)的执行。 如果时间错误中断OB 不存在,那么 CPU 的设备组态将决定 CPU 对时间错误做出何种反应:

  • 默认时间错误(如在CPU完成第一个循环中断前开始第二个循环中断)组态是CPU保持 RUN 模式。
  • 针对超出最大时间的默认组态是CPU切换为 STOP 模式。 通过执行RE_TRIGR 指令重启周期时间监视,用户程序可将程序循环执行时间最多延长为所组态最大周期

时间的十倍。 但是,如果在同一程序循环中出现两次“超出最大周期时间”情况且没有复位循环定时器, 则无论时间错误中断OB是否存在,CPU都将切换到STOP模式。

时间错误中断OB包含的启动信息可帮助您确定生成时间错误的事件和OB。 可以在OB中编写指令,以检查这些启动值并采取适当的措施。

表格 5- 6 时间错误 OB (OB 80) 的启动信息

 

输入 数据类型 说明
fault_id BYTE 16#01 - 超出最大循环时间

16#02 - 请求的 OB 无法启动

16#07 和 16#09 - 发生队列溢出

csg_OBnr OB_ANY 出错时正在执行的 OB 的编号
csg_prio UINT 导致错误的 OB 的优先级

要在项目中包括时间错误中断 OB,请在树形结构的“程序块”(Program blocks) 下双击“添加新块”(Add new block),然后依次选择“组织块”(Organization block)、“时间错误中断”(Time error interrupt),将时间错误中断添加到项目中。

新的 V4.0 CPU 的优先级为 22。如果用 V4.0 CPU 更换 V3.0 CPU ,则优先级为26,该优先级对 V3.0有效。在任一情况下,优先级字段均可编辑,您可以将优先级设为 22 到 26范围内的任意值。

weinxin
plc入门知识问答
每一个PLC工程师都应该关注的微信公众账号,只需输入您的问题,就会有答案

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: