西门子PLC:冒泡排序

Posted 谈武阁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了西门子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篇会详细分享。


点击蓝字 关注我们


以上是关于西门子PLC:冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章

西门子1200plc和其他plc连接

西门子PLC与PLC之间如何通讯?

西门子非安全plc使用安全plc光栅控制块FB212能使用嘛

三菱PLC网关,西门子PLC网关,台达PLC网关是啥?

VC与西门子plc通信的教程

西门子plc监控的时候很慢是啥原因?