微智科技网
您的当前位置:首页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

因篇幅问题不能全部显示,请点此查看更多更全内容