水电之家讯:西门子S7-300/400plc的直接寻址方法与S7-200相同。间接寻址方式有“存储器间接寻址”与“寄存器间接寻址”两种。由于S7-300/400具有专用的指针寄存器AR1、AR2,因此,间接寻址建立“地址指针”的方法与指令的表示方法、寻址的范围均与S7-200 PLC有较大的区别,其使用更方便,寻址的范围也更大。
1.存储器间接寻址
S7-300/400的存储器间接寻址方式与S7-200 PLC相比,在实际使用中具有两方面明显的区别:
①在S7-300/400中,间接寻址不需要建立指针的过程,可以直接在寻址对象的前面加“【]”标记,表示该寻址对象为间接寻址。
②间接寻址可以用于二进制位地址。
【例1】通过局部变量LD10,将输入I22.2读入,与IO.O进行“与”运算,结果输出到QO.1的程序如下:
LP#22.2 //二进制位数据22.2读入累加器;
TLD10 //二进制位数据22.2传送到局部变量LD1O中:
AI[LDIO] //读入由LDIO确定的输入点;
AIO.O //与IO.O进行“与”运算;
=QO,l //结果输出到QO.1
以上指令等效于指令:
AI22.2
AIO.O
=QO.1
2.寄存器间接寻址
S7-300/400的寄存器间接寻址是一种利用指针寄存器进行偏移的间接寻址方式,格式为[AR1,m]或[AR2,m],间接寻址所指定的存储器地址为指针寄存器AR1或AR2的内容与m之和。
指针寄存器AR1或AR2为双字长寄存器,可以同时存储地址、字节、位等信息,因此,寻址不仅可以在存储器自身的区域内进行(如内部标志M之间、输入I之间等),而且可以在不同的区域内进行(如由内部标志M到输入I等)。
寄存器各位所代表的含义如下:
地址位(bit31):“0”指针寄存器不含地址符,地址符bit24~bit26应为0:
“1”指针寄存器含地址符,地址符由bit24~bit26指定。
地址符(bit24~bit26):地址位(bit31)为“1”时用于指定存储器地址,地址的编码如下:
000:地址P:
001:地址I;
010:地址Q;
011:地址M;
100:地址DBX;
101:地址DIX;
111:地址L。
字节编号(bit18~bit3):指定存储器的字节地址,范围为0~65535。
位编号(bit2~bit0):指定存储器的位地址,范围为0~7。
指针寄存器可以不含地址符,此时,指针寄存器只需要写入二进制的字节与位数据,地址由逻辑运算指令指定。
【例2】通过指针寄存器偏移二进制位22.2后,将I32.3读入,与IO.O进行“与”运算,结果输出到QO.1的程序如下:
LP#22.2 ∥二进制位数据22.2读入累加器1:
LARI //累加器l的内容读入指针寄存器ARl:
AI[ARl,P#10.1] //将二进制位数据10.1与指针寄存器ARI内容相加,进行间接寻址:
AIO.O //与IO.O进行“与”运算:
QO.1 //结果输出到QO.1;
以上指令等效于指令:
AI32.3
AIO.O
=QO.1
在使用二进制位数据时应注意,开关量输入/输出的单位为字节,因此,进行指针寄存器偏移时应利用8进制数进行计算。
【例3】通过指针寄存器偏移二进制位数据10.5后,将I21.4读入,与IO.O进行“与”运算,结果输出到QO.1的程序如下:
LP#10.5 ,/将二进制位数据10.5读入累加器1:
LARI //将累加器l的内容写入指针寄存器ARl;
AI[ARI, P#10.7] //将二进制位数据10.7与指针寄存器ARI内容相加,进行间接寻址;
AIO.O ∥与IO.O进行“与”运算;
=QO.I //结果输出到QO.1:
以上指令等效于指令:
AI21.4
AIO.O
=QO.l
指针寄存器可以含地址符,此时,指针寄存器需要同时写入地址、二进制的字节与位数据,逻辑运算指令不再需要指定地址。
【例4]将M6.0作为地址指针,将输入IW10的内容写入到MW56中的程序如下:
L P#M6.0 //将地址数据M6.0读入累加器l; ’
L AR1 ∥将累加器l的内容写入指针寄存器ARI;
L IWIO //将IWIO的内容读入累加器1:
T W[ARI,P#50.0】 /将累加器l的内容写入到MW56(目标地址利用间接寻址方式)
由于本例属于存储器区域内部寻址,且指针寄存器已经包含了地址M,逻辑运算指令不再需要指定地址。以上指令等效于指令:
LIW10
TMW56水电之家为您提供最全面的管材,管件,水电,电线,电工,管材水电品牌的装修知识点和各种管材水电的导购与在线购买服务,拥有最便宜的管材水电价格和最优质的售后服务,每天都有秒杀的抢购活动哦!敬请登陆水电之家:http://shuidian.jc68.com/