今天给大家分享下用博途数据排序及滤波的例子。
首先建立FC10如下:
DB17:
代码及注释如下:
TAR1 #Tmp_DWord3
OPN "数据块_4"
L P#0.0
LAR1
L #fc_Data_digit
T #Tmp_DWord
L DW#16#0
T #Tmp_DWord4
L 0
T #Tmp_counter
L #fc_Array_Length
//******************************循环体
Next: T #Tmp_number
L #Tmp_counter
SLD 5 //建立指针,数组为DWORD型,4BYTE,P#4.0,2^5=32
L P#0.0
+D
LAR1
//*******************************对数据进行排序,数值从大到小存放在DB17从数组0开始到第fc_Array_Length个数组
L #Tmp_DWord
L DBD [ AR1 , P#0.0 ]
>D
JCN x4
T #Tmp_DWord2
L #Tmp_DWord
T DBD [ AR1 , P#0.0 ]
L #Tmp_DWord2
T #Tmp_DWord
x4: NOP 0
L #fc_Offset
L #Tmp_counter
+I
SLD 5 // 建立指针,把指针指向第fc_Offset+1个数组
L P#0.0
+D
LAR1
L DBD [ AR1 , P#0.0 ]
L #Tmp_DWord4
+D
T #Tmp_DWord4 //将数组中滤掉的后的数据进行累加
L #Tmp_counter
L 1
+I
T #Tmp_counter
+AR1 P#4.0 //将指针依次指向下一个数组
L #Tmp_number //读取当前循环体的计数器
LOOP Next //计数器满跳出循环体
//******************************
L #Tmp_DWord4
T #fc_SumOfMeasures
LAR1 #Tmp_DWord3