发布于 2011-04-01 16:46:52
14楼
FUNCTION_BLOCK FB3
VAR_INPUT
DB_ANY : ANY; //Any-Pointer of the Data-Block / Any-Pointer des DB
END_VAR
VAR
START_ADR : Dword; //Start-Address in the Datablock / Startadresse des DB
START_ADR_int:DINT;
motor_out : ARRAY [0 .. 10 ] OF INT;
S : STRUCT //internal stucture / Interne Struktur
VALUE1 : WORD;
VALUE2 : REAL;
VALUE3 : BYTE;
VALUE4 : BYTE;
END_STRUCT;
END_VAR
VAR_TEMP
RET :INT;
SRC_ANY : ANY; // Anypointer for source / Anypointer der Quelle
AT_SRC_ANY AT SRC_ANY: STRUCT
BYTE0 :BYTE; // Byte 0
TYP :BYTE; // Byte 1 Data-/Parametertype / Daten- / Parametertyp
ANZ :WORD; // Byte 2+3 Lenth of data / Datenl鋘ge
DBNO :WORD; // Byte 4+5 DB-Number / DB-Nummer
BZ :DWORD; // Byte 6 to 10 Pointer/ Byte 6 bis 10 Bereichszeiger
END_STRUCT;
END_VAR
BEGIN
START_ADR_int:=DWORD_TO_DINT(START_ADR);
FOR START_ADR_int := 0 TO 10 BY 2 DO
md100 := (AT_SRC_ANY.BZ AND 16#FF000000) OR SHL(IN:= START_ADR, N:= 3); //这个相当于 L loopcount SLW 3 T MD100
mw[md100]:=piw[md100];//L PIW[MD100]
//T MW[MD100]
END_FOR;
END_FUNCTION_BLOCK
可为什么还是不行啊