西门子S7-4高级编程培训教材内部教材8处理同步和异步错误.ppt_第1页
西门子S7-4高级编程培训教材内部教材8处理同步和异步错误.ppt_第2页
西门子S7-4高级编程培训教材内部教材8处理同步和异步错误.ppt_第3页
西门子S7-4高级编程培训教材内部教材8处理同步和异步错误.ppt_第4页
西门子S7-4高级编程培训教材内部教材8处理同步和异步错误.ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

处理同步和异步错误,处理异步错误,异步错误并未对应到程序的某个特定位置,例如,它们可同程序的处理过程异步出现。,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 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 / 加载错误标识符 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 / 复位存储器标志位,处理同步错误,同步错误直接定位到用户程序中的一个位置 算术指令中的错误(溢出、无效的实数数据) 设置状态位 处理 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#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_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,错误码的补充(参见文本),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 禁止调用) 执行“紧急”指令 检查是否有错误发生 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_SET_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,写错误实例 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_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 BYTE 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,?.?,ACCFLT_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 DWORD 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 OPN 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 there / 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_MASKE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论