技术论坛

 回复:S7-1200 I区 和 Q区 怎么间接寻址

返回主题列表
作者 主题
wayne超
游侠

经验值:541
发帖数:145
精华帖:0
楼主    2013-05-06 16:05:57
主题: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楼    2013-10-27 15:43:27
精华帖  主题:回复: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;
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。