首页 > 化工知识 > 西门子S7系列PLC的寻址方式(2)-寄存器间接寻址

西门子S7系列PLC的寻址方式(2)-寄存器间接寻址

时间:2020-09-25 来源:方正智芯 浏览:

上一篇文章我们介绍了西门子S7系列PLC(300/400/1500)的寻址方式,讲解了直接寻址(绝对寻址和符号寻址)及间接寻址的一种——存储器间接寻址,今天这篇文章我们介绍下另一种间接寻址方式:寄存器间接寻址。

所谓寄存器间接寻址,是指通过CPU的地址寄存器(Address Register)进行的寻址方式。S7-300/400系列PLC有两个地址寄存器,AR1和AR2,其长度均为32位,内部存放32位的地址指针,指针指向要寻址的存储单元。

我们先来看下寄存器间接寻址的指针格式(32位):

其中,第0~2位是被寻址地址的位(bit)编号;第3~18位是被寻址地址的字节(Byte)编号;第24~26位,是被寻址地址的区域标识(编号);第31位是寻址的类型,“0”表示区域内间接寻址,“1”表示区域间间接寻址。

寄存器间接寻址可以分为两种:区域内寻址和区域间寻址,根据第31位的值来确定。

所谓区域内寻址,是指指针中仅包含寻址的存储区的字节编号和位编号,存储区的代码在指令中给出。寄存器区域内间接寻址的指针的第24~26位的区域标识符为0,第31位也为0;

所谓区域间寻址,是指指针中不仅包含了寻址的存储区的字节编号和位编号,还包含了存储区的标识符(第24~26)代码。存储区标识符用来指定寻址区域,比如:I、M、Q等,具体编号如下图:

寄存器区域内寻址的表达方式:存储器标识符[ARx,地址偏移量];

比如下面这段代码:

前两行将指针常数(P#5.0)加载到AR1中,第三行对M6.1进行与运算,结果存放到Q7.5中。指针常数P#5.0的二进制数为:2#0000 0000 0000 0000 0000 0000 0010 1000,可见它的第24~26位及第31位均为0。由于指针中不包含存储区标识符信息,所以必须在程序中指定。

再来看看寄存器区域间寻址,其表达方式为:访问宽度[ARx,地址偏移量]

比如下面这段代码:

P#M6.0对应的二进制值为:1000 0011 0000 0000 0000 0000 0011 0000。

前两行代码将位存储器指针P#M6.0加载到AR1中,由于指针中包含了存储区代码(011),因此程序中不用写存储区标识符,只需要指定访问的宽度即可。上例中的第三行的代码会将MW8的内容装载到累加器1(ACCU1)中。

顺便说一句,如果要使用寄存器指针访问一个字节、字或者双字时,必须保证指针的位编号为0。寄存器间接寻址相对来说有些难度,建议在实践中使用以加深理解。

相关参考文章:

西门子S7系列PLC的寻址方式(1)

官网提供本文PDF版本下载

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐