下面一段程序如果最后一条指令前面没有注释符号“//”,在下载后不能成功地切换到运行模式,SF灯亮。
最后一条指令加上注释号(该指令不起作用),运行出错时在CPU模块信息的诊断缓冲区中,有下面的诊断信息:
事件8 / 15: 事件ID 16# 2523
写入时发生区域长度错误
全局DB,双字访问,访问地址:65532
OB 编号: 1
模块地址: 30
所需的OB:编程错误OB (OB121)
在当前工作模式下,OB 未找到、或被禁用、或无法启动
内部错误, 进入的事件
08:55:02.726 2011-11-23
错误的原因是未给MW50赋值,其值为0,下面的减法运算结果为16#FFFF:
LMW50
L1
-I
导致最后一条间接寻址指令“TDBD[AR1,P#0.0]”的地址值远远地超出了DB1定义的范围(200字节)。
值得注意的是必须用“//”临时将最后一条指令屏蔽,才能对程序进行监控,从而发现问题。