PLC300寻址指令

1.寻址图解

2.直接寻址

直接寻址包括两大类,绝对地址寻址和符号地址寻址

绝对地址:由一个标识符和存储器位置组成。
例如:I 0.0 Q 1.7 PIW 256 PQW 512 MD 20 T 15 C 16 DB1.DBB 10 L1 0.0 

 

符号地址 :给绝对地址分配有意义的符号名,使得程序可读性。

例如: Q4.0 符号名 ’Motor_On’ 

3.间接寻址

间接寻址分为两大类 存储器间接寻址寄存器间接寻址

3.1 存储器间接寻址又分为 16位 指针存储器间接寻址和 32位 指针存储器间接寻址

3.1.1 16位指针存储器间接寻址

16位地址指针用于定时器、计数器、程序块(DB、FC、FB)的寻址,16位指针可被看做一个无符号的整数

(0~65535),它表示定时器(T),计数器(C),数据块(DB、DI)或程序块(FB、FC)的块号

寻址格式:  区域标识符[16位地址指针]

举例:

L   1
T   MW0
A   I0.0
L   S5T#10S
SD   T[MW0]
// 

 

3.1.2 32位指针存储器间接寻址

32位地址指针用于 I、Q、L、数据块等存储器中,位、字节、字、双字的寻址,32位的地址指针可以使用一个双字表示,

第 0 位~第2位作为寻址操作的位地址,第 3 位到第18位作为寻址操作的字节地址,第19位~第31位没有定义,32位指针的格式如下:

存储器32位指针仅用于内部区域寻址

寻址格式表示为:地址存储器标识符[32位地址指针]

举例1:

T   MD[LD0]

MD 为区域标识符及访问宽度,LD0为一个32位指针

举例2:

32位内部区域指针可用常数表示,表示为P#字节.位。如常数

P# 10.3   表示指向第10个字节的第3位指针常数

举例3:

若将一个32位整型转换为字节指针常数,从上述指针格式可以看出,应该要把该数左移3位

或是乘8 即可。

L   L#100  //ACCU0装入32位整型 100

SLD   3    //左移3位

T        LD0   //LD0得到 P#100.0 指针常数

 

3.2 寄存器间接寻址

通过CPU地址寄存器AR1 和AR2寻址方式称为寄存器间接寻址,分为内部区域间接寻址和交叉区域寻址

3.2.1内部区域间接寻址

32位地址指针用于 I、Q、L、数据块等存储器中,位、字节、字、双字的寻址,32位的地址指针可以使用一个双字表示,

第 0 位~第2位作为寻址操作的位地址,第 3 位到第18位作为寻址操作的字节地址,第19位~第31位没有定义,32位指针的格式如下:

该间接寻址表示格式  :存储器标识符[ARX,地址偏移量]

举例1:

L   MW [AR1,P#2.0]

'MW'为被访问的存储器及访问宽度,'AR1'为地址寄存器1,P#2.0 为地址偏移量

3.2.2交叉区域寄存器间接寻址

包含有存储器区域信息的指针称为交叉区域指针

交叉区域指针格式如下:

交叉区域指针常数表达格式: P# 存储器  字节 . 位

举例1:

P#Q10.5

P#DB1.DBX32.0

交叉区域寻址表示为:  访问宽度[ARx,偏移量]

举例2: L  P#M20.0

    TAR1 

    L 1234

    T  W[AR1,P#2.0]

 

 

posted @ 2017-09-11 20:13  小半个程序猿  阅读(1448)  评论(0编辑  收藏  举报