作者注:此程序仅供欣赏,作为科普知识了解即可。实际工程当中PLC一般都有专用的排序指令或函数,不需要我们亲自写排序算法。
什么是冒泡排序?
![44287210184d3ce4ab06065e93ff4501.gif](https://i-blog.csdnimg.cn/blog_migrate/acb05bdb54b7a99eb4ccef1c81386ce3.gif)
学习过一点C语言的朋友,对冒泡排序的概念应该并不陌生。冒泡排序是一种非常基础的排序算法,它的过程是将N个待排序数据当中的两个相邻数据进行比较,如果前者小于后者,则将前者和后者调换位置,然后比较下一对,直到最大的排在列尾。这样反复N-1次,就可以将所有的元素完成从小到大的排序。
这样讲起来比较抽象,我们通过一组直观动图来演示冒泡排序:
![d318c783fa88eb832e29f318eeeb7d11.gif](https://i-blog.csdnimg.cn/blog_migrate/f7717ce7b389f5946159addd24244a73.gif)
普通情况下,是这样排序的
![b4e283997664dfd02e41693058b2bcea.gif](https://i-blog.csdnimg.cn/blog_migrate/5dfecf22806f8d7bfbbc71b5d62c23b3.gif)
最差情况下,是这样排序的
![f560bac91a80072f421c19655bdfb76c.gif](https://i-blog.csdnimg.cn/blog_migrate/38015f8f1830b69d9cea5bb3197f3e01.gif)
几乎有序情况下,是这样排序的
看懂了原理,我们归纳冒泡排序算法流程图如下:
![52da04a4392617ee674e59d5dcaf8e4b.png](https://i-blog.csdnimg.cn/blog_migrate/35379e2617769b765bb3f71969431016.jpeg)
C语言实现方式如下(来自百度百科):
![6add24735665b54292f423d651e429a9.png](https://i-blog.csdnimg.cn/blog_migrate/8dc2fda23a166396c1169e20aed7cf3a.jpeg)
现在我们用PLC梯形图来翻译一下,PLC使用三菱FX3U的。
控制效果要求:
在触摸屏的数值框D110-D119当中输入待排序的数据,共10个。
执行排序之后,数据从小到大存放在数值框D120-D129当中。如图所示:
![26432ffb61ef35306dd8cad432c8923d.png](https://i-blog.csdnimg.cn/blog_migrate/ee75a9c258661e35f2e22edd0d37c4b6.jpeg)
程序如下:
![7f29327ffc16d0ff4959502e75d0bbea.png](https://i-blog.csdnimg.cn/blog_migrate/0449b1591484c1281589570615f6ebb1.jpeg)
![df3ad0eb59519459fd5e99a88865ce44.png](https://i-blog.csdnimg.cn/blog_migrate/4723d8249a2959db1cc688ce84863cce.jpeg)
![e0d5eaab98c9d46b2753fd9e63195697.png](https://i-blog.csdnimg.cn/blog_migrate/e54df01b77b77556064af8af163299ef.jpeg)
![7c7db132b8168604f0cdca6378ff1b70.png](https://i-blog.csdnimg.cn/blog_migrate/cb6e9fffc2b2e51381d0d308a70e24f1.jpeg)
![30aa330a456d0805e38c6964318cb600.png](https://i-blog.csdnimg.cn/blog_migrate/b8020be43abfafc0b5276aebeb58663b.jpeg)
程序当中使用了两个嵌套的for循环语句,在一个扫描周期之内完成排序。
以上就是PLC梯形图实现冒泡排序算法的过程,大家有空的时候可以编写验证一下,实际工程当中使用PLC自带的排序功能就好。
- end -
想学习PLC编程了解更多自动化专业资料的可以加我微信:18603068534
![38494b0887ff89b7d2a9be539ed0fa57.png](https://i-blog.csdnimg.cn/blog_migrate/c8c81b0a181f1f79111dcd711bcb3371.jpeg)