发布于 2012-04-15 02:27:01
12楼
在定义DB时,将数据尽量定义成数组结构,这样即优化程序循环体的结构,有减少数据转换的使用
比如:
DATA_BLOCK DB5
//
// Block Comment ...
//
STRUCT
A_Int :ARRAY[1..60] OF INT :=60(1);
A_Struct :ARRAY[1..60] OF STRUCT
a1 :REAL;
a2 :REAL;
END_STRUCT;
A_Bool :ARRAY[1..60] OF BOOL;
A_Bool_FP :ARRAY[1..60] OF BOOL;
END_STRUCT
BEGIN
END_DATA_BLOCK
FUNCTION FC1 : void
VAR_TEMP
totalout :INT;
i :INT;
END_VAR
BEGIN
totalout :=0;
FOR i :=1 TO 60 DO
//
IF DB5.A_Bool[i] & DB5.A_Bool_FP[i]=0 THEN
DB5.A_Int[i] :=DINT_TO_INT(ROUND(DB5.A_Struct[i].a1+DB5.A_Struct[i].a2));
totalout :=DB5.A_Int[i]+1;
END_IF;
DB5.A_Bool_FP[i] :=DB5.A_Bool[i];
END_FOR;
END_FUNCTION
你在SCL中使用间接寻址,如果不用数组,你还不如使用STL;SCL最大的寻址优势是使用数组的下标