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

数组的建立

什么是数组呢?就我个人理解,数组就是一组相同类型的数据构成的列表,它可以是一组开关量,可以是数字量,也可以是结构体,在标准的ST语言中也可以是一组功能块(三菱不支持)。

下面声明一个包含100个位(bit)变量的数组:

声明数组变量

点击确定后数据类型显示“bit(0..99)”。可以看到,与基本数据相比,建立数组只不过是在选择数据类型时勾选数组对话框,并添加数量就可以了,确定后标签BitList代表的就是容量为100的位数组。

数组的赋值

那数组如何使用呢?先举个简单的例子:

图中显示的是对数组前10个变量直接进行赋值,可以看到想要操作数组中的某一个变量,只要在标签BitList后面加上[x]就可以了,需要注意无论判断还是赋值,x的值一定要在数组的范围内,否则会引起PLC报错。

常用方法

数组强大的地方在于,方括号内除了直接写数值,还可以使用整形的数字变量,这个特性配合case或者for指令,只要几行代码就可以实现多个变量同时操作。例如:建立一个容量为1000的字(word)数组,第一个元素为0,后面每一个元素都比前一个大3:

多变量按规则赋值

这段程序看起来很少,但是弄清楚工作的原理还是要稍微费点时间的,数字量ii由1数到999共999次(省略by就默认增量为1)。

当ii=1时,执行一次WordList[1]:=WordList[0]+3,WordList[0]并没有进行操作默认值为0,WordList[1]=0+3=3;

当ii=2时,执行一次WordList[2]:=WordList[1]+3,WordList[2]=3+3=6;

。。。

。。。

当ii=999时,执行一次WordList[999]:=WordList[998]+3,WordList[999]=2994+3=2997;

仿真执行一次,监看数组WordList,验证是否这个操作是否被正确的执行:

仿真运行+监看变量

可以看到,结果跟前面分析的一直,仅用3行程序完成了1000个变量赋值的任务目标。

拓展

数组除了赋值还可以进行搜索判断,我们可以在上面的基础上加大一下难度:分析上面的数组,将值是5的倍数的数组号依次存入新数组NumbList,由NumbList[1]开始存,并将数量存入NumbList[0]。

结果如图,共有200个,分别是0,5,10,15...。

在原来的for循环后面增加了新的for循环,由0至999遍历上面生成的整个WordList数组,使数组中的每一个元素与5做除余(MOD为除余指令,前面的变量除以后面的变量取余数),将余数放入一个临时变量里面,然后判断这个这个余数是否为0,为0则值是5的倍数,在1000次循环中,每次遇到余数为0时,NumbList[0]的值自身加1,并将它作为数组NumbList的组号记录当前判断WordList的组号。两个循环的外面增加了执行条件,目的是让循环只执行一个周期,保证NumbList[0]的值是正确的。

多个数字数组_三菱ST语言教学(2)——数组的使用相关推荐

  1. 遍历结构体_三菱ST语言编程(3)——结构体变量

    上篇文章介绍了数组,是一组相同类型数据的列表,那么不同类型的数据能否组合到一起用一个标签表示呢?答案当然是可以的,而实现这个功能的就是结构体(struct). 建立结构体 在三菱结构化编程的界面中左侧 ...

  2. c语言指针数组 难点总结,C语言指针与数组的难点分析.pdf

    C语言指针与数组的难点分析,c语言指针数组,c语言二维数组指针,c语言指针数组初始化,c语言函数指针数组,c语言数组与指针,c语言结构体数组指针,c语言指向数组的指针,c语言字符串数组指针,c语言数组 ...

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

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

  4. python 创建空的numpy数组_真假美猴王-Numpy数据与Python数组的区别与联系

    Numpy,是python中的一个矩阵计算包,功能类似matlab的矩阵计算.Numpy的诞生弥补了下面提到的两项的不足,numpy提供了两种基本的对象:ndarray(N-dimensional a ...

  5. C语言中动态数组的作用,C语言实现动态数组

    前言 在纯C语言编程中,数组的创建必须是固定的大小,因为C语言本身没有提供动态数组这种数据结构,这是一个让习惯了使用高级语言编程的人转做C开发面临的一个很头疼的问题,本篇文章就将介绍如何使用纯C语言编 ...

  6. c语言二维数组表示坐标,c语言多维数组地址的表示方法

    c语言多维数组地址的表示方法 导语:我们知道数组名就是指针常量.下面让我们了解一下多维数组的地址表现方法. 设有整型二维数组a[3][4]如下: 0 1 2 3 4 5 6 7 8 9 10 11 设 ...

  7. doctrine find的对象转换成数组_「ES6基础」Array数组的新方法(上)

    在日常工作中我们经常会与数组打交道,因此需要熟练掌握数组操作的相关方法,ES6中关于数组的操作,又给我们带来了哪些惊喜呢,Array数组操作又添加了哪些新方法? 本篇文章将从以下几个方面进行介绍: A ...

  8. scala 字符串转换数组_如何在Scala中将字节数组转换为字符串?

    scala 字符串转换数组 Byte Array in Scala is an array of elements of a byte type. String in Scala is a colle ...

  9. cmake字符串转数组_掌握常用的数据结构之数组和字符串

    点击上方蓝字设为星标 每周一.三.五上午 8:30 准时推送 下面开始今天的学习- 数组和字符串 所谓数组,是有序的元素序列.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用 ...

最新文章

  1. pve rust 能拆家吗_RUST:2020年9月第四周:向上向上再向上!
  2. 蓝桥杯-区间k大数查询(java)
  3. C++shell排序(附完整源码)
  4. android service中显示一个dialog
  5. WebAPI(part5)--排他操作
  6. 轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
  7. 如何备份和还原Firefox设置
  8. ps自定义形状工具_ps中借助形状工具绘制卡通图
  9. html pre标签增加行号,vue使用highlight.js 添加行号
  10. 第五章 ---- 面向对象(二)
  11. 美的oracle财务系统,美的集团Oracle ERP 系统财务操作手册(pdf 73页)
  12. 微信棋牌平台开发架设HTML5手机端页面缩放搭建教程
  13. 序列解包(for x,y in zip(keys, values):)详解。
  14. 亲测Trimble X7三维扫描仪
  15. C语言 —— int32_t uint32_t 及size_t
  16. git撤销commit
  17. win10 ubuntu16.04 双系统 时间不一致问题解决办法
  18. 还在跑遍武汉追樱花,这份武汉赏樱地图送给你
  19. 声学概念解释——混响时间
  20. 软考高级系统架构设计师:响应式Web设计和主从复制机制的好处

热门文章

  1. SoC(System on chip)与NoC(network-on-chip)
  2. deeplearning算法优化原理
  3. 从PyTorch到ONNX的端到端AlexNet
  4. Docker Buildx插件
  5. 给手绘图着色(添加颜色或色彩):CVPR2020论文点评
  6. Android系统的启动过程
  7. github一些常见命令
  8. Python中按值来获取指定的键
  9. HDU-1459.非常可乐(BFS )
  10. 微信小程序----map组件实现(获取定位城市天气或者指定城市天气数据)