2024-03-23 02:32:31 | 人围观 | 评论:
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 的在线帮助可得到相应的故障信息,具体监控画面如下:
检查并修改 OB1 程序为
NetWork1:
A M 10.0
JNB _001
L PIW 256
T MW 20
_001: NOP 0
重新下载 OB1,运行程序 CPU 不会再报错,程序能正常运行。
编辑:黄飞
全站搜索