S7-200指针

S7-200指针

现在我把VD320的地址送到累加器AC0,用下面的指令
MOVD &VB320, AC0

然后在把指针AC0所指的值传送到AC1,用下面的指令
MOVD *AC0, AC1

编译的时候,这条指令出错,“指令操作数的储存器寻址范围无效”

是什么原因呢?该如何解决?

最佳答案

1、因为AC0不能用作指针寻址。所以你的程序是错误的。
2、更改下就可以了
MOVD &VB320, AC1

MOVD *AC1, AC0


解释原因,请详细看下面的资料!

间接编址
间接编址使用指针存取内存中的数据。指针是包含另一个内存位置地址的双字内存位置。您只能将V内存位置、L内存位置或累加器寄存器(AC1、AC2、AC3)用作指针。欲建立指针,您必须使用"移动双字"指令,将间接编址内存位置移至指针位置。指针还可以作为参数传递至子程序。

S7-200允许指针存取以下内存区:I、Q、V、M、S、T*仅限当前值)和C(仅限当前值)。您不能使用间接编址存取单个位或存取AI、AQ、HC、SM或内存区。

欲间接存取内存区数据,输入一个"和"符号(&)和需要编址的内存位置,建立一个该位置的指针。指令的输入操作数前必须有一个"和"符号(&),表示内存位置的地址(而并非内存位置的内容)将被移入在指令输出操作数中识别的位置(指针)。

在指令操作数前面输入一个星号(*)指定该操作数是一个指针。

提问者对于答案的评价:
谢谢

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日
下一篇 2020年10月31日

相关推荐