在PLC寻址可以分为直接寻址和间接寻址两部分,直接寻址是在程序中通过指令直接对地址进行访问,地址通常是一个常数,如定时器T0,地址为“0”。而间接寻址,地址存储与地址指针中,地址是一个变量,程序执行时才能确定实际的地址,如定时器T[MW0]。若MW0的值等于0,则表示为T0,若MW0的值等于1,则表示T1。
在S7-300中间接寻址可以分为以下几类:
1、 存储器间接寻址
1)16位指针寻址
2)32位指针内部区域寻址
2、 寄存器间接寻址
1)32位指针内部区域寻址
2)32位指针交叉区域寻址
接下来就分别介绍下这几种间接寻址的指针格式、访问时地址寻址格式以及每种间接寻址的使用方式。
存储器间接寻址:
存储器于存储器的地址指针分为16位地址指针和32为地址指针,允许存储地址指针的存储器为位存储器(M)、局部变量存储器(L)和数据块(DB)。
16位指针寻址:
16位地址指针的应用主要针对的是定时器(T)、计数器(C)、程序块(OB、FB、FC、DB)的编号寻址,该类间接寻址方式在实际应用的过程中相对较少。
指针格式为:
该指针为一个16位的存储空间,根据该存储空间的值为多少,则表示对应的地址编号为多少。
地址寻址格式表示为:区域表示符 [16位地址指针],如DB [MW0],若MW0的值等于10,则表示的是DB块为DB10。
如下程序所示,描述的使用16位寄存器的寻址方式对定时器进行访问:
L 10
T "MW10" //把数字10装在到16位存储器中做作为指令
A "I0.0" //取起动触点的常开信号状态
L s5t#10s
SD T [ "MW10"] //使用16位存储器指针作为定时器的编号,定时器的设定时间为10s.
A T ["MW10"]
= "Q0.0" //取定时器常开触点状态输出一个输出信号。
从例子中可以看出,地址指针存储与MW10中,使用中只需要对MW10中的数据进行修改,就可以实现访问不同编号的定时器。