quote:以下是引用wayne超在2013-05-06 16:05:57的发言:
关于S7-1200间接寻址,DB块使用FieldRead,FieldWrite,POKE、POKE_BOOL、PEEK、PEEK_BOOL、POKE_BLK以及ARRAY(数组)的方式都清楚了。
但是这些都不能用于I区和Q区,我想对IW和QW进行间接寻址怎么实现呢?
如果要对I区及Q区的字,字节或双字进行间接寻址,那还是用POKE及PEEK指令吧。
若只是对I区及Q区进行位间接寻址,这里提供另外一种方法(以FC中SCL编程方式,FC为一般访问方式):
1)假设欲对QW0进行间接位寻址,先在PLC变量表中建立一个word变量(假设为wordTag1),此变量绝对地址为QW0;
2)在FC的接口区Temp参数区建立一个word变量(假设为wordTemp1),并对其建立覆盖变量,覆盖变量名为at1,类型为array[0..15] of bool;
3)在FC的接口区Temp参数区建立一个int变量(假设为i);
3)将QW0传送给wordTemp1;
4)用数组实现对QW0位的间接寻址,方式为#at1[#i],改变i值即可取出相应QW0的位值;
如果只需寻址具体的位,则更简单,直接使用变量的部分引用,形式为"wordTag1".X5;