vlambda博客
学习文章列表

西门子PLC:冒泡排序


    冒泡排序,顾名思义是用来进行排序数值的算法。

主要内容

1、冒泡排序原理;

2、PLC程序解析;

01

冒泡排序原理

题目:

    见下图,有五个值,每个值的数值都不一样,需要编写一个程序对其进行从小到大的排序;

西门子PLC:冒泡排序

排序原理:

    冒泡排序核心在于比较与替换,假定我们要将小的值放在左边(值1),大的值放在右边(值5),那么先值1与值2进行对比,若值1大于值2则将值1与值2的值进行互换,否则跳过;不断比较与替换下去,直到值全部被排序完毕,即任何左边的值都小于右边的值,见下图:

    本案例是从左到右比较,下面是从右到左;还有本案例是从1到5,不过原理都一样,并不妨碍理解,最好结合程序来一起理解。

西门子PLC:冒泡排序

02

PLC程序

程序:

西门子PLC:冒泡排序

变量表

程序解析:

    明白了冒泡排序的原理(比较与替换),基本可以直接编程出来,但是还有个问题,就是如何交换两个值呢?见下图:

MOVE是传送指令,作用是将左边的值赋值给右边。

     交换两个值的操作其实非常简单,只需要先将值2存入中间量作缓存使用,然后再将值1存入值2,最后将中间量(原来的值2)存入值1,完成交换。

    现在只是使用了5个值进行排序,如果需要更多值进行排序那么一直按这个结构做下去就行。

更简洁的方式

    如果有100个值那么就有100行,岂不是太繁琐了?有没有更方便的方法?有,不过要使用SCL进行编程,这些算法一般都是使用SCL进行编程的,虽然语言不一样,不过原理都是一致的。本章为了方便理解所以就先使用梯形图进行编程,后面在SCL篇会详细分享。


点击蓝字 关注我们