Codesys基础应用—-ST语言实现经典冒泡排序

1、序言

1.1、ST语言介绍

ST语言与我们传统所熟知的梯形图或顺序功能图有比较大的差别,其编程风格更像是一种可执行脚本,类似于PASCAL及C语言,提供了其他脚本语言一样的功能支持,如IF…ELSE、CASE、WHILE、FOR等条件判断与循环执行语句,相比其他编程方式,ST语言具有以下优点:

a、门槛高,安全性好,相对梯形图等结构,ST语言更加抽象,程序员想要对程序进行解读和修改就需要更高的知识和理论基础;

b、计算更方便,数据计算一直是传统的PLC的缺陷,很多程序员宁愿选择触摸屏的脚本功能也不愿用梯形图来计算,ST语言可以完美的解决这个问题;

c、更多的高级功能使用,ST语言能够更方便的使用类似于计算机编程语言的高级功能,包括数组,指针,结构体等,不同平台之间,ST语言更方便的移植和复制。

1.2、冒泡排序介绍

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

2、程序准备

2.1、变量定义

首先定义4个全局变量,3个一维数组,类别分别为array,从0-9,格式分别为word,string,real,分别为整型(学 ),字符型(姓名)和浮点型(成绩),一个开关信 ,作为起始信 使用,即开机脉冲,如图所示。

 再次定义局部变量,根据需要定义,具体内容和类型就不介绍了,看图即可,

2.2、可视化界面制作及变量连接 

可视化界面按下图建立3个排序按钮,按钮控制方式为切换,将按钮–输入配置–变量设置为对应的变量,文本的设置方式为:固定的只需要在文本处输入对应的名称或数值即可,变量则需要将文本值设置为%s,即显示字符串的意思,还需要设置对应的文本变量(中文姓名目前未研究,本例使姓名用拼音)。在实际情况中,成绩一般需要自行输入,则将文本的输入配置中,OnMouseClick(点击鼠标)点上,将写变量添加到右侧,变量选择可以使用文本输出的变量即可。将所有的变量连接上,画面即制作完毕。

 

3、程序编写

3.1、开机脉冲

本例用梯形图写了一个开机初始化的程序,即默认按学 依次输入数据,即开机脉冲的作用,其目的是当开机脉冲结束后,程序循环运行不会执行开机脉冲的设定,同时配合ST语言,在开机脉冲时给数据赋值,如图所示

 3.2、冒泡算法编程

冒泡算法的逻辑(以最大数值为例):选定一个数值,完成以下循环,与数组内的第一个值比较,将大的数值定位选定的数值,再与数组的下一个值比较,依次与整个数组内的数值比较完,最终将数组内的最大数选出,排在第一位;

从大到小的排序的逻辑则需要增加循序,即将最大数选出后,将其剔除,以剩下的数据重新选出最大数,再次剔除,以此循环,直到数据只剩下1个后,循环结束,ST程序程序如下:本例增加了一组条件,即成绩相同时,按学 从小到大排列;

  按学 排序与,从小到大排序程序相似,不做介绍。

4、可视化仿真

 程序编程完毕后,通过可视化进行仿真,仿真结果如下,

开机状态

按成绩从高到底排序结果

 

 成绩从低到高排序

 想要恢复初始状态,点击按学 排序即可。

5、综述

https://download.csdn.net/download/qq_19979629/81927663

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览33905 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月2日
下一篇 2022年1月2日

相关推荐