异步错误事件(S7-300, S7-400) 延时和禁用中断及异步错误事件 (S7-300, S7-400)指令“DIS_IRT”、“EN_IRT”、“DIS_AIRT”、“EN_AIRT”的目的 可使用这些指令来: • 使用“DIS_IRT(页 7840)”,针对所有后续 CPU 循环来禁用中断和异步错误事件的处理过 程。 • 使用“DIS_AIRT(页 7840)”来延时较高优先级,直至 OB 结束。 • 使用“EN_IRT (页 7843)”或“EN_AIRT (页7845)”来重新启用中断和异步错误事件的处理 过程。 可以在用户程序中对中断和异步错误事件的处理过程进行编程。还必须对相应 OB进行编程。 指令“DIS_AIRT”和“EN_AIRT”的目的 使用指令“DIS_AIRT(页 7844)”来延时较高优先级的中断和异步错误事件、再使用指令 “EN_AIRT(页 7845)”将它们启用,这一系列操作具有如下优点: 中断延时数由 CPU 来计数。如果已对中断和异步错误事件的延时进行编程,则在标准 FC 本 身内禁用了中断和异步错误事件、再启用的情况下,无法通过标准 FC调用来取消该延时。 中断类别 中断分为各种类别。 下表列出了所有中断类别和相应的 OB。
通过错误寄存器中存储的信息,可知道当前优先级中的哪些同步错误至少发生了一次。 如果设置了某一位,则说明相应的已屏蔽同步错误至少发生了一次。 参数 下表列出了指令“READ_ERR”的参数: 参数 声明 数据类型存储区 说明 PRGFLT_QUERY Input DWORD I、Q、M、D、L 或常 量 查询编程错误 ACCFLT_QUERYInput DWORD I、Q、M、D、L 或常 量 查询访问错误 RET_VAL Return INT I、Q、M、D、L 错误信息PRGFLT_CLR Output DWORD I、Q、M、D、L 已发生的编程错误 ACCFLT_CLR Output DWORDI、Q、M、D、L 已发生的访问错误 有关有效数据类型的更多信息,请参见“有效数据类型概述。中断类别 OB 异步错误中断 OB 80至 OB 87(见下面) 同步错误中断 OB 121、OB 122 (可使用指令“MSK_FLT (页7835)”、“DMSK_FLT(页7836)” 和“READ_ERR (页 7837)”来屏蔽或取消屏蔽同步错误中断的 执行) 异步错误事件下表列出了可通过用户程序中的 OB 调用做出响应的所有异步错误事件。DIS_IRT: 禁用中断事件 (S7-300, S7-400)说明 通过此指令,可禁用新中断和异步错误事件的处理过程。 “禁用”的意思是,如果发生中断 事件,则 CPU 的操作系统产生以下响应:• 它既不会调用中断 OB 和异步错误 OB, • 也不会在未对中断 OB 或异步错误 OB 进行编程的情况下触发正常响应。如果禁用中断和异步错误事件,则这种禁用对所有优先级都起作用。只能使用指令“EN_IRT(页 7843)”或通过暖启动或冷启动来取消禁用。发生中断和异步错误事件时操作系统是否将它们写入诊断缓冲区取决于为 MODE选择的输 入参数设置。 说明 请记住,当对指令“DIS_IRT”进行编程时,将放弃发生的所有中断。 参数下表列出了指令“DIS_IRT”的参数: 参数 声明 数据类型 存储区 说明 MODE Input BYTE I、Q、M、D、L 或常量 指定禁用哪些中断和异步错误。 OB_NR Input INT I、Q、M、D、L 或常 量 OB 编号 RET_VALReturn INT I、Q、M、D、L 如果执行指令时出错,则返回值中会 包含一个错误代码。有关有效数据类型的更多信息,请参见“有效数据类型概述。禁用所有新发生的中断和异步错误事件。 (不禁用同步错误。) 将值“0”分配给参数OB_NR 。 继续在诊断缓冲区中进行输入。 01 禁用属于指定中断类别的所有新发生事件。 通过按以下方式进行指定来标识中断类别: •时间中断: 10 • 延时中断: 20 • 循环中断: 30 • 过程中断: 40 • DPV1 中断: 50 • 多处理器中断:60 • 冗余错误中断: 70 • 异步错误中断: 80 继续在诊断缓冲区中进行输入。 02 禁用所有新发生的指定中断。 可使用 OB编号来指定中断。 继续在诊断缓冲区中进行输入。 80禁用所有新发生的中断和异步错误事件,不再将它们输入到诊断缓冲区中。将值“0”分配给参数 OB_NR 。 操作系统将事件W#16#5380 输入到诊断缓冲区中。 81 禁用属于指定中断类别的所有新发生的事件,不再将它们输入到诊断缓冲区中。 操作系统将事件 W#16#5380 输入到诊断缓冲区中。 82 禁用属于指定中断的所有新发生的事件,不再将它们输入到诊断缓冲区中。 操作系统将事件W#16#5380 输入到诊断缓冲区中。EN_IRT: 启用中断事件 (S7-300, S7-400) 说明可使用此指令来启用已通过指令“DIS_IRT (页 7840)”禁用的新中断和异步错误事件的处理过 程。这意味着,如果发生中断事件,则 CPU 的操作系统以下列方式之一产生响应: • 调用中断 OB 或异步错误 OB。 或 •如果未对中断 OB 或异步错误 OB 进行编程,则触发标准响应。 参数 下表列出了指令“EN_IRT”的参数: 参数 声明 数据类型存储区 说明 MODE Input BYTE I、Q、M、D、L 或常 量 指定启用哪些中断和异步错误事件。 OB_NR InputINT I、Q、M、D、L 或常 量 OB 编号 RET_VAL Return INT I、Q、M、D、L如果执行指令时出错,则返回值中 会包含一个错误代码。 有关有效数据类型的更多信息,请参见“有效数据类型概述。DIS_AIRT:延时执行较高优先级中断和异步错误事件 (S7-300, S7-400) 说明 通过此指令,可将优先级高于当前 OB 的中断 OB和异步 OB 的处理延时。可在一个 OB 中调 用指令“DIS_AIRT”一次以上。指令调用将由操作系统进行计数。处理延时一直有效,直到使 用指令“EN_AIRT (页 7845)”取消通过“DIS_AIRT”实现的中断 OB 和异步错误OB 的每个延时 处理,或者已执行完当前 OB。 一旦使用指令“EN_AIRT (页 7845)”取消了延时处理,或当前OB 处理已完成,就会处理尚 未处理的中断或异步错误事件。参数 RET_VAL 下表说明了使用参数“RET_VAL”输出的“DIS_AIRT”的返回值。 返回值 说明 n"n”表示处理延时数,也就是指令执行完成后调用“DIS_AIRT”的次数(只有当 n = 0 时才会启用中断处理;请参见“EN_AIRT (页 7845)”)。 EN_AIRT: 启用执行较高优先级中断和异步错误事件(S7-300, S7-400) 说明 通过此指令,可恢复执行使用“DIS_AIRT(页 7844)”延时的高优先级中断事件或异步错误事 件。 每个处理延时都必须用指令“EN_AIRT”来取消。 示例例如,如果通过 5 次“DIS_AIRT (页 7844)”调用将中断延时了 5 次,则必须使用 5 次“EN_AIRT”调用来取消每个中断延时。有关有效数据类型的更多信息,请参见“有效数据类型概述 (页 255)”。 参数RET_VAL 通过输出参数 RET_VAL 评估错误(页184) 一章介绍了评估参数 RET_VAL 的错误信息的方法。该章节还阐述了指令的常见错误信息。下表说明了与使用参数“RET_VAL ”输出的“EN_AIRT”特 定相关的返回值或错误信息。返回值和错误信息 说明 n "n”表示处理延时数,也就是指令执行完成后调用“EN_AIRT”的次数(只有当 n = 0时才会启用中断处理)。 "已启用中断处理,也调用“EN_AIRT”。 多处理器中断 (S7-300,S7-400) MP_ALM:多处理器中断 (S7-400) 说明 在多值计算过程中调用此指令将触发多处理器中断。 这会导致所有涉及的CPU 上 OB 60 的 同步启动。 在单处理器模式下和使用分段机架进行操作时,只启动调用 MP_ALM 的 CPU 上 的 OB60。 可使用输入参数 JOB 来标识引起多处理器中断的原因。此作业标识符将传送到所有相关 CPU 上。在这些 CPU上,多处理器中断 OB (OB 60) 中可以计算该作业标识符。 可在程序中的任意位置来调用此指令。 在 RUN模式之外的任何模式中,由于这种调用与位 置无关,如果在 STARTUP 模式中进行调用,则可以抑制多处理器中断。 函数值将会通知这种情况。