登录
首页 电脑编程
回帖 发帖
正文

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

点击:10198 回复:19

作者注:此程序仅供欣赏,作为科普知识了解即可。实际工程当中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自带的排序功能就好。
文章转自八方汇培训
19-07-24 15:44
这种帖子多来点还是比较有意义的。
19-07-24 16:16
前面的三个动图,这种一般是找到目标,然后移动位置,然后按顺序排列,好像很简单是吧表情
19-07-24 16:25
19-07-24 17:39
试了一下,可以。
附件 2019-07-24_181416.jpg
附件:冒泡排序.zip
[本地下载]
19-07-24 18:18
松下PLC有排序指令,我用过的。自己这样编我还没有试过,我从来都是拿来主义。
19-07-26 08:42
三菱的话有SORT可以用,不过吃扫描周期,假如程序庞大扫描周期长的话大量数据排序就很慢了,自己偶尔用ST写写算法也算是找点乐趣了。
最后修改:2019/7/26 14:38:57
19-07-26 14:37

引用 MIC小赖 在 2019/7/26 14:37:02 发言【内容省略】

数据大了确是个问题
曾经有个客户,就因扫描时间超出而报警停机,最后土法解决,在程序中,穿插了10“套”处理小程序(发现中断更费时)。
19-07-26 16:38
这都是高手啊
19-07-26 16:42
是这样的,之前有在这里更新过的一个项目,PLC写的根据产品名称字符串查询纸箱ID的功能块,通过单扫描周期的模式,一启动直接扫描周期飙升,按照多扫描周期来写吧,查询一次将近10秒,不过好歹不影响设备其它部分。。
19-07-26 17:17

上一页下一页

工控新闻

更多新闻资讯