st语言 数组的常用方法_三菱ST语言教学(2)——数组的使用

上一篇文章介绍了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]的值是正确的。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
三菱ST语言编程中,定时器是一种用于控制特定时间间隔的功能块。定时器可以用来实现一些需要在固定时间间隔内执行的任务,例如周期性的数据采集、定时报警等。 在ST语言中,我们可以通过声明定时器变量来定义一个定时器,并设置定时器的时间周期。常用的定时器指令包括TON(定时器ON延时),TOF(定时器OFF延时)和TP(定时器脉冲延时)。 TON指令用于设定一个定时器,当定时器的累计时间达到设定的时间周期时,输出一个ON信号。TOF指令则在定时器完成计时后,输出一个OFF信号。TP指令提供了定时器的脉冲输出功能,当定时器的总时间达到设定的时间周期时,输出一个脉冲信号。 除了时间周期设置外,我们还可以通过使用定时器的运行指令,如EN、DN和RES来启动、停止和复位定时器。EN指令用于使定时器开始计时,DN指令用于停止定时器的计时,RES指令用于复位定时器的累计时间。 值得注意的是,定时器的时间周期单位为秒,可以根据具体需求进行设置。另外,三菱ST语言编程中还可以通过使用定时器的输入指令,如ETRD、EH、EL等,来监测外部信号的状态并触发定时器的计时行为。 总之,三菱ST语言编程中的定时器功能可以帮助我们实现一些需要按照设定的时间间隔执行的任务,提高自动化控制系统的效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值