为什么在 STEP 7 V5.5 中进行间接寻址或者调用FC100 “ SWR_START ” 时会出现区域长度错误?

n

描述
访问 STEP 7 程序中不存在的地址或当参数化块调用时会显示区域长度错误。STEP 7 的在线帮助对此给出下列两条原因:n

  • 所寻址的变量地址位于可允许的寻址区域之外,或不完全位于允许的区域之内 ( CPU 指定的大小 )。n
  • 因为地址计算错误得出的地址值 >65535。 间接寻址的情况下,错误的计算可能出现大于 65535 的地址值。该值不能在事件详细信息中被正确的输入。对于 S7-300 会输入一个 0,对于 S7-400 则是计算出的值 65535,并且显示为访问地址。

示例1(间接寻址)
如编写了带有间接地址的功能块或者功能来从数据块(如:DB20)中读取数据、处理数据,然后将数据写入数据块( 如:DB23 )。如果上面样例所描述的 DB20 或 DB23 的地址区域小于参数化的 ANY 指针字节长度,超出被调用数据块的地址区域,就会显示“读区域长度错误”和 / 或“写区域长度错误”。n

图 01 显示了错误编程的样例。n

为什么在 STEP 7 V5.5 中进行间接寻址或者调用FC100 “ SWR_START ” 时会出现区域长度错误?
图. 01n

被调用功能块 FB10 的“PointerOutput”参数上的 ANY 指针“P#DB23.DBX0.0 BYTE 30”指向地址 DB23.DBX0.0到 DB23.DBX29.7,因为 ANY 指针的长度为 30 字节(重复系数)。 重复系数确定参数类型 ANY 传输所确定的数据类型的数量。 这里会出现“写区域长度错误”,因为 DB23 现在只有一个定义了 10 个字节的地址区域(DB23.DBX0.0 到 DB23.DBX9.7)。n

补救措施

  1. 更改访问地址以便于在每种情况下被寻址的值都完整存在于所允许的地址区域中。n
  2. 检查定义的地址区域。根据上面的样例,必须把 ANY 指针的长度减少20 字节或者将数据块 DB23 的长度定义为 30 字节(数组[1..30])或更多。

示例2(FC100 " SWR_START ")
在软冗余的 FC 100 "SWR_START" 中用到两个参数 “DB_A_B_NO_LEN” 和 “ DB_B_A_NO_LEN ”,这两个参数是定义数据块(“DB_A_B_NO ” 和 “DB_B_A_NO ” )的数据字节数量。该数量必须等于或大于4个字节。例如 该数量仅指定2个字节,这可能由于读写错误导致周期超时。 CPU 切换到 STOP 模式并在诊断缓存获取信息。

  • 读区域长度错误
  • 写区域长度错误

更多的参数化块 FC 100 “ SWR_START ” 信息可从“ SIMATIC S7 软冗余”手册获得, ID :!1137637 !。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc329465.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论