S7系列plc的编程指令支持直接寻址与间接寻址两种寻址方式。
直接寻址通过直接给出信号地址进行,它可以用于所有的编程元件(I、Q、M、SM、V、L、S、T、C、AC、HC等)。
[例8-5]利用直接寻址的方式,将标志存储器MB10的内容一次性在QB2上输出的程序如图8-4.1所示。
图中的MOV B在S7-200PLC中为字节移动指令,EN为启动条件,IN端为需要移动的数据地址,OUT端为移动目标位置地址,SMO.O为PLC内部的恒“1”信号。有关本指令的更具体说明可以详见plc编程的有关章节。
2.间接寻址
S7-200的间接寻址方式中,操作数指定的是操作对象所存放的地址,而不具体指明操作对象。因此,间接寻址方式需要通过“地址指针”进行。
所谓“地址指针”是间接寻址时专门用来存储地址的寄存器。在S7-200 PLC中,建立地址指针应注意以下几点:
①只能用变量V、局部变量L或累加器AC1、AC2、AC3作为地址指针(ACO不可使用)。
②建立地址指针,必须用双字的形式将间接寻址需要的存储器地址移动到地址指针中;存储器地址前加符号“&”进行标记,“&”表明移动的只是址,而不是该存储器的具体内容。
③间接寻j时,应在地址指针的前面加“*”标记,表示该操作数为间接寻址的地址指针。
④允许利用地址指针访问的存储器为I、Q、V、M、S以及定时器T、计数器C的当前值,但模拟量输入/输出AI/AQ、高速计数器HC、特殊标志SM以局部变量L不能通过地址指针进行访问。
⑤S7-200的间接寻址不可以用于二进制位信号、高速计数器HC、局部变量L,如不可以对I0.2、Q0.2、HC1、LW2等使用间接寻址。
[例1]以AC1(累加器1)作为地址指针,将变量存储器VB200~VB203中4字节数据(12345678)移动到标志寄存器MBO~MB3中的程序如图8-4.2所示。
程序分为4段,第1段利用双字移动指令MOVD(在梯形图中的符号为MOV__ DW)将地址VB200移动到地址指针AC1中。
第2段利用字移动指令MOVW,将地址指针ACI中地址VB200所存储的内容(VB200、VB201中的值1234)移动到MWO。
第3段将地址指针中的地址加2(AC1的地址变为VB202)。
第4段将地址指针AC1中地址VB202中所存储的内容(VB202、VB203中的值5678)移动到MW2。
图中有关MOV指令的具体说明可以详见第10章10.4节的有关章节。
[例2]以LD10(局部变量10)作为指针,将由偏移量存储器VD1004所确定的变量存储器VW中的内容移动到VW1900的程序如图8-4.3所示。
程序分为3段,第l段利用双字移动指令MOVD(在梯形图中的符号为MOV DW)将地址VBO移动到地址指针LD10中。
第2段将指针中的地址VBO加上偏移量存储器VD1004的内容(LD10的地址变为VBO+偏移量),确定移动目标。
第3段将指针LD10中地址“VBO+偏移量”中所存储的内容移动到VW1900。
本例中如果VD1004中的内容为1000,则变量存储器VW1000中的内容将被复制到VW 1900中;若改变VD1004中的内容为1100,则变量存储VW1100中的内容将被复制到VW1900中。
[例1]以AC1(累加器1)作为地址指针,将变量存储器VB200~VB203中4字节数据(12345678)移动到标志寄存器MBO~MB3中的程序如图8-4.2所示。
程序分为4段,第1段利用双字移动指令MOVD(在梯形图中的符号为MOV__ DW)将地址VB200移动到地址指针AC1中。
第2段利用字移动指令MOVW,将地址指针ACI中地址VB200所存储的内容(VB200、VB201中的值1234)移动到MWO。
第3段将地址指针中的地址加2(AC1的地址变为VB202)。
第4段将地址指针AC1中地址VB202中所存储的内容(VB202、VB203中的值5678)移动到MW2。
图中有关MOV指令的具体说明可以详见第10章10.4节的有关章节。
[例2]以LD10(局部变量10)作为指针,将由偏移量存储器VD1004所确定的变量存储器VW中的内容移动到VW1900的程序如图8-4.3所示。
程序分为3段,第l段利用双字移动指令MOVD(在梯形图中的符号为MOV DW)将地址VBO移动到地址指针LD10中。
第2段将指针中的地址VBO加上偏移量存储器VD1004的内容(LD10的地址变为VBO+偏移量),确定移动目标。
第3段将指针LD10中地址“VBO+偏移量”中所存储的内容移动到VW1900。
本例中如果VD1004中的内容为1000,则变量存储器VW1000中的内容将被复制到VW 1900中;若改变VD1004中的内容为1100,则变量存储VW1100中的内容将被复制到VW1900中。