上一篇文章介绍了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语言 数组的常用方法_三菱ST语言教学(2)——数组的使用相关推荐

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

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

  2. c语言中通过键盘给一维数组赋值怎么_编程C语言进阶篇——构造类型:数组

    在c语言的实际应用中,我们常常需要同时对多个数据进行处理,如果没有专门批量处理数据的方法,就会给我们的程序编写造成巨大的影响.而这种批量处理数据的方法就是我们这次的主题--数组. 一.数组是什么 在c ...

  3. c语言tab什么意思_收藏 | C语言最全入门笔记

    C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级语言的鼻祖语 ...

  4. java和c语言有关联吗_关于JAVA语言,和C语言有什么联系吗?

    展开全部 Java语言由语法规则和类库两部分组成,其中语法规则确定了Java程序的书写规范,62616964757a686964616fe59b9ee7ad9431333337626264学习好语法规 ...

  5. c语言api文档_初学 C 语言没有项目练手?这 20 个小项目拿走不谢

    C 语言是大多数人的编程入门语言,但很多初学者在学习的过程中难免会出现一些迷茫,比如:不知道 C 语言可以开发哪些项目,可以应用在哪些实际的开发中--今天我们收集了 20 个 C 语言练手项目,提供了 ...

  6. 易语言mysql列表框_详谈易语言的列表框

    群里有人问的,其实易语言中的列表框是我们在开发程序时经常用到的一个东西,我在开发酷Q插件的时候也屡次用到,不得不说,它是不可缺的一个窗口控件. 拿我的"真心话大冒险"酷Q插件举例, ...

  7. c语言不安全库_为什么 C 语言仍然占据统治地位?

    作者 | Serdar Yegulalp 译者 | 王艳妮,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 没有什么技术可以应用长达50年之久,除非它真的比大多数其他东西都 ...

  8. Linux c语言 creat参数,C++_使用C语言操作文件的基本函数整理,C语言creat()函数:创建文件函 - phpStudy...

    使用C语言操作文件的基本函数整理 C语言creat()函数:创建文件函数 头文件: #include #include #include 定义函数: int creat(const char * pa ...

  9. st语言 数组的常用方法_欧姆龙cp1h常用指令学习(九)结构化语言ST

    结构化语言ST是作用于功能块编程中. 这门语言对于梯形图中不善于处理的数值运算等逻辑算法,采用类似于高级语言的语法,使其变得简单. 下面先从功能块的相关知识说起: CP1H的功能块规格: 功能块定义数 ...

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

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

最新文章

  1. 回归模型(regression model)有哪些指标?如何计算回归指标(regression metrics)?如何可视化他们?
  2. ArcGIS JS API 4.X实现动态地图服务子图层显隐控制
  3. Oracle有使用某个索引吗?(如何监控)
  4. SpringBoot 配置多数据源(Sql Server、MySql)
  5. linux每日命令(5):mkdir命令
  6. 我的世界服务器抽奖系统怎么弄,我的世界自动识别货币抽奖机如何制作
  7. 前端学习(41):背景实现视觉差效果
  8. 浅谈!important对CSS的重要性
  9. 苹果HomeKit智能家居战略藏野心:欲实现下一次颠覆
  10. python数字排列组合去重_python解决排列组合问题的4种方式
  11. 移动端 h5页面 长安保存图片到手机
  12. 万字拆解飞鹤奶粉:4年增收150亿背后的增长策略是什么?
  13. rips php,审计PHP工具篇之 RIPS
  14. 南宁二中三中高考2021成绩查询,2021广西重点高中名单及排名
  15. 免安装版tomcat 开机自启动设置
  16. XFTP软件连接虚拟机
  17. 博士学位真的那么重要吗?上交大博士亲述科研心路,获4万高赞~
  18. Ubuntn14.04安装显卡驱动后进不了桌面
  19. mysql 最大导入限制_分享mysql导入.sql 数据库文件最大限制的修改
  20. deepin深度系统安装方法

热门文章

  1. java计算机毕业设计医疗器械销售电子商城源码+系统+mysql数据库+lw文档
  2. java毕业设计开题报告基于SSM学生成绩管理系统
  3. Keil4 keil5兼容
  4. java mina 框架 获取字节_浅谈Java的Mina框架传递对象
  5. 内定抽奖小程序_Excel制作抽奖小程序,单人、多人抽奖只要三步就可实现
  6. 重庆市计算机考试题库,重庆市计算机一级题库
  7. 机器学习:决策树算法案例(西瓜数据集3.0)
  8. 快捷键打开管理员cmd
  9. CSS中文字体对照表
  10. 微波射频学习笔记18-------偶极子天线和微波天线设计介绍