FUNCTION FC4 : VOID
TITLE = 'MOVE N BYTE'
//************************************************** *****************
VAR_INPUT
VUNG_NHO: CHAR; //TEN VUNG NHO BYTE/WORD/DWORD (B-D-W)
DB_BLOCK: INT; // TEN CUA DATA BLOCK
FROM_AD : INT; // COPPY TU FROM_DT
TO_AD : INT; // DEN DIA CHI TO_AD
N : INT; // VOI SO LUONG N BYTE/WORD/DWORD
END_VAR
VAR_OUTPUT
ERROR: BOOL;
END_VAR
VAR_TEMP
I : INT;
BUFFER : ARRAY[1..30] OF BYTE;
BUFFER1 : ARRAY[1..30] OF WORD;
BUFFER2 : ARRAY[1..30] OF DWORD;
END_VAR;
//************************************************** *****************
//coppy data tu from_ad den from_ad+n vao BUFFER
FOR I:=FROM_AD TO (FROM_AD + N) BY 1 DO
CASE CHAR_TO_INT(VUNG_NHO) OF
66: BUFFER[I-FROM_AD]:=WORD_TO_BLOCK_DB(INT_TO_WORD(DB_BLOCK)).DB[I];
87: BUFFER1[I-FROM_AD]:=WORD_TO_BLOCK_DB(INT_TO_WORD(DB_BLOCK)).DW[I];
68: BUFFER2[I-FROM_AD]:=WORD_TO_BLOCK_DB(INT_TO_WORD(DB_BLOCK)).DD[I];
ELSE:
ERROR:= TRUE;
END_CASE;
END_FOR;
//************************************************** *****************
//coppy data tu BUFFER vao dich
FOR I:= TO_AD TO TO_AD+N BY 1 DO
CASE CHAR_TO_INT(VUNG_NHO) OF
66: WORD_TO_BLOCK_DB(INT_TO_WORD(DB_BLOCK)).DB[I]:=BUFFER[I-TO_AD];
87: WORD_TO_BLOCK_DB(INT_TO_WORD(DB_BLOCK)).DW[I]:=BUFFER1[I-TO_AD];
68: WORD_TO_BLOCK_DB(INT_TO_WORD(DB_BLOCK)).DD[I]:=BUFFER2[I-TO_AD];
ELSE:
ERROR:= TRUE;
END_CASE;
END_FOR;
//************************************************** *****************
END_FUNCTION
em không làm được.
một đầu vào 1 đầu ra thì em không biêt làm.... anh chỉ em với. em không biết làm thế nào để nhận biết ngõ vào ở là byte, word, hay dword