西门子PLC:冒泡排序
冒泡排序,顾名思义是用来进行排序数值的算法。
主要内容
1、冒泡排序原理;
2、PLC程序解析;
01
冒泡排序原理
题目:
见下图,有五个值,每个值的数值都不一样,需要编写一个程序对其进行从小到大的排序;
排序原理:
冒泡排序核心在于比较与替换,假定我们要将小的值放在左边(值1),大的值放在右边(值5),那么先值1与值2进行对比,若值1大于值2则将值1与值2的值进行互换,否则跳过;不断比较与替换下去,直到值全部被排序完毕,即任何左边的值都小于右边的值,见下图:
本案例是从左到右比较,下面是从右到左;还有本案例是从1到5,不过原理都一样,并不妨碍理解,最好结合程序来一起理解。
02
PLC程序
程序:
变量表
程序解析:
明白了冒泡排序的原理(比较与替换),基本可以直接编程出来,但是还有个问题,就是如何交换两个值呢?见下图:
MOVE是传送指令,作用是将左边的值赋值给右边。
交换两个值的操作其实非常简单,只需要先将值2存入中间量作缓存使用,然后再将值1存入值2,最后将中间量(原来的值2)存入值1,完成交换。
现在只是使用了5个值进行排序,如果需要更多值进行排序那么一直按这个结构做下去就行。
更简洁的方式
如果有100个值那么就有100行,岂不是太繁琐了?有没有更方便的方法?有,不过要使用SCL进行编程,这些算法一般都是使用SCL进行编程的,虽然语言不一样,不过原理都是一致的。本章为了方便理解所以就先使用梯形图进行编程,后面在SCL篇会详细分享。