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

news2024/9/24 13:24:53

前言
本系列是关于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 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 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是用来切换排序顺序的,可以从大到小,也可以从小到大。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2081092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NS4054H 40V 高耐压线性锂离子电池充电管理 IC

1 特性  最大输入电压&#xff1a; 40V  输入过压保护电压&#xff1a; 6V  内置输入过流保护&#xff1a; 1A  支持 0V 电池电压充电  充电电流可编程  4.2V 充电浮充阈值电压  电池待机电流&#xff1c; 1uA  内置 C/10 充满截止功能 …

数据结构-manacher算法

第一种情况: 以t为中心&#xff0c;他的回文串为abedeks, 同时i’的回文为ede&#xff0c;那么i的回文也是ede。 第二种情况:以s为中心的回文串为 tabkdedk,而以i’为中心的回文串为abkde&#xff0c;已不再L和R之间。此时以i为中心的回文串就为kdedk. 第三种情况: 以t为中心…

书生大模型实战营第三期基础岛第六课——OpenCompass 评测 InternLM-1.8B 实践

OpenCompass 评测 InternLM-1.8B 实践 基础作业:创建虚拟环境下载并安装opencompass安装相关依赖复制测评数据集到当前目录下并解压测评前环境变量配置使用命令行配置参数法进行评测 基础作业: 使用 OpenCompass 评测 internlm2-chat-1.8b 模型在 ceval 数据集上的性能&#x…

强化学习,第 4 部分:蒙特卡洛控制

目录 一、介绍 1.1 强化学习 2.1 关于此文章 三、ε贪婪策略 四、蒙特卡洛控制 4.1 基本原理 4.2 举个例子 五、On-policy & off-policy 方法 六、重要性采样 6.1 赋予动机 6.2 想法 6.3 应用 七、增量实施 7.1 增量的理论 7.2 常α MC 八、结论 一、介绍 …

Livekit本地部署Egress录制服务

Livekit本地部署Egress录制服务 Egress官方推荐使用Docker方式部署。官方文档 创建Egress配置文件 新建config文件 vim config.yamlconfig.yaml文件内容 log_level: debug# api_key 参考livekit 部署 配置的 api_key: 2yJimTMFeF9h15PHEv api_secret: Mvi9ZgqGJ3LqwEAcTV…

项目管理的七大核心要素

项目管理不仅涉及一系列复杂的活动&#xff0c;还涵盖了多个关键要素&#xff0c;这些要素相互交织&#xff0c;共同构成了项目成功的基石。 项目管理七大要素&#xff1a; 1、明确的项目目标&#xff1a; 项目管理的起点是确立清晰、具体、可衡量的项目目标。这些目标不仅为…

新手网络爬虫利器介绍 之 移动蜂窝网络代理

移动蜂窝代理对接说明 在爬虫与反爬虫斗争愈演愈烈的情况下&#xff0c;各大网站和 App 的风控检测越来越强&#xff0c;其中一项就是 IP 封禁。 为了解决 IP 封禁的困扰&#xff0c;一个有效的方式就是设置代理&#xff0c;设置代理之后&#xff0c;爬虫可以借助代理的 IP 来…

IntelliJ IDEA 自定义字体大小

常用编程软件自定义字体大全首页 文章目录 前言具体操作1. 打开设置对话框2. 设置编辑器字体3. 设置编译软件整体字体 前言 IntelliJ IDEA 自定义字体大小&#xff0c;统一设置为 JetBrains Mono 具体操作 【File】>【Settings...】>【Editor】>【Font】 统一设置…

关于git报错please clean your repository working tree

在vscode中使用git拉取代码提示&#xff1a;在签出前&#xff0c;请清理存储库工作树。有时候在写代码前未更新远程代码&#xff0c;会出现代码冲突。 1.git stash 先将本地修改存储在暂存区2.git pull 拉取远程代码3.git stash pop 释放暂存区内容

书生大模型实战营-进阶关卡-6-MindSearch 快速部署

任务&#xff1a;将 MindSearch 部署到 HuggingFace 教程&#xff1a;https://github.com/InternLM/Tutorial/blob/camp3/docs/L2/MindSearch/readme_github.md 环境配置 打开codespace主页https://github.com/codespacescodespace主页&#xff0c;选择blank template。 新…

turtlebot 测试 Gazebo Harmonic ROS Jazzy

源码移植后理论上支持所有Gazebo和ROS版本&#xff0c;但花费时间较多。 只推荐学习Gazebo 经典版和Gazebo Harmonic以及之后版本。 在中间的过渡版本&#xff0c;不推荐学习。 Gazebo经典版包括Gazebo 7 Gazebo 9 Gazebo 11。 Gazebo Harmonic 和 ROS2 jazzy 安装和测试-CSDN博…

核心数据加密的实现方式

核心数据加密是保护企业敏感数据和技术机密的重要手段&#xff0c;它通过加密算法和密钥将明文数据转换为难以解读的密文&#xff0c;以防止数据在存储、传输或使用过程中被未授权访问或泄露。以下是对核心数据加密的详细解析&#xff1a; 一、核心数据加密的重要性 在数字化时…

短视频SDK解决方案,原开发团队,一对一技术支持

美摄科技&#xff0c;作为行业领先的视频技术提供商&#xff0c;凭借深厚的技术积累和敏锐的市场洞察&#xff0c;隆重推出其短视频SDK解决方案&#xff0c;旨在为全球开发者及内容创作者搭建一座通往无限创意与高效生产的桥梁。 【一站式解决方案&#xff0c;赋能创意无界】 …

华裔二、三代长相变迁的多维度解析

华裔二、三代长相变迁的多维度解析http://www.rebootvip.com/wenzhang/3182.html 在全球化日益加深的今天&#xff0c;华裔二、三代的长相特征逐渐展现出与传统中国人形象不同的风貌&#xff0c;这一现象背后蕴含着丰富的生物学、文化、社会及个人层面的原因。以下是对此…

8.27练习

一.创建3个线程&#xff0c;一个子线程拷贝文件的前一半&#xff0c;一个子线程拷贝后一半文件 创建两个子线程分别负责拷贝文件的前半段和后半段&#xff0c;从而提高文件拷贝的效率。父线程负责创建和管理子线程&#xff0c;并等待它们完成任务。 #include <myhead.h>…

Golang | Leetcode Golang题解之第377题组合总和IV

题目&#xff1a; 题解&#xff1a; func combinationSum4(nums []int, target int) int {dp : make([]int, target1)dp[0] 1for i : 1; i < target; i {for _, num : range nums {if num < i {dp[i] dp[i-num]}}}return dp[target] }

如何使用 Pytest 进行测试

Pytest 是一个强大的Python测试框架&#xff0c;支持简单单元测试和复杂的功能测试。它具有灵活的断言表达式、支持参数化测试、强大的插件生态系统等特点。 二、环境搭建 1、安装 Pytest&#xff1a; pip install pytest安装完成后&#xff0c;可以通过命令行检查是否安装成…

锡废水回收实验

电镀厂的锡废水回收过程中&#xff0c;需要进行一系列实验以确保回收效率和环保标准。这些实验主要包括以下几个方面&#xff1a; 一、废水成分分析实验 目的&#xff1a;了解废水中锡及其他重金属、有机物、悬浮物等的含量和性质&#xff0c;为后续处理工艺提供依据。方法&am…

‌分布式计算技术与复杂算法优化:‌现代数据处理的基石

在当今信息时代&#xff0c;‌数据已成为企业和社会发展的核心资源。‌随着数据量的爆炸性增长&#xff0c;‌传统的单机计算模式已难以满足高效数据处理的需求。‌分布式计算技术应运而生&#xff0c;‌它通过将大规模计算任务分解成多个子任务&#xff0c;‌在多个计算节点上…

Docker Compose 部署 Kafka的KRaft模式 不用依赖 Zookeeper

前言 从 Kafka 2.8 开始&#xff0c;KRaft 模式允许 Kafka 在没有 Zookeeper 的情况下运行。本文将部署单机模式 1.新建 docker-compose.yml vim docker-compose.yml services:kafka:image: bitnami/kafka:3.6container_name: kafkaports:- "19092:9092"environm…