今天在廖常初老师的博客上看见了戏说存储器间接寻址的续集,转过来,共同学习!戏说存储器间接寻址第一集发在了200的论坛上了!
S7-200的间接寻址的地址指针以字节为单位,可以对字节、字和双字寻址,但是不能对位(BOOL)变量寻址。
S7-300/400有16位指针和32位指针的存储器间接寻址。定时器、计数器、数据块、功能块和功能的编号不超过一个字(16位)能表示的范围,因此它们的间接寻址采用16位的字指针。32位的指针可实现对位、字节、字和双字的间接寻址。指针的最低3位(第0位~第2位)用来表示一个字节中的0~7位,第3~第18位是地址中字节的编号。可以将地址指针视为以位为单位的整数。
在下面的程序中,方括号中的MD10是地址指针,MD10中的P#4.0是地址指针常数,其字节编号为4,用地址指针读写字、字节或双字时,必须保证指针中小数点右边的位编号为0。看懂下面的程序,就算掌握了存储器间接寻址了:
L P#4.0 //地址指针常数送累加器1
T MD 10 //累加器1中的地址送给MD10
L QB [MD 10] //将QB4装入累加器1,地址在双字MD10中
下面的程序中的M [LD 20]相当于M4.3,
L P#4.3 //地址指针常数送累加器1
T LD 20 //累加器1中的地址送给LD20
A M [LD 20] //M4.3的常开触点,地址在LD20中
= Q 5.0