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
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=131850&Name=liaochangchu