1.4 S7-200 SMART PLC的寻址方式
在执行程序过程中,处理器根据指令中所给的地址信息来寻找操作数的存放地址的方式叫寻址方式。S7-200 SMART PLC的寻址方式有立即寻址、直接寻址和间接寻址,如图1-17所示。
图1-17 寻址方式
1.4.1 立即寻址
可以立即进行运算操作的数据叫立即数,对立即数直接进行读写的操作寻址称为立即寻址。立即寻址可用于提供常数和设置初始值等。立即寻址的数据在指令中常常以常数的形式出现,常数可以为字节、字、双字等数据类型。CPU通常以二进制方式存储所有常数,指令中的常数也可按十进制、十六进制、ASCII等形式表示,具体格式如下。
二进制格式:在二进制数前加2#表示二进制格式,如:2#1010。
十进制格式:直接用十进制数表示即可,如:8866。
十六进制格式:在十六进制数前加16#表示十六进制格式,如:16#2A6E。
ASCII码格式:用单引号ASCII码文本表示,如:‘Hi'。
需要指出,“#”为常数格式的说明符,若无“#”则默认为十进制。
重点提示:
此段文字很短,但点明数值的格式,请读者加以重视,尤其是在功能指令中,对此应用很多。
1.4.2 直接寻址
直接寻址是指在指令中直接使用存储器或寄存器地址编号,直接到指定的区域读取或写入数据。直接寻址有位、字节、字和双字等寻址格式,如:I1.5,QB0,VW100,VD100,具体图例与图1-13~图1-16大致相同,这里不再赘述。
需要说明的是,位寻址的存储区域有I、Q、M、SM、L、V、S;字节、字、双字寻址的存储区域有I、Q、M、SM、L、V、S、AI、AQ。
1.4.3 间接寻址
间接寻址是指数据存放在存储器或寄存器中,在指令中只出现所需数据所在单元的内存地址,即指令给出的是存放操作数地址的存储单元的地址,我们把存储单元地址的地址称为地址指针。在S7-200 SMART PLC中只允许使用指针对I、Q、M、L、V、S、T(仅当前值)、C(仅当前值)存储区域进行间接寻址,而不能对独立位(bit)或模拟量进行间接寻址。
(1)建立指针
间接寻址前必须事先建立指针,指针为双字(即32位),存放的是另一个存储器的地址,指针只能为变量存储器(V)、局部存储器(L)或累加器(AC1、AC2、AC3)。建立指针时,要使用双字传送指令(MOVD)将数据所在单元的内存地址传送到指针中,双字传送指令(MOVD)的输入操作数前需加“&”号,表示送入的是某一存储器的地址,而不是存储器中的内容,例“MOVD &VB200,AC1”指令,表示将VB200的地址送入累加器AC1中,其中累加器AC1就是指针。
(2)利用指针存取数据
在利用指针存取数据时,指令中的操作数前需加“*”号,表示该操作数作为指针,如“MOVW*AC1,AC0”指令,表示把AC1中的内容送入AC0中,间接寻址图示如图1-18所示。
图1-18 间接寻址图示
(3)间接寻址举例
用累加器(AC1)作地址指针,将变量存储器VB200、VB201中的2个字节数据内容1234移入到标志位寄存器MB0、MB1中。
解析:如图1-19所示。
图1-19 间接寻址举例
①建立指针,用双字节移位指令MOVD将VB200的地址移入AC1中。
②用字移位指令MOVW将AC1中的地址VB200所存储的内容(VB200中的值为12,VB201中的值为34)移入MW0中。