当前位置:文档之家› s7-200PLC冒泡法排序

s7-200PLC冒泡法排序

一、冒泡法---封装库(别人写的)
主程序:
请注意,这里的数据操作均为字整型,不支持浮点数,要支持浮点数,需要修改冒泡排序程序.
Network 1
// 假设原始数据放在VW50,那么通过不同的时间片,将这个原始数据放在VW100------VW108,
LD SM0.1
MOVW VW50, VW100
MOVW VW52, VW102
MOVW VW54, VW104
MOVW VW56, VW106
MOVW VW58, VW108
Network 2 // 网络标题
// 对VW100----VW108的数据进行排序,去掉最大值和最小值,只取中间三个样本
LD M0.0
EU
CALL SBR1, &VB100, 5
Network 3
// 这里对排序后的三个值取平均值
LD SM0.0
LPS
MOVW VW102, VW200
AENO
+I VW104, VW200
AENO
MOVW VW200, VW202
+I VW106, VW202
LPP
MOVW VW202, VW204
/I +3, VW204
冒泡法--------------把A[0],A[1]......A[J]从小到大进行排序
//
// 注:排序数为字整数,即VW##,如:VW100,VW102,VW104等
//
// LD20---------------------------变量I
// LD30---------------------------变量J
// LD8------------------------------N-1
Network 1 // 初始化I=0,J=0
LD SM0.0
MOVD 0, LD20
MOVD 0, LD30
MOVD LD4, LD8
-D 1, LD8
Network 2
LBL 0
Network 3 // J=I+1
LD SM0.0
MOVD LD20, LD30
+D 1, LD30
Network 4
LBL 1
Network 5 // A[I] > A[J] ?
LD SM0.0
MOVD LD20, LD12
*D +2, LD12
MOVD LD30, LD16
*D +2, LD16
MOVD LD12, AC1
+D LD0, AC1
MOVD LD16, AC2
+D LD0, AC2
Network 6
LDW>= *AC1, *AC2
NOT
JMP 2
Network 7 // A[I],A[J]进行交换LD SM0.0
MOVW *AC1, LW24 MOVW *AC2, *AC1 MOVW LW24, *AC2 Network 8
LBL 2
Network 9 // J++
LD SM0.0
INCD LD30
Network 10 // J=N?
LDD= LD30, LD4
NOT
JMP 1
Network 11 // I++
LD SM0.0
INCD LD20
Network 12 // I=N-1?
LDD= LD20, LD8
NOT
JMP 0
二、冒泡法----普通语句(自己写的)主程序:
Network 1
LD I0.1
AN Q0.0
CALL SBR0, &VB100, 10, I0.0, Q0.0
子程序:
TITLE=程序注释
Network 1
LD SM0.0
LDW> LW4, 255
OW< LW4, 0
ALD
LPS
S L6.1, 1
NOT
R L6.1, 1
LPP
JMP 0
Network 2
LD SM0.0
MOVW LW4, LW8
-I 1, LW8
Network 3
LD SM0.0
MOVD LD0, AC1
FOR LW10, +1, LW8
AENO
MOVD +1, AC2
+D AC1, AC2
MOVW +1, LW14
+I LW8, LW14
Network 4
LD SM0.0
FOR LW12, LW14, LW4
Network 5
LD SM0.0
A L6.0
JMP 1
Network 6
LD SM0.0
AB> *AC1, *AC2
MOVB *AC1, AC0
AENO
MOVB *AC2, *AC1 AENO
MOVB AC0, *AC2 Network 7
LD SM0.0
JMP 2
Network 8
LBL 1
Network 9
LD SM0.0
AB< *AC1, *AC2 MOVB *AC1, AC0 AENO
MOVB *AC2, *AC1 AENO
MOVB AC0, *AC2 Network 10
LBL 2
Network 11
LD SM0.0
+D +1, AC2 Network 12
NEXT
Network 13
LD SM0.0
+D +1, AC1 Network 14
NEXT
Network 15
LBL 0。

相关主题