在找答案碰到个问题,多个字节循环移动,于是无聊写了个子程序给大家分享下,如有错误,请大家指正,
废话不多说直接上图。
源程序代码:
FUNCTION_BLOCK "字节数组循环移动"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
start : Bool;
END_VAR
VAR_IN_OUT
Array_Input : Array[*] of Byte;
END_VAR
VAR
R_TRIG_Instance {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG;
run : Bool;
END_VAR
VAR_TEMP
i : DInt;
r : Byte;
l : DInt;
u : DInt;
END_VAR
BEGIN
#l := LOWER_BOUND(ARR := #Array_Input, DIM := 1);
#u := UPPER_BOUND(ARR := #Array_Input, DIM := 1);
"R_TRIG_DB"(CLK:=#start,
Q=>#run);
IF #run
THEN
#r := #Array_Input[#u];
#i := #u;
WHILE #i <>0 DO
#Array_Input[#i] := #Array_Input[#i - 1];
// Statement section WHILE
#i := #i - 1;
;
END_WHILE;
#Array_Input[0] := #r;
;
END_IF;
END_FUNCTION_BLOCK

