将寄存器根据其内的数据大小进行排序

已锁定

shining

西门子1847工业学习平台

  • 帖子

    8
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2008-01-28

普通 普通 如何晋级?

将寄存器根据其内的数据大小进行排序

776

6

2015-03-04 23:14:07

展开查看
引用自找答案,问题ID:42036

我的数据存在VW4500开始的每隔一个位的存储器内,即VW4500,VW4502,VW4504,...VW4546,总共有24个,希望实现从小到大排序,即最大的数放在VW4546内。尝试用FOR循环来实现,望指点迷津

提问者:花样少年


S7-200 / Net 回答道:

去看下最简单的冒泡法,自己做才是真道理

 //Main主程序 对5个数进行排序从VW4500至Vw4508进行排序,任意多个数可以在SM0.1中初始化;
 Network1
 LD     SM0.1
 MOVW   1, VW2000
 MOVW   1, VW1000
 MOVD   &VB4498, VD3000
 MOVW   700, VW4500
 MOVW   210, VW4502
 MOVW   110, VW4504
 MOVW   510, VW4506
 MOVW   5110, VW4508
 MOVW   1, VW600

 Network2
 LD     M1.0
 CALL   S0:SBR0

 
 //SO:SBR0子程序,采用内外两个For循环及VD1118与VD1008双指针进行排序操作
 Network1
 LD     M1.0
 FOR    VW2000, VW600, 4

 Network2
 LD     M1.0
 FOR    VW1000, VW2000, 3

 Network3
 LD     M1.0
 LPS
 MOVW   VW1000, VW1002
 AENO
 *I     +2, VW1002
 AENO
 ITD    VW1002, VD1004
 LPP
 MOVD   VD1004, VD1114
 +D     +2, VD1114

 Network4
 LD     M1.0
 MOVD   VD3000, VD1008
 +D     VD1004, VD1008
 MOVD   VD3000, VD1118
 +D     VD1114, VD1118

 Network5
 LD     M1.0
 MOVW   *VD1008, VW3500
 MOVW   *VD1118, VW3502

 Network6
 LD     M1.0
 AW>    VW3500, VW3502
 MOVW   *VD1008, VW3004
 MOVW   *VD1118, *VD1008
 MOVW   VW3004, *VD1118

 Network7
 NEXT

 Network8
 NEXT

 【PLC:S7 200 226 调试通过可以直接测试】

还有5人在找答案上回答了该问题,查看全部>
5个寄存器,D4500,D4502,D4504 ,D4506,D4508,分别存放5个值,如,3,4,2,6,1,希望将寄存器根据其内的数据大小排序变为,D4508,D4504,D4500,D4502,D4506,下列是否可行?请大侠指教
//Main主程序 对5个数进行排序从VW4500至Vw4508进行排序,任意多个数可以在SM0.1中初始化;
Network1
LD SM0.1
MOVW 1, VW2000
MOVW 1, VW1000
MOVD &VB4498, VD3000
MOVW 700, VW4500
MOVW 210, VW4502
MOVW 110, VW4504
MOVW 510, VW4506
MOVW 5110, VW4508
MOVW 1, VW600

Network2
LD M1.0
CALL S0:SBR0


//SO:SBR0子程序,采用内外两个For循环及VD1118与VD1008双指针进行排序操作
Network1
LD M1.0
FOR VW2000, VW600, 4

Network2
LD M1.0
FOR VW1000, VW2000, 3

Network3
LD M1.0
LPS
MOVW VW1000, VW1002
AENO
*I +2, VW1002
AENO
ITD VW1002, VD1004
LPP
MOVD VD1004, VD1114
+D +2, VD1114

Network4
LD M1.0
MOVD VD3000, VD1008
+D VD1004, VD1008
MOVD VD3000, VD1118
+D VD1114, VD1118

Network5
LD M1.0
MOVW *VD1008, VW3500
MOVW *VD1118, VW3502

Network6
LD M1.0
AW> VW3500, VW3502
MOVW &VD1008, VW3004
MOVW &VD1118, VD1008
MOVW &VW3004, VD1118

Network7
NEXT

Network8
NEXT
将寄存器根据其内的数据大小进行排序 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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