1、序言

Codesys的多种编程方式让PLC能够应用于越来越多的场合,而结构化文本ST相对于功能块图FBD、连续功能图CFC、顺序功能图SFC、梯形图LD等方式也具有功能更强,计算更方便等优势;本文通过ST语言实现经典的冒泡排序算法,来了解和熟悉codesys系统中常用的几个功能,如变量的定义,数组的应用,条件与循环结构的应用、可视化界面按钮,数值显示、数值输入的配置方法等。

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、程序准备

本文以10个学生为例,每个学生对应三个数据,学号,姓名,和成绩,建立三种排序方法,按学号排序,按成绩从高到低排序,按成绩从低到高排序。建立3个数组,分别为学号[],姓名[],成绩[],用以保存数据。

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、综述

本文通过对冒泡排序的编程来熟悉codesys结构化文本(ST语言)的应用,当然只涉及到一些基础的应用,希望能够对像我这样的初学者提供一些帮助。

本文源程序代码可通过以下地址下载

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

Codesys基础应用----ST语言实现经典冒泡排序相关推荐

  1. Codesys使用ST语言实现离散PID模型的仿真(非自带PID模型)

    1.序言 要实现恒压供水,恒温控制,恒转速等技术要求,在PLC控制中,一般我们通过通讯或者模拟量采集的方式获取数据,而这些数据的采集都需要一定的时间,数据内容都是离散的,也无法获取连续的数据参数,因此 ...

  2. codesys工程ST语言学习笔记(五)打开压缩文件projectarchive失败,指定的工程不能被加载

    codesys解压文件projectarchive失败 不会编译程序或者建立工程的点击第一篇文章codesys工程ST语言学习笔记(一)建立工程与编译 不会编译程序或者建立工程的点击第一篇文章code ...

  3. c语言实验报告 折半查找法,C语言数组之冒泡排序+折半查找法(二分查找)

    冒泡排序算法 将相邻的元素进行两两比较,大的向后"冒", 小的向前"赶". 口诀: N个数字来排队,两两比较小靠前 外层循环N-1(控制需要比较的轮数). 内层 ...

  4. 三菱PLC编程与案例精讲之ST语言

    想看到如何使用三菱ST文本结构化编程语言来编写通讯程序吗,比如让你用ST编写Modbus代码.编写Socket代码.用ST控制伺服进行各种动作,用ST实现多轴联动,电子凸轮,应该怎么做吗? 第一章 S ...

  5. 多个数字数组_三菱ST语言教学(2)——数组的使用

    上一篇文章介绍了ST基本指令的用法,和声明基本数据类型的标签,但标签除了可以声明单个的基本数据,还可以声明多个数据构成的数组(array),也可以声明结构体(struct)和功能块(function ...

  6. ab st语言编程手册_西门子PLC编程SCL和LAD谁才是王者?一起讨论一下

    现在很多大品牌的中高级 PLC 都支持国际电工委员会 IEC61131 标准中规范的五种编程语言的混合编程,即梯形图(LD).结构化文本(ST).流程图(SFC).指令表(IL)和功能块(FB).在这 ...

  7. 三菱st语言编程实例_LD、FBD、IL、ST、SFC、CFC六种编程语言的特点

    CODESYS共支持六中不同的编程语言,很多学者在学习的过程中常会问一个问题,哪种编程语言最好? 其实本人觉得没有哪种编程语言是绝对的好或不好,不同的工程应用具有不同的最佳编程方式,每种编程语言都具有 ...

  8. st语言 数组的常用方法_ST语言编程手册

    ST 语言编程手册 目录 1. ST 基本原理 ............................................................................ ...

  9. c语言数组冒泡排序程序的解释,c语言指针数组冒泡排序代码

    在学习计算机编程的时候,最重要的就是多思考多练习,才能理解其中的原理.算法,下面ITmemo分享一段我学习c语言基础之后写的一段c语言指针数组冒泡排序代码,其实就是从常规代码改为指针方式进行数组排序而 ...

  10. ab st语言编程手册_从零开始学习ST/SCL编程语言:一赋值及条件执行指令的讲解...

    有很多朋友想学习SCL语言,其实不要把SCL或ST语言想的有多高大上. 首先看下什么是SCL语言:SCL语言是一种结构化文本,类似于计算机高级语言的编程方式,他的语言规范解决计算机的PASCAL语言. ...

最新文章

  1. 计算机三维作品说明,计算机三维技术
  2. 开发日记-20190915 关键词 汇编语言王爽版 第十一章
  3. IOS项目之弹出动画二
  4. 西北工业大学matlab安装,西北工业大学Matlab实验报告.doc
  5. 第十五期:真相了,中台到底“出路”还是“末路”?
  6. Java Web开发技术教程入门-JavaBean组件与Servlet
  7. 《计算机应用基础》模拟试卷三,2015年《计算机应用基础》模拟试题及答案(一)...
  8. asp.net 读取excel文件的一些方法,NPOI方法
  9. Dropping Balls UVA - 679(二叉树的遍历)
  10. 这就是程序员被大厂偏爱的实力!
  11. python访问注册表_python3操作注册表
  12. 机器学习(周志华)知识点总结——第2章 模型评估与选择(后期上传word/PDF)
  13. 英语在线听力翻译器_英语听力翻译app下载-英语听力翻译软件下载v1.1.3 安卓版-2265安卓网...
  14. kali linux安装谷歌浏览器
  15. 常见动词的过去式和过去分词
  16. 邮件服务器 二级域名,hMailServer+Roundcube+APMServ+希网二级域名+ADSL搭建邮件服务器...
  17. vue resource的应用
  18. 超低功耗MCU如何降低功耗
  19. 鸡啄米C++编程入门教程系列
  20. Android Studio 部分查找快捷键

热门文章

  1. 时间管理--番茄工作法
  2. 一个简单的三层架构之仓库管理系统的入库出库
  3. 【PX4学习笔记】2. 真正开始入门px4开发
  4. 一个div在另一个div里垂直居中显示
  5. Cain嗅探工具的基本使用
  6. 用计算机进行进制换算方法,计算机进制怎么转换?计算机进制换算方法
  7. 后台管理系统 - 权限设计
  8. stap中的entry函数
  9. kvaser在linux下的二次开发
  10. 如何将iPhone投屏到Mac电脑上?