DATA_BLOCK "DB1" { S7_Optimized_Access := 'TRUE' } VERSION : 0.1 NON_RETAIN VAR 开始运算 : Bool; tst2 : Bool; tst3 : Bool; tst4 : Bool; END_VAR BEGIN END_DATA_BLOCK FUNCTION_BLOCK "运算块" { S7_Optimized_Access := 'TRUE' } VERSION : 0.1 VAR_INPUT in : Array[1..20] of Int; END_VAR VAR_OUTPUT out : Array[1..20] of Int; END_VAR VAR num : Array[1..20] of Int; i : Int; j : Int; k : Int; m : Int; temp : Int; buzhixing : Bool; 运算使能边沿 : Bool; END_VAR BEGIN REGION 开始运算 IF "DB1".开始运算 AND NOT #运算使能边沿 THEN FOR #k := 1 TO 20 BY 1 DO #num[#k] := #in[#k]; END_FOR; ELSE GOTO tiaochu; END_IF; END_REGION REGION 排序算法 FOR #j := 0 TO 18 BY 1 DO FOR #i := 1 TO 19 - #j BY 1 DO IF #num[#i] > #num[#i + 1] THEN #temp := #num[#i + 1]; #num[#i + 1] := #num[#i]; #num[#i] := #temp; END_IF; END_FOR; END_FOR; FOR #m := 1 TO 20 BY 1 DO #out[#m] := #num[#m]; END_FOR; "DB1".开始运算 := 0; END_REGION tiaochu: #buzhixing := 0; END_FUNCTION_BLOCK