设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
AB PLC | Studio 5000实现冒泡排序
返回列表
发新帖
[西门子]
AB PLC | Studio 5000实现冒泡排序
[复制链接]
16459
|
0
|
2024-1-24 07:58:42
|
显示全部楼层
|
阅读模式
前言:在实际的项目中,我们经常会遇到需要对数组中的元素进行排序,而排序又分为两种方式:升序--数值从小到大排列,降序--数值从大到小排列。提及数组的排序,又联想到了经典的排序算法--冒泡排序,如何选择合适的编程语言来实现这一算法呢,显然,梯形图(LD)、功能块图(FBD)两兄弟很难胜任,那么,就把这个重担交给擅长数据处理的结构化文本(ST)大哥吧。
01
测试环境
1. 操作系统:Windows 10 专业版 64位
2. 编程软件:Studio 5000 V32.00.00中文版
3. 硬件环境:CompactLogix 1769-L30ER
02
冒泡排序
1. 冒泡排序,英文Bubble Sort,是一种比较经典而又容易实现的排序算法,它重复地访问要排序的数组元素,依次比较两个相邻的元素,以升序为例,如果当前元素 > 相邻的下一个元素,那么就他们互换位置,紧接着往下比较,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”.
2. 冒泡排序算法的原理如下:.
比较相邻的元素,升序为例,如果当前元素大于相邻的下一个元素(降序相反),就交换它们两个位置
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,最后的元素应该会是最大的数(或最小的数)
针对所有的元素重复以上的步骤,除了最后一个
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较为止
03
实现方法
1. 打开Studio 5000 V32.00.00中文版,在控制器标签域里面创建以下标签,其中myArray为REAL[20]数组.
2. 创建一个例程命名为BubbleSort,编程语言选择结构化文本(ST),这样就可以编写冒泡排序算法代码了,详见下图.
3. 下面说明一下冒泡排序算法的编写过程,首先需要求出数组的下限和上限,其中求数组尺寸大小,用到了SIZE指令,关于SIZE指令的用法,这里就不展开了,不熟悉的小伙伴可以查阅《LOGIX5000 控制器通用指令参考手册》,官方出版号:1756-rm003_-zh-p
4. 冒泡排序--升序代码:用到了2个FOR循环,第1个FOR循环用于访问数组中的每一个元素,第2个FOR循序用于相邻元素的两两比较,如果当前元素数值>相邻下一个元素数值,它们就交换位置,直到最后一个元素,无需再比较了,也没有比较的对象了,所以循环标签j的终值等于(数组上限-1-i).
5. 冒泡排序--降序代码:和升序方法相同,只是比较方式不同而已,当前元素数值<相邻下一个元素数值,它们就交换位置.
04
测试验证
1. 冒泡排序--升序测试,详见下面视频和图片.
video:
https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_2002422106059341824
2. 冒泡排序--降序测试,详见下面视频和图片.
video:
https://mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&action=mpvideo&auto=0&vid=wxv_2002507839109496833
结语:综上所述,本文首先介绍了冒泡排序的算法原理,并根据此算法编写ST代码,通过使用两个FOR指令、双循环来实现冒泡排序,最后在实际的控制器中测试验证成功。当然,本文案例是冒泡排序最基本、最原始的用法,仅仅用于数组元素的排序,那么,它还有更多用处吗,答案是肯定的,有时间了,下一篇文章分享一个实际的案例应用,同时,希望本文抛砖引玉,给大家一点启发和帮助。
【AB PLC工作室】
微信公众号ID:abseme
坚持原创 注重实用
如果本文,对您有一点帮助或启示。
请分享给更多的朋友,对小编以示鼓励,谢谢!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
ABPLC工作室
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』