LAR1 P##IO2
L 0
T B [AR1,P#7.0]
T B [AR1,P#6.0]
L LB 7
T B [AR1,P#5.0]
L LB 6
T B [AR1,P#4.0]
L LB 5
T B [AR1,P#3.0]
L 0
T B [AR1,P#2.0]
L 14
T #IO2
AR1是一个8个字节长度的寄存器地址。把word型的IO2装载到AR1上,然后给AR1的每一个字节赋值,是不是等同于在给IO2赋值?IO2直接取AR1最低的两个字节的值?赋值程序并没有给AR1的最低两字节赋值,而是给IO2赋了一个14,是不是说明AR1的最低俩字节应该是0000000000001110?
请问我的理解对不对?
这是指针寻址。AR1是32位的地址寄存器,而不是8个字节长度。你的概念现在不对呢。
假如#IO2在块的声明变量表的IN_OUT中,类型你没有给出。在程序中对它赋实参为MW20,则LAR1 //P##IO2 表示把#IO2的起始地址M20.0传给AR1
L 0
T B [AR1,P#7.0] //把0赋给B[M20.0,P#7.0],即0赋给MB27
T B [AR1,P#6.0] //0赋给MB26
L 14
T #IO2 //将14赋给MW20,这和AR1没有关系了。
学习一下间接寻址吧。
参见:S7-300和S7-400寻址
http://www.ad.siemens.com.cn/download/OnlineReading.aspx?DocId=1597