代码如下
变量说明
%M1100.1 系统时钟5Hz
M20.0 系统时钟5Hz的上升沿
"P_DB".P2_Value.Value Real 需要采集的数据
"P_DB".into_Buffer_21 INT 数据采集量
"P_DB".into_Buffer_22 INT 数组下标、
"P_DB".Buffer_P2 Array[1..10] of Real 采集数据缓冲数组
#Temp_Real_P2 Real 临时变量,冒泡排序交换数据使用
1、利用系统时钟做上升沿变量;
2、利用时钟上升沿采集数据
IF
//#Temp_TRIG_2
// 采集频率
"Tag_2"
THEN
//顺序依次采集
"P_DB".into_Buffer_21 := "P_DB".into_Buffer_21 + 1;
"P_DB".Buffer_P2["P_DB".into_Buffer_21] := "P_DB".P2_Value.Value;
END_IF;
//采集10个数据后继续循环
IF "P_DB".into_Buffer_21 > 9
THEN
"P_DB".into_Buffer_21 := 0;
END_IF;
3、利用For循环开始冒泡排序
//变量初始化
"P_DB".into_Buffer_22 := 1;
//
FOR
"P_DB".into_Buffer_22 := 1 TO 9 BY 1
DO
IF "P_DB".Buffer_P2["P_DB".into_Buffer_22] > "P_DB".Buffer_P1["P_DB".into_Buffer_22 + 1]
THEN
#Temp_Real_P2 := "P_DB".Buffer_P2["P_DB".into_Buffer_22];
"P_DB".Buffer_P2["P_DB".into_Buffer_22] := "P_DB".Buffer_P2["P_DB".into_Buffer_22 + 1];
"P_DB".Buffer_P2["P_DB".into_Buffer_22 + 1] := #Temp_Real_P2;
END_IF;
END_FOR;
排序效果: