数组排序程序(SCL)

已锁定

masscer

  • 帖子

    47
  • 精华

    0
  • 被关注

    3

论坛等级:游士

注册时间:2007-08-16

普通 普通 如何晋级?

数组排序程序(SCL)

2909

11

2008-03-16 10:13:01

昨天在网上找了好久关于在STEP7中数组排序的程序,没有找到,就自己写了一个,使用的是SCL,用梯形图和语句表编写起来不容易。
对温度的滤波比较有用,取中间大小的值为实际值。
FUNCTION FC625 : VOID
//冒泡法取温度的中间值
//作者:陈俊
CONST
number :=12;//数组存放的数据数量
END_CONST

VAR_INPUT
Tem_actual_input : REAL;//实际温度输入
Tem_actual_udt : UDT3;//存放12个温度的结构体变量
END_VAR

VAR_IN_OUT
Tem_array_1 :ARRAY[1..number] OF REAL;//从大到小排序的数组
END_VAR

VAR_TEMP
Index_1 : INT;
Index_2 : INT;
Tem_temp :REAL;
END_VAR

VAR_OUTPUT
Tem_actual_output :REAL;//实际值温度输出
END_VAR

BEGIN
//取11组温度放入中间数组
Tem_array_1[1] :=Tem_actual_udt.Tem_01;
Tem_array_1[2] :=Tem_actual_udt.Tem_02;
Tem_array_1[3] :=Tem_actual_udt.Tem_03;
Tem_array_1[4] :=Tem_actual_udt.Tem_04;
Tem_array_1[5] :=Tem_actual_udt.Tem_05;
Tem_array_1[6] :=Tem_actual_udt.Tem_06;
Tem_array_1[7] :=Tem_actual_udt.Tem_07;
Tem_array_1[8] :=Tem_actual_udt.Tem_08;
Tem_array_1[9] :=Tem_actual_udt.Tem_09;
Tem_array_1[10] :=Tem_actual_udt.Tem_10;
Tem_array_1[11] :=Tem_actual_udt.Tem_11;
Tem_array_1[12] :=Tem_actual_udt.Tem_12;
//开始冒泡程序
FOR Index_1 :=1 TO number-1 BY +1 DO
FOR Index_2 :=Index_1+1 TO number BY +1 DO
IF Tem_array_1[Index_1] < Tem_array_1[Index_2] THEN
Tem_temp :=Tem_array_1[Index_2];
Tem_array_1[Index_2] :=Tem_array_1[Index_1];
Tem_array_1[Index_1] :=Tem_temp;
END_IF;
END_FOR;
END_FOR;
//取中间大小的值作为温度的输出
Tem_actual_output :=Tem_array_1[6];
END_FUNCTION
数组排序程序(SCL) 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54618条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。