你的位置: 首页 > 工业控制 > 工业控制

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

2024-03-23 02:32:31 | 人围观 | 评论:

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

cb21c144-e781-11ed-ab56-dac502259ad0.png
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 的在线帮助可得到相应的故障信息,具体监控画面如下: 

cb307e32-e781-11ed-ab56-dac502259ad0.png
检查并修改 OB1 程序为 
NetWork1: 
A     M     10.0 
JNB   _001 
L     PIW  256 
T     MW    20 
_001: NOP   0 
重新下载 OB1,运行程序 CPU 不会再报错,程序能正常运行。 
编辑:黄飞
 





标签:[db:tags]