• 沒有找到結果。

用于处理中断和异步出错的SFC

长沙工控帮教育科技有限公司整理 Copy

12 用于处理中断和异步出错的SFC

12.1

延迟和禁用中断和异步出错

SFC39到SFC42的用途

通过这些SFC,可以达到下列目的:

• 通过SFC39 “DIS_IRT”,对所有后续CPU周期禁用中断和异步出错。

• 通过SFC41 “DIS_AIRT”,延迟更高的优先级直到OB结束。

• 通过SFC40 “EN_IRT”或SFC42 “EN_AIRT”,启用中断和异步出错。

您在用户程序中编程中断和异步出错的处理。同时还必须编程相应的OB。

SFC41和SFC42的优点

通过SFC41 “DIS_AIRT”禁用更高优先级的中断和异步出错,然后再通过SFC52

“EN_AIRT”重新启用它们,从而延迟更高优先级的中断和异步出错,这样做具有以 下优点:

被延迟的中断数由CPU进行计数。如果已延迟中断和异步出错,而且也在标准FC 自身中禁用并重新启用了这些中断和异步出错,则不能通过标准FC取消延迟。

长沙工控帮教育科技有限公司整理

中断等级

中断分为多个等级。下表列出了所有中断等级和相应的OB。

中断等级 OB 日历中断 OB10到OB17

延时中断 OB20到OB23 周期性中断 OB30到OB38 硬件中断 OB40到OB47 DPV1中断 OB55到OB57

多值计算中断 OB60 冗余出错中断 OB70、OB72

异步出错中断 OB80到OB87(参见下文) 同步出错中断 OB121、OB122

(可以通过SFC36到SFC38屏蔽或取消屏蔽同步出错中断的处理)

异步出错

下表列出了可以在用户程序中通过OB做出响应的所有异步出错。

异步出错 OB 时间出错(例如,超出周期时间) OB80

电源出错(例如,电池故障) OB81 诊断中断(例如,信号模块上有故障的保险丝) OB82

删除/插入模块中断 OB83 CPU硬件故障(例如,存储卡已拆除) OB84

程序出错 OB85 机架故障 OB86

通讯出错 OB87

长沙工控帮教育科技有限公司整理

12.2

使用SFC39 “DIS_IRT”禁用新中断和异步出错的处理

描述

通过SFC39 “DIS_IRT”(禁用中断),可以禁用新中断和异步出错的处理。也就是说,

如果发生中断,则CPU操作系统的处理如下:

• 既不调用中断OB或异步出错OB,

• 也不触发常规响应处理(如果未编程中断OB或异步出错OB的话)。

如果禁用中断和异步出错,则这对于所有优先级都有效。只能通过调用SFC40

“EN_IRT”(参见通过输出参数RET_VAL判断出错)部分0)或者通过暖重启或冷重启重 新取消“DIS_IRT”的影响。

发生中断和异步出错时,操作系统是否将其写入诊断缓冲区取决于为MODE选择的 输入参数设置。

注意

请记住,如果在程序中使用了SFC39 “DIS_IRT”,则将丢失发生的所有中断!

参数 声明 数据类型 存储区域 描述 MODE INPUT BYTE I、Q、M、D、L、

常数

指定禁用哪些中断和异步出错。

OB_NR INPUT INT I、Q、M、D、L、

常数

OB编号

RET_VAL OUTPUT INT I、Q、M、D、L 如果在功能处于激活状态时出错,则返回值将 包含出错代码。

MODE

MODE 含义

00 将禁用所有新发生的中断和异步出错。(未禁用同步出错。)将值0赋值给OB_NR参数。

继续在诊断缓冲区中 输入条目。

长沙工控帮教育科技有限公司整理

MODE 含义

01 禁用所有新发生的、属于指定中断等级的事件。通过为中断等级指定最小可能的OB编号来标 识该中断等级(即使CPU中不存在此OB)。

实例:

如果要禁用所有监视狗中断,请在OB_NR中指定30(即使OB30不是CPU的第一个监视狗 OB。) 区中输入事件W#16#5380。

81 禁用所有新发生的、属于指定中断等级的事件,且不再将它们输入到诊断缓冲区中。

操作系统在诊断缓冲区中输入事件W#16#5380。

82 禁用所有新发生的、属于指定中断的事件,且不再将它们输入到诊断缓冲区中。操作系统在 诊断缓冲区中输入事件W#16#5380。

出错信息

12.3

使用SFC40 “EN_IRT”启用新中断和异步出错的处理

描述

使用SFC40 “EN_IRT” (启用中断),可以启用先前通过SFC39 “DIS_IRT”禁用的新中 断和异步出错的处理。也就是说,如果发生中断事件,则CPU操作系统将以下列方 式中的一种进行处理:

• 调用中断OB或异步出错OB。

• 如果未编程中断OB或异步出错OB,则触发标准响应处理。

参数 声明 数据类型 存储区域 描述 MODE INPUT BYTE I、Q、M、D、L、

常数

指定将启用哪些中断和异步出错。

OB_NR INPUT INT I、Q、M、D、L、

常数

出错信息

出错代码(W#16#...) 说明

0000 未出错。

8090 输入参数OB_NR包含非法值。

8091 输入参数MODE包含非法值。

8xyy 常规出错信息,请参见使用输出参数RET_VAL评估出错。

长沙工控帮教育科技有限公司整理