西门子高级编程全集处理同步和异步错误.ppt

上传人:本田雅阁 文档编号:3303364 上传时间:2019-08-10 格式:PPT 页数:16 大小:541.02KB
返回 下载 相关 举报
西门子高级编程全集处理同步和异步错误.ppt_第1页
第1页 / 共16页
西门子高级编程全集处理同步和异步错误.ppt_第2页
第2页 / 共16页
西门子高级编程全集处理同步和异步错误.ppt_第3页
第3页 / 共16页
西门子高级编程全集处理同步和异步错误.ppt_第4页
第4页 / 共16页
西门子高级编程全集处理同步和异步错误.ppt_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《西门子高级编程全集处理同步和异步错误.ppt》由会员分享,可在线阅读,更多相关《西门子高级编程全集处理同步和异步错误.ppt(16页珍藏版)》请在三一文库上搜索。

1、,处理同步和异步错误,处理异步错误,异步错误并未对应到程序的某个特定位置,例如,它们可同程序的处理过程异步出现。,1) 仅适用于 S7-400,2) 非Stop w/o Error OB,举例,错误类型,时间错误,超出最大扫描时间,电源错误,后备电源故障,诊断中断,可诊断模块的输入断线,删除/插入模块中断,在运行模式下将一个 S7-400 信号模块移除,CPU 硬件错误,在MPI 接口出现故障信号电平,程序顺序错误,更新过程映像出现错误 (模块有故障),机架错误,分布式机架上电源故障,通信错误,不正确的消息代码,错误 OB,OB 80,OB 81 2),OB 82,OB 83 1),OB 84

2、 1),OB 85,OB 86 1),OB 87,处理故障组织块,为了在发生错误时抑制 CPU STOP,传送一个空的故障组织块 您可以在Error OB中编写预期的响应,并根据需要在执行 Error OB之后使用系统功能 SFC 46 请求系统处于 Stop 状态 在故障组织块的启动信息中存有一个附加错误标识符,可在程序中检验。 在线帮助或者系统和标准功能手册中详细介绍了故障组织块 将OB传送到一个不支持该OB的CPU时,将被该CPU拒绝并伴随一个错误消息。,异步错误 OB 举例,OB81: Error OB: 电源故障 Network 1: 电池故障,到来的事件 L #OB81_FLT_I

3、D / 加载错误标识符 L B#16#22 / 标识符: CR 中的电池故障 =I = M 81.1 / 设置存储器标志位 L #OB81_EV_CLASS / 标识符: 到来,离去 L B#16#39 / 标识符: 到来事件 =I = M 81.2 / 存储器标志位到来事件 A M 81.1 / 电池故障和 A M 81.2 / 到来事件 S M 81.0 / 将存储器标志位设为错误显示 / Network 2: 当电池恢复正常后,复位辅助存储器标志位 L #OB81_EV_CLASS / 标识符: 到来,离去 L B#16#38 / 标识符: 离去 =I R M 81.0 / 复位存储器标

4、志位,处理同步错误,同步错误直接定位到用户程序中的一个位置 算术指令中的错误(溢出、无效的实数数据) 设置状态位 处理 STL语句时的错误(同步错误) 调用同步错误 OB,举例,错误类型,编程错误,调用 CPU 中不存在的块,访问错误,直接访问一个有缺陷的或者不存在的模块,错误 OB,OB 121,OB 122,编程错误 OB121 的启动信息,数据类型,变量名,OB121_EV_CLASS,BYTE,OB121_SW_FLT,BYTE,解释,赋值,B#16#25=调用编程错误 OB121,错误代码(参见文本),OB121_PRIORITY,BYTE,OB121_OB_NUMBR,BYTE,其

5、中发生错误的优先级,OB 编号(B#16#79),OB121_BLK_TYPE,BYTE,OB121_RESERVED_1,BYTE,中断块的类型(仅适用S7-400 ) OB: B#16#88, DB: B#16#8A, FB: B#16#8E, FC: B#16#8C,错误码的补充(参见文本),OB121_FLT_REG,WORD,OB121_BLK_NUM,WORD,OB121:错误源,发生错误的块的号码,OB121_PRG_ADDR,WORD,OB121_DATE_TIME,DT,引发错误的块中的错误地址(仅适用 S7-400),发生编程错误时的时间,访问错误 OB122 的启动信息,

6、数据类型,变量名称,OB122_EV_CLASS,BYTE,OB122_SW_FLT,BYTE,解释,赋值,B#16#29=调用访问错误,错误代码(可能的取值:B#16#42、B#16#43、 B#16#44、B#16#45),OB122_PRIORITY,BYTE,OB122_OB_NUMBR,BYTE,其中发生错误的优先级,OB 编号(B#16#80),OB122_BLK_TYPE,BYTE,OB122_MEM_AREA,BYTE,中断块的类型(仅适用于 S7-400) OB: B#16#88, DB: B#16#8A, FB: B#16#8E, FC: B#16#8C,错误码的补充(参见

7、文本),OB122_FLT_REG,WORD,OB122_BLK_NUM,WORD,OB122:发生错误处的地址标识符,其中发生错误的块的号码,OB122_PRG_ADDR,WORD,OB122_DATE_TIME,DT,引发错误的块中的错误地址(仅适用 S7-400),发生编程错误时的时间,屏蔽同步错误,同步错误 OB 的缺点: 用于过程管理和错误处理的代码分布在至少两个块中 后续更改或维护方面的问题 较理想的情况: 用于过程管理和错误处理的代码位于同一个块中 屏蔽同步错误: 在“紧急”指令之前: SFC 36 MSK_FLT: 屏蔽同步错误 (OB12x 禁止调用) 执行“紧急”指令 检查

8、是否有错误发生 SFC 38 READ_ERR: 读 Error Register(错误寄存器) OB12x 再次开放调用: SFC 37 DMSK_FLT: 解除屏蔽同步错误,SFC 36 屏蔽同步错误,“MSK_FLT“,EN,ENO,PRGFLT_SET_MASK,ACCFLT_SET_MASK,RET_VAL,?.?,PRGFLT_MASKED,?.?,ACCFLT_MASKED,?.?,?.?,?.?,参数 声明 数据类型 内存区域 解释 PRGFLT_SET_MASK INPUT DWORD I, Q, M, D, L, Const. 新(附加的)编程错误过滤器 ACCFLT_SE

9、T_MASK INPUT BYTE I, Q, M, D, L, Const. 新附加访问故障过滤器 RET_VAL OUTPUT INT I, Q, M, D, L SFC 返回值,001:新过滤器同已 有的过器滤重叠 PRGFLT_MASKED OUTPUT DWORD I, Q, M, D, L 完成编程错误过滤 ACCFLT_MASKED OUTPUT DWORD I, Q, M, D, L 完成访问错误过滤,编程错误过滤器的结构,BCD 转换错误,范围长度错误,读,范围长度错误,写,范围错误,读,范围错误,写,计时器号错误,计数器号错误,未对齐,读,未对齐,写,未定义,写错误 DB,

10、写错误实例 DB,块编号错误 DB,块编号错误 DI,块编号错误 FC,块编号错误 FB,DB 未加载,FC 未加载,FB 未加载,注: 输出参数 RGFLT_MASKED 的相应位的设置如下: Value(值) = 1: 屏蔽错误。 Value(值) = 0: 不屏蔽错误。,访问错误过滤器的结构,31 30 29 . . . 7 6 5 4 3 2 1 0,I/O 读访问错误,仅对于 S7-400: I/O 访问错误,指读取不存在的模块或者 重复访问,未定义,I/O 写访问错误,仅对于S7-400: 向不存在的模块写入或者重复访问而引发 I/O访问错误,. . .,注:输出参数 ACCFLT

11、_MASKED 的相应位 设置如下: Value = 1: 屏蔽错误。 Value = 0: 不屏蔽错误。 未定义的位的值为“1”。,SFC 37 解除同步错误屏蔽,“DMSK_FLT“,EN,ENO,PRGFLT_RESET_MASK,ACCFLT_RESET_MASK,RET_VAL,?.?,PRGFLT_MASKED,?.?,ACCFLT_MASKED,?.?,?.?,?.?,参数 声明 数据类型 内存区域 解释 PRGFLT_RESET_MASK INPUT DWORD I, Q, M, D, L, Const. 编程错误过滤器复位 ACCFLT_RESET_MASK INPUT BY

12、TE I, Q, M, D, L, Const. 访问错误过滤器复位 RET_VAL OUTPUT INT I, Q, M, D, L SFC返回值, W#16#0001:新的过滤器中包含已存贮的 过滤未设置的位 PRGFLT_MASKED OUTPUT DWORD I, Q, M, D, L 仍被屏蔽的编程错误 ACCFLT_MASKED OUTPUT DWORD I, Q, M, D, L 仍被屏蔽的访问错误,SFC 38 读错误寄存器,“READ_ERR“,EN,ENO,PRGFLT_QUERRY,ACCFLT_QUERRY,RET_VAL,?.?,PRGFLT_CLR,?.?,ACCF

13、LT_CLR,?.?,?.?,?.?,参数 声明 数据类型 内存区域 解释 PRGFLT_QUERRY INPUT DWORD I, Q, M, D, L, Const. 编程错误过滤检查 ACCFLT_QUERRY INPUT BYTE I, Q, M, D, L, Const. 访问错误过滤检查 RET_VAL OUTPUT INT I, Q, M, D, L SFC返回值, W#16#0001:检查过滤结果中包含了未设置的 位(在存贮的过滤器中) PRGFLT_CLR OUTPUT DWORD I, Q, M, D, L 编程错误过滤及错误信息 ACCFLT_CLR OUTPUT DWO

14、RD I, Q, M, D, L 访问错误过滤及错误信息,示例:数据块测试,Network 1: Masking, Testing, Demasking / Mask “DB does not exist“ CALL SFC 36( PRGFLT_SET_MASK := DW#16#4000000, / 标识符:DB 不存在 ACCFLT_SET_MASK := DW#16#0, / 未屏蔽访问错误 RET_VAL := #SFC36Error, PRGFLT_MASKED := #Prog36Mask, ACCFLT_MASKED := #Acc36Mask); / Test call OP

15、N DBDB_NO; / Check programming error CALL SFC 38( PRGFLT_QUERRY := DW#16#4000000, / 标识符:DB 不存在 ACCFLT_QUERRY := DW#16#0, / 未屏蔽访问错误 RET_VAL := #SFC38Error, PRGFLT_MASKED := #Prog38Mask, ACCFLT_MASKED := #Acc38Mask); / Evaluate result L #Prog38Mask L DW#16#4000000 =D = #DB_NOT_THERE / 设置辅助变量 DB not th

16、ere / Demask “DB does not exist“ CALL SFC 37( PRGFLT_RESET_MASK := DW#16#4000000, / 标识符:DB 不存在 ACCFLT_RESET_MASK := DW#16#0, / 未屏蔽访问错误 RET_VAL := #SFC37Error, PRGFLT_MASKED := #Prog37Mask, ACCFLT_MASKED := #Acc37Mask);,练习 8.1: FC81中的错误处理,FC 81,EN,ENO,Meas_values,Sum,Mean_value,声明 名称 类型 in Meas_values ANY out RET_VAL INT out Sum REAL out Mean_value REAL,RET_VAL,错误代码,错误原因 错误代码 无错误 0 数据类型REAL -1 DB 不存在 -2 范围长度错误 -4,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1