<PLC><算法>使用汇川eazy521系列PLC,如何使用LiteST语言对乱序数组进行排序?(冒泡法)

前言
本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。

PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。

除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如果有值得记录的内容,也会添加进来。

环境配置
系统:windows
软件:PLC编程软件(依品牌而定,如博图)
语言:梯形图、STL、C、js(脚本用)等
库:相应PLC指令库、通用脚本

本篇内容
本篇主要介绍在汇川Eazy521系列PLC中,使用其LiteST语言,来编写一个对乱序数组进行排序的程序(冒泡法)。

在这里插入图片描述

冒泡法介绍

算法原理
冒泡排序通过不断地比较相邻元素并交换它们的位置,使得较大的元素逐渐“浮”到数组的末尾,而较小的元素则逐渐“沉”到数组的开头,因此得名“冒泡排序”。
该算法通过重复地遍历待排序的列表,比较每对相邻的项,如果它们的顺序错误就把它们交换过来。遍历列表的工作是重复地进行直到没有再需要交换,也就是说该列表已经排序完成。

PLC代码实现
temp1:=0;
inputtemp:=inputarray;   
if enable then
	if mode = 0 then
		FOR i :=0 TO 9 BY 1 DO
			for j:=0 to 9-i-1 by 1 DO
				m:=j+1;
				if inputtemp[j] > inputtemp[m] THEN
					temp1:=inputtemp[j];
					inputtemp[j]:=inputtemp[m];
					inputtemp[m]:=temp1;
				END_IF;
			END_FOR;
		END_FOR;
	ELSIF mode =1 THEN
		FOR i :=0 TO 9 BY 1 DO
			for j:=0 to 9-i-1 by 1 DO
				m:=j+1;
				if inputtemp[j] < inputtemp[m] THEN
					temp1:=inputtemp[j];
					inputtemp[j]:=inputtemp[m];
					inputtemp[m]:=temp1;
				END_IF;
			END_FOR;
		END_FOR;
	END_IF;
	outputarray:=inputtemp;
END_IF;

上面的代码是汇川PLC中以LiteST语言编写的,是一个FC块封装:
在这里插入图片描述
参数也很简单,enable是用来开启算法的,因为内部是使用for循环来计算的,因此会消耗芯片的性能,我们只在需要排序的时候触发一下使能信号计算就行。
inputarray是输入数组,本例中的数组长度为10,因为冒泡法是一个简单的算法,且用到了for循环,对于长度很大的数组来说,这种算法就显得不足了。
因此本例中你的方法,只针对于数组长度不大的情况下。
mode是用来切换排序顺序的,可以从大到小,也可以从小到大。

我们来看一下实例演示:
稍后添加

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机构师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值