收藏 分享(赏)

西门子S7-300+400高级编程培训教材,内部教材8、处理同步和异步错误+(1).ppt

上传人:yjrm16270 文档编号:4765121 上传时间:2019-01-11 格式:PPT 页数:15 大小:190.50KB
下载 相关 举报
西门子S7-300+400高级编程培训教材,内部教材8、处理同步和异步错误+(1).ppt_第1页
第1页 / 共15页
西门子S7-300+400高级编程培训教材,内部教材8、处理同步和异步错误+(1).ppt_第2页
第2页 / 共15页
西门子S7-300+400高级编程培训教材,内部教材8、处理同步和异步错误+(1).ppt_第3页
第3页 / 共15页
西门子S7-300+400高级编程培训教材,内部教材8、处理同步和异步错误+(1).ppt_第4页
第4页 / 共15页
西门子S7-300+400高级编程培训教材,内部教材8、处理同步和异步错误+(1).ppt_第5页
第5页 / 共15页
点击查看更多>>
资源描述

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_ID /

3、 加载错误标识符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 / 标识符: 离去=IR 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,其中发生错误的优先级,OB 编号(B

5、#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 的启动信息,数据类型,变量名称,OB122_E

6、V_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,错误码的补充(参见文本),OB122_FLT_REG

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

8、_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_SET_MASK INPUT BYTE I

9、, 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,写错误实例 DB,块编号错误 DB,块

10、编号错误 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_MASKED 的相应位 设置如下:

11、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 BYTE I, Q, M, D, L, C

12、onst. 访问错误过滤器复位 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,?.?,ACCFLT_CLR,?.?,?.?,?.?,

13、参数 声明 数据类型 内存区域 解释 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 DWORD I, Q, M, D, L 访问

14、错误过滤及错误信息,示例:数据块测试,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 callOPN DBDB_NO; / Check prog

15、ramming errorCALL SFC 38( PRGFLT_QUERRY := DW#16#4000000, / 标识符:DB 不存在ACCFLT_QUERRY := DW#16#0, / 未屏蔽访问错误 RET_VAL := #SFC38Error,PRGFLT_MASKED := #Prog38Mask, ACCFLT_MASKED := #Acc38Mask); / Evaluate resultL #Prog38MaskL DW#16#4000000 =D= #DB_NOT_THERE / 设置辅助变量 DB not there / Demask “DB does not exi

16、st“ 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,

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

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报