中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

电脑编程

抖音 西门子减速电机 德嘉 台达 英威腾 泓格论坛 西门子 我和LOGO!有个约会 FLIR红外热像论坛 【有奖活动】英威腾 “Ni美国国家仪器 “PLC发展趋势大讨论”活动圆满结束 cc-link图文征集活动 西门子SMART LINE V3
工控论坛首页 电脑编程 → 浏览主题: 如何用PLC梯形图实现冒泡排序算法?
发表新帖 回复该主题
回帖:16个,阅读:317 [上一页] [1] [2] [下一页]
* 帖子主题:

如何用PLC梯形图实现冒泡排序算法?

分享到
30686
jint 管理员
文章数:17468
年度积分:1589
历史总积分:30686
注册时间:2007/8/30
发站内信
发表于:2019/7/24 15:44:50
#0楼
作者注:此程序仅供欣赏,作为科普知识了解即可。实际工程当中PLC一般都有专用的排序指令或函数,不需要我们亲自写排序算法。

学习过一点C语言的朋友,对冒泡排序的概念应该并不陌生。冒泡排序是一种非常基础的排序算法,它的过程是将N个待排序数据当中的两个相邻数据进行比较,如果前者小于后者,则将前者和后者调换位置,然后比较下一对,直到最大的排在列尾。这样反复N-1次,就可以将所有的元素完成从小到大的排序。

这样讲起来比较抽象,我们通过一组直观动图来演示冒泡排序:

附件 冒泡排序1.gif
普通情况下,是这样排序的

附件 冒泡排序2.gif
最差情况下,是这样排序的

附件 冒泡排序3.gif
几乎有序情况下,是这样排序的

看懂了原理,我们归纳冒泡排序算法流程图如下:

附件 image.jpg

C语言实现方式如下(来自百度百科):

附件 image.jpg

现在我们用PLC梯形图来翻译一下,PLC使用三菱FX3U的。

控制效果要求:
在触摸屏的数值框D110-D119当中输入待排序的数据,共10个。

执行排序之后,数据从小到大存放在数值框D120-D129当中。如图所示:

附件 image.jpg

程序如下:

附件 image.jpg
附件 image.jpg
附件 image.jpg
附件 image.jpg
附件 image.jpg

程序当中使用了两个嵌套的for循环语句,在一个扫描周期之内完成排序。

以上就是PLC梯形图实现冒泡排序算法的过程,大家有空的时候可以编写验证一下,实际工程当中使用PLC自带的排序功能就好。


文章转自八方汇培训

温馨提示:
电话:0755-26546361
邮箱:blog@gkong.com
微信公众号:工控论坛;微信号gkongbbs;
不定期修改账号密码;不要在多个网站用同一账号密码
可随时站内信联系,工作日可拨打电话或发邮件咨询相关问题
2706
121111115
文章数:1130
年度积分:644
历史总积分:2706
注册时间:2015/3/16
发站内信
2018论坛分享达人
发表于:2019/7/24 16:16:05
#1楼
这种帖子多来点还是比较有意义的。
30686
jint 管理员
文章数:17468
年度积分:1589
历史总积分:30686
注册时间:2007/8/30
发站内信
发表于:2019/7/24 16:25:06
#2楼
回复 #1楼 121111115
前面的三个动图,这种一般是找到目标,然后移动位置,然后按顺序排列,好像很简单是吧表情
温馨提示:
电话:0755-26546361
邮箱:blog@gkong.com
微信公众号:工控论坛;微信号gkongbbs;
不定期修改账号密码;不要在多个网站用同一账号密码
可随时站内信联系,工作日可拨打电话或发邮件咨询相关问题
10238
pqsh 版主
文章数:4327
年度积分:2099
历史总积分:10238
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2019/7/24 17:39:45
#3楼
记得上次有这帖子:
/archive.aspx?id=468967&page=1#l3008317
如果我忘了我
请帮忙记得我
pqsh@163,326199298@
23563
YXBK 版主
文章数:11042
年度积分:2551
历史总积分:23563
注册时间:2007/4/14
发站内信
2015论坛优秀版主
2015春节活动
2013论坛优秀版主
2012论坛优秀版主
发表于:2019/7/24 18:18:04
#4楼
试了一下,可以。

附件 2019-07-24_181416.jpg


附件:冒泡排序.zip
[本地下载]
大家一起学习
20540
wushulin 版主
文章数:5928
年度积分:947
历史总积分:20540
注册时间:2006/2/17
发站内信
2018论坛优秀版主
2017论坛优秀版主
2016论坛优秀版主
2015论坛优秀版主
2014论坛优秀版主
西门子PLC体验(一)
我秀我做2014
2013论坛优秀版主
秀秀我的办公桌
晒工控工具书
2012论坛优秀版主
2011国庆活动
2010年度论坛贡献奖
发表于:2019/7/26 8:42:03
#5楼
松下PLC有排序指令,我用过的。自己这样编我还没有试过,我从来都是拿来主义。
汽车车桥生产在线检测设备;其它大批量零件生产过程检测,
承接:非标自动化设备设计、旧设备改良与维修; 单独非标项目合作。
2711
MIC小赖
文章数:1098
年度积分:461
历史总积分:2711
注册时间:2015/9/16
发站内信
发表于:2019/7/26 14:37:02
#6楼
三菱的话有SORT可以用,不过吃扫描周期,假如程序庞大扫描周期长的话大量数据排序就很慢了,自己偶尔用ST写写算法也算是找点乐趣了。
[此贴子已经被作者于2019/7/26 14:38:57编辑过]
3383
蜀中之首
文章数:2248
年度积分:1866
历史总积分:3383
注册时间:2018/5/27
发站内信
发表于:2019/7/26 16:38:40
#7楼
以下是引用MIC小赖2019/7/26 14:37:02的发言:
三菱的话有SORT可以用,不过吃扫描周期,假如程序庞大扫描周期长的话大量数据排序就很慢了,自己偶尔用ST写写算法也算是找点乐趣了。
[此贴子已经被作者于2019/7/26 14:38:57编辑过]
数据大了确是个问题
曾经有个客户,就因扫描时间超出而报警停机,最后土法解决,在程序中,穿插了10“套”处理小程序(发现中断更费时)。
1605
18540531
文章数:266
年度积分:507
历史总积分:1605
注册时间:2017/3/18
发站内信
发表于:2019/7/26 16:42:27
#8楼
这都是高手啊
2711
MIC小赖
文章数:1098
年度积分:461
历史总积分:2711
注册时间:2015/9/16
发站内信
发表于:2019/7/26 17:17:43
#9楼
回复 #7楼 蜀中之首
是这样的,之前有在这里更新过的一个项目,PLC写的根据产品名称字符串查询纸箱ID的功能块,通过单扫描周期的模式,一启动直接扫描周期飙升,按照多扫描周期来写吧,查询一次将近10秒,不过好歹不影响设备其它部分。。
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2019 Gkong.com, All Rights Reserved

109.2