回复:4台泵按运行时间从小到大,将对应寄存器号进行排序(不对运行时间排序)

shining

西门子1847工业学习平台

  • 帖子

    8
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2008-01-28

普通 普通 如何晋级?

发布于 2015-03-08 10:57:09

3楼

在数字排序程序中引申:4个寄存器,vw4530,vw4532,vw4534 ,vw4536分别存放4个值(运行时间),如,3,4,2,6,希望将寄存器根据其内的数据大小排序变为,vw4504(对应时间2),vw4500(对应时间3),vw4502(对应时间4),vw4506(对应时间6),或者对寄存器vw4530,vw4532,vw4534 ,vw4536排序,变为vw4534(对应时间2),vw4530(对应时间3),vw4532(对应时间4),vw4536(对应时间6),
Network1
LD SM0.1
MOVW 1, VW2000 //外循环当前值
MOVW 1, VW1000 //内循环当前值
MOVD &VB4498, VD3000 //建立指针
MOVW 4530, VW4500 //时间传送
MOVW 4532, VW4502 //时间传送
MOVW 4534, VW4504 //时间传送
MOVW 4536, VW4506 //时间传送
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

共有33289条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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