故事作者:Automann

最近创作

看看TA的故事

一个编程错误的分析

已锁定

Automann

  • 帖子

    6168
  • 精华

    138
  • 被关注

    308

论坛等级:至圣

注册时间:2004-12-23

普通 普通 如何晋级?

一个编程错误的分析

1851

5

2012-02-28 11:52:50

网友wangmingzhi遇到一个问题,他的S7-300程序如下:        
OPN      DB          1
L          IW        10
L          MW        14
+I        
T          DB1.DBW        1

硬件组态和程序都下载到仿真器以后,切换到RUN-P,SF(系统错误)始终亮。
下面是诊断缓冲区中的事件信息:

事件  2  /  18:    事件  ID  16#  4562
由编程错误引起的  STOP  模式(OB  没有装载或不能装载,或没有  FRB)
用户程序中的断点:循环程序(OB1)  
优先级:      1
OB  编号:            1
模块地址:        10  
先前的工作模式:RUN
要求的工作模式:STOP  (内部)
内部错误,  进入的事件
22:37:15.201    2012-02-21

事件  3  /  18:    事件  ID  16#  2523
写入时发生区域长度错误
全局  DB,字访问,  访问地址:          1
OB  编号:            1
模块地址:        10
所需的  OB:编程错误  OB  (OB121)
在当前工作模式下,OB  未找到、或被禁用、或无法启动
内部错误,  进入的事件
22:37:15.201    2012-02-21

        他说,如果把DB1.DBW1更换成DB1.DBW0就不会报错。  

        下面是我的回答:
        “写入时发生区域长度错误”是因为写入的地址DBW1超出了DB1定义的地址范围。
        数据块的大小与数据块中定义的变量的个数和每个变量的长度有关。访问DB1.DBW1出错,访问DB1.DBW0没错,说明数据块的大小只有两个字节。
        生成数据块时,自动生成了一个占位符变量,其数据类型为两个字节的INT(整数)。这个网友一定是没有在数据块内生成别的变量,所以数据块的长度只有两个字节。在使用数据块中的地址之前,一定要先定义使用的变量,或定义数据块的大小。
        在数据块中生成数组可以快速定义数据块的大小。例如在数据块中只定义一个有1000个整数元素的数组,数据块的大小为2000个字节。可以用绝对地址和位、字节、字和双字的格式访问数组中的地址。

一个编程错误的分析 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3366条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。