| 作者 | 主题 |
|---|---|
|
wayne超 游侠 经验值:541 发帖数:145 精华帖:0 |
楼主
主题:S7-1200 I区 和 Q区 怎么间接寻址
关于S7-1200间接寻址,DB块使用FieldRead,FieldWrite,POKE、POKE_BOOL、PEEK、PEEK_BOOL、POKE_BLK以及ARRAY(数组)的方式都清楚了。
但是这些都不能用于I区和Q区,我想对IW和QW进行间接寻址怎么实现呢? |
|
LionAL99 游侠 经验值:538 发帖数:153 精华帖:4 |
5楼
主题:回复:S7-1200 I区 和 Q区 怎么间接寻址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; |