S7-200 PLC数据存储器的存储单元按字节进行编址,每个单元都有唯一的地址。CPU将数据存放在不同的存储单元中,为了存取某个数据,必须按一定的方式指明数据(或称操作数)的地址。指令中如何提供操作数或操作数地址,称为寻址方式。S7-200 PLC的寻址方式分为直接寻址和间接寻址两种,如果在指令中直接使用操作数的地址,则称为直接寻址方式;如果使用指针来存取存储器中的数据,则称为间接寻址方式。
1.直接寻址
在S7-200 PLC中,直接寻址可以按位、字节、字和双字对存储单元进行寻址。在表示数据长度时,分别用B、W、D字母作为字节、字和双字的标识符。寻址时,数据地址以存储区类型的字母开始,随后是数据长度,然后是存储单元编号。例如VW100,V表示变量存储器;W表示数据长度为字;100是其地址编号。对于按位寻址,还需要在分隔符后指定位编号。
按位、字节、字和双字对存储单元进行寻址时,存储器地址的表示方法如下。
(1)位寻址:[存储区类型标识符][字节编号].[位号]。
(2)字节寻址:[存储区类型标识符]B[字节编号]。
(3)字寻址:[存储区类型标识符]W[起始字节编号]。
(4)双字寻址:[存储区类型标识符]D[起始字节编号]。
如果要存取存储器中某一位的数据,就要进行位寻址。例如,图4-11(a)所指明的地址是输入映像寄存器中的第4个字节的第5位,图4-11(b)显示了该位在输入映像寄存器中的确切位置(黑影部分)。
图4-11 位地址格式及存储器示意图
如果要存取存储器中某个字节的数据,就要进行字节寻址,同理,根据数据长度还可以进行字和双字寻址,如图4-12所示的是对变量存储器寻址的例子。其中图4-12(a)所示的是变量存储器字节的地址格式,而VW100和VD100分别表示变量存储器字和双字的地址格式;如图4-12(b)所示的是字节、字和双字在变量存储器中存放的位置。
图4-12 字节、字和双字的寻址示意图
2.间接寻址
在间接寻址方式中,指令给出的是存放操作数地址的存储单元的地址(也称为地址指针)。S7-200 PLC的CPU允许用指针进行间接寻址的存储器有I、Q、V、M、S、AI、AQ、T(仅当前值)和C(仅当前值),而不能用于位地址、HC和L存储器。使用间接寻址存取数据的方法与计算机C语言指针的应用是基本相同的,其寻址过程如下。
(1)建立指针
使用间接寻址之前,首先要创建地址指针。指针为双字长,用来存放被访问存储器的地址,并且只能用变量存储器V、局部变量存储器L或累加器作为指针。建立指针时必须用双字传送指令(MOVD)将需要间接寻址的存储器地址送入指针,例如,“MO‘VD’&VB200,AC1.”,其中“&”是地址符号,&VB200表示VB200的地址,而不是VB200中的值。指令中第二个地址数据长度必须是双字长,指令中的“&VB200”如果改为“&VW200”或“&VD200”,效果完全相同。指针也可以为子程序传递参数。
(2)用指针存取数据
使用指针存取数据时,在操作数前加“*”表示该操作数是一个指针。如图4-13所示,*AC1表示AC1是一个指针,执行指令“MOVW*AC1,AC0”,是把指针中的内容(VB200)作为地址。由于指令MOVW的数据长度是字长“W”,因此该指令是将地址VB200和VB201两个字节中的内容(1234)传给AC0。
图4-13 使用指针的间接寻址(www.xing528.com)
(3)修改指针
通过修改指针可以很方便地完成连续地址单元中数据的存取。由于指针是32位的数据,所以要使用双字指令来修改指针值,通常使用双字加法(ADDD)和双字加1(INCD)指令。如图4-14所示,用两次双字加1指令“INCD AC1”,将AC1指针中的值(VB200)修改为VB202后,指针就指向新地址VB202。执行指令“MOVW*AC1,ACO”,就可以在变量存储器(V)中连续地存取数据,即将地址VB202和VB203两个字节中的内容(5678)传给AC0。
图4-14 修改指针
修改指针时,应根据存取的数据长度来进行调整。存取字节时,指针值加1;存取字时,指针值加2;存取双字时,指针值加4。
3.CPU存储器和操作数的范围
S7-200 PLC的CPU的型号不同,寻址时存储器所占用的范围也不同。编程时必须严格按指定的存储器范围进行寻址,否则程序会出错。CPU的型号不同,操作数的范围也有所不同,编程时必须根据寻址方式选用相应范围的操作数,CPU才能正常工作。
S7-200 PLC的CPU存储器的范围和操作数的范围分别如表4-7和表4-8所示。
表4-7 S7-200 CPU存储器的范围
续表
表4-8 S7-200操作数的范围
续表
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。