博途记录(一)SCL冒泡排序

代码如下

变量说明

%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;

排序效果:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值