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

电脑编程

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 电脑编程 → 浏览主题: 如何用PLC梯形图实现冒泡排序算法?
发表新帖 回复该主题
回帖:19个,阅读:9179 [上一页] [1] [2] [下一页]
* 帖子主题:

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

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

附件 2019-07-24_181416.jpg


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

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

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

93.6006