理论教育 直接与间接编址的区别及应用场景

直接与间接编址的区别及应用场景

时间:2023-06-29 理论教育 版权反馈
【摘要】:当用户编程时,可以使用直接编址和间接编址为指令操作数编址。图2-10所示为存取位的一个范例。字节寻址举例如图2-11所示,这包括区域标识符、数据大小指定和字节、字或双字的字节地址。欲间接存取内存区数据,输入一个“和”符号(&)和需要编址的内存位置,建立一个该位置的指针。在该范例中,在VB200和VB201中存储的数值被移至累加器AC0。

直接与间接编址的区别及应用场景

当用户编程时,可以使用直接编址和间接编址为指令操作数编址。

1.直接编址

S7-200 PLC在具有独特地址的不同内存位置存储信息。用户可以明确识别希望存取的内存地址,允许程序直接存取信息,并直接编址指定内存区、大小和位置。例如,VW790指内存区中的字位置790。

欲存取内存区中的一个位,用户需要指定地址,包括内存区标识符、字节地址和前面带一个句号的位数。图2-10所示为存取位(亦称为“字节位”编址)的一个范例。在该范例中,内存区和字节地址(I=输入,2=字节2)后面是一个点号(“.”),用于分隔位址(位6)。

978-7-111-41181-9-Chapter02-15.jpg

图2-10 位直接寻址

用户可以使用字节地址格式将大多数内存区(V、I、Q、M、S、L和SM)的数据存取为字节、字或双字。如果存取内存中数据的字节、字或双字,必须以与指定位址相似的方法指定地址。字节寻址举例如图2-11所示,这包括区域标识符、数据大小指定和字节、字或双字的字节地址。

其他内存区中的数据(例如,T、C、HC和累加器)可使用地址格式存取,地址格式包括区域标识符和设备号码。

2.间接编址

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

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

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

在指令操作数前面输入一个星号(∗)指定该操作数是一个指针。间接寻址如图2-12所示,输入∗AC1指定AC1是“移动字”(MOVW)指令引用的字长度数值的指针。在该范例中,在VB200和VB201中存储的数值被移至累加器AC0。

978-7-111-41181-9-Chapter02-16.jpg

图2-11 字节寻址举例

978-7-111-41181-9-Chapter02-17.jpg

图2-12 间接寻址

如图2-13所示,用户可以改动指针数值。由于指针是32位数值,使用双字指令修改指针数值。可使用简单算术操作(例如加或递增)修改指针数值。

978-7-111-41181-9-Chapter02-18.jpg

图2-13 改动指针数值

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈