发布于 2011-12-08 17:45:09
94楼
SCL的间接寻址
SCL可以对全局变量、数据块中的变量和数据块进行间接寻址。SCL的间接寻址类似于绝对地址寻址,方括号中的地址可以是常数、变量或表达式。
对字节、字和双字间接寻址时,只需使用一个地址指针,例如QW[INTEX],指针中是字和双字的起始字节的地址。对Bool变量间接寻址时,需要两个地址指针,第一个是字节地址,第2个是字节内的位地址,例如M[BYTENO, BITNO]。指针的数据类型为INT。
可以使用转换函数WORD_TO_BLOCK_DB对数据块内的变量间接寻址。例如WORD_TO_BLOCK_DB(ADDRWORD).DW[INTEX];
其中的变量ADDRWORD的数据类型为WORD。
下面是间接寻址的例程:
VAR
BYTENO: INT;
BITNO: INT;
INTEX: INT;
ADDRWORD: WORD;
END_VAR
FOR INTEX := 2 TO 20 BY 2 DO
QW[INTEX] :=0; //将QW2~QW20清零
END_FOR;
M2.3 :=I[BYTENO, BITNO];
MW20:=DB1.DW[INTEX+2];
M24.5:=DB2.DX[BYTENO, BITNO];
MW26:= WORD_TO_BLOCK_DB(ADDRWORD).DW[INTEX];
END_FUNCTION_BLOCK
追求完美