S7-300 PLC:I/O 访问故障组织块

工业控制

1221人已加入

描述

I/O 访问故障组织块(OB122) 

1 硬件组态 

在 OB_Example 项目中插入一 S7300 站,命名为 OB122_Example,然后插入CPU 315-2DP 和一块模拟量输入模板 6ES7 331-7KF02-0AB0,配置 SM331-7KF02-0AB0 模块的inputs 选项,选择所有通道组为电压类型,注意模板的量程卡与设置的相同。模拟量的逻辑输入地址为256...271,配置完成的画面如下:

plc

2 OB122 程序执行 

OB122 程序在出现 I/O 访问错误时被调用,例如当 CPU 程序访问一未定义的I/O 地址,CPU 会出现 I/O 访问错误,CPU 会调用 OB122,如果 OB122 未下载,CPU 会报故障停机。通过临时变量 OB122_SW_FLT 可以读出错误代码,通过 OB122_BLK_TYPE 得出出现错误的程序块,通过 OB122_MEM_AREA 可以读出被访问的地址类型,通过 OB122_MEM_ADDR 可以读出发生错误的存储器地址。使用 Step7 不能时时监控程序的运行,可用 Variable Table 监控数据变化。具体程序参见 OB_Example/OB122_Example。 

(1)在 OB122_Example 程序的Blocks 中插入 OB122 组织块,然后打开OB122 组织块编写程序,OB122 的 STL 程序(可转成梯形图)为: 

NetWork1: 

A(     

A(     

A(     

L     #OB122_SW_FLT 

T     MW     0 

SET    

SAVE   

CLR    

A     BR 

)      

JNB   _001 

L     #OB122_BLK_TYPE 

T     MW     2 

SET    

SAVE   

CLR    

_001: A     BR 

)      

JNB   _002 

L     #OB122_MEM_AREA 

T     MW     4 

SET    

SAVE   

CLR    

_002: A     BR 

)      

JNB   _003 

L     #OB122_MEM_ADDR 

T     MW     6 

_003: NOP   0 

(2)打开 OB1 编写程序,OB1 的 STL 程序(可转成梯形图)为:

NetWork1: 

A     M     10.0 

JNB   _001 

L     PIW  300 

T     MW    20 

_001: NOP   0 

先将硬件组态和 OB1 下载到 CPU 中,此时 CPU 能正常运行,在OB122_Example 程序的 Blocks中插入 Variable Table,然后打开,填入地址 MW0,MW2,MW4,MW6 和 M10.0并点击 Monitor Variable 按钮,程序运行正常,将 M10.0 置为 true,CPU 会报错误并停机。查看 CPU 的诊断缓冲区信息,发现为 I/O 访问错误,将 OB122 下载到 CPU 中,再将 M10.0 置为true,CPU 会报错误但不停机,MW0 为 16#0042,MW2 为 16#0000,MW4 为16#00200,MW62 为 16#012C,查看 OB121 的在线帮助可得到相应的故障信息,具体监控画面如下: 

plc

检查并修改 OB1 程序为 

NetWork1: 

A     M     10.0 

JNB   _001 

L     PIW  256 

T     MW    20 

_001: NOP   0 

重新下载 OB1,运行程序 CPU 不会再报错,程序能正常运行。 

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分