這些都可以自已寫然后放入庫中調用,現成的不一定符合自己的應用。就當給自己練練手也是好的。
FUNCTION FC1006 : VOID
//Know_How_Protect;
VAR_TEMP
i :INT;
S :BOOL;
END_VAR
VAR_INPUT
DB_No :INT;
DB_DW :INT;
In_Data :INT;
Lenght :INT;
END_VAR
VAR_OUTPUT
RFPos :INT;
Total :INT;
END_VAR;
IF In_Data>0 THEN
Total:=0;
RFPos:=0;
S:=FALSE;
FOR I:= 0 TO((Lenght*2)-2) BY 2 DO
IF WORD_TO_INT(WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+I])=In_Data THEN
IF S=false THEN
RFPos:=(DB_DW+I);
END_IF;
S:=TRUE;
Total:=Total+1;
END_IF;
END_FOR;
ELSE
Total:=0;
RFPos:=0;
S:=FALSE;
END_IF;
END_FUNCTION
以上是數據查找的原代碼,不知道能不能符合你的要求。
FUNCTION FC1005 : VOID
Know_How_Protect;
VAR_TEMP
i:INT;
J:INT;
II:INT;
END_VAR
VAR_INPUT
DB_No:Int;
DB_DW:INT;
Lenght:INT;
On_Off:BOOL;
END_VAR;
//II:=0;
FOR I:= 0 TO (Lenght-1) DO
FOR J:= 0 to((Lenght*2)-2) BY 2 DO
IF j<((Lenght*2)-2) THEN
IF On_Off then
IF (WORD_TO_INT(WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+J])> WORD_TO_INT(WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+J+2])) THEN
II:=WORD_TO_INT(WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+J]);
WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+J]:=WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+J+2];
WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+J+2]:=INT_TO_WORD(II);
END_IF;
ELSE
IF (WORD_TO_INT(WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+J])< WORD_TO_INT(WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+J+2])) THEN
II:=WORD_TO_INT(WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+J]);
WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+J]:=WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+J+2];
WORD_TO_BLOCK_DB(INT_TO_WORD(DB_No)).DW[DB_DW+J+2]:=INT_TO_WORD(II);
END_IF;
END_IF;
END_IF;
END_FOR;
END_FOR;
END_FUNCTION
以上是數據排序源代碼
[ 此帖被worker02在2018-06-20 10:59重新編輯 ]