FUNCTION_BLOCK "test"{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR
test1 : Array[1..1000] of Byte;
test2 : Array[1..1000] of Byte;
test3 : "testudt";
test4 : "testudt";
test5 : Array[1..1000] of "testudt";
test6 : Array[1..1000] of "testudt";
END_VAR
VAR_TEMP
t_iRetVal : Int;
t_Counter : Int;
t_counter2 : Int;
END_VAR
BEGIN
REGION Test 1 array mit 1000 Byte
(*
FOR #t_Counter := 1 TO 5000 DO
// Statement section FOR
#test2 := #test1;
END_FOR;
*)
(*
FOR #t_Counter := 1 TO 5000 DO
#t_iRetVal := MOVE_BLK_VARIANT(SRC := #test1, COUNT := 1000, SRC_INDEX := 0, DEST_INDEX := 0, DEST => #test2);
END_FOR;
*)
END_REGION
REGION Test 2 udt mit 10 Elementen
(* testudt
#test1 Byte 16#0 True True True False
test2 Int 0 True True True False
test3 DInt 0 True True True False
test4 Word 16#0 True True True False
test5 DWord 16#0 True True True False
test6 Real 0.0 True True True False
test7 LReal 0.0 True True True False
test8 Word 16#0 True True True False
test9 Word 16#0 True True True False
test10 Word 16#0 True True True False
*)
(*
FOR #t_Counter := 1 TO 10000 DO
// Statement section FOR
#test4 := #test3;
END_FOR;
*)
(*
FOR #t_Counter := 1 TO 5000 DO
#t_iRetVal := MOVE_BLK_VARIANT(SRC := #test3, COUNT := 1, SRC_INDEX := 0, DEST_INDEX := 0, DEST => #test4);
END_FOR;
*)
END_REGION
REGION Test 3 array mit 1000 Byte aber nur 500 Werte kopieren
(*
FOR #t_Counter := 1 TO 100 DO
// Statement section FOR
FOR #t_counter2 := 1 TO 500 DO
// Statement section FOR
#test2[#t_counter2] := #test1[#t_counter2];
END_FOR;
END_FOR;
*)
(*
FOR #t_Counter := 1 TO 100 DO
#t_iRetVal := MOVE_BLK_VARIANT(SRC := #test1, COUNT := 500, SRC_INDEX := 0, DEST_INDEX := 0, DEST => #test2);
END_FOR;
*)
END_REGION
REGION Test 4 array mit 1000 udt
(*
FOR #t_Counter := 1 TO 1000 DO
// Statement section FOR
#test6 := #test5;
END_FOR;
*)
(*
FOR #t_Counter := 1 TO 1000 DO
#t_iRetVal := MOVE_BLK_VARIANT(SRC := #test6, COUNT := 1000, SRC_INDEX := 0, DEST_INDEX := 0, DEST => #test5);
END_FOR;
*)
END_REGION
REGION Test 5 array mit 1000 udt aber nur 500 kopieren
(*
FOR #t_Counter := 1 TO 100 DO
// Statement section FOR
FOR #t_counter2 := 1 TO 500 DO
// Statement section FOR
#test6[#t_counter2] := #test5[#t_counter2];
END_FOR;
END_FOR;
*)
FOR #t_Counter := 1 TO 100 DO
#t_iRetVal := MOVE_BLK_VARIANT(SRC := #test6, COUNT := 500, SRC_INDEX := 0, DEST_INDEX := 0, DEST => #test5);
END_FOR;
END_REGION
END_FUNCTION_BLOCK