1.建立全局标签声明变量
2.程序的编写
如果数组数据是”FLOAT”型的,那两段转换就可以省去,我这里主要想演示的是转换指令的运用,因为前面没有对转换语句进行专门的讲解,这里就顺带的提一下。
3.程序监控首先还是先对
数组数据进行赋值,如下图所示:
然后将“Data_Bulk”数据写为6,按下M0执行程序。
接下来我们分别验证一下,程序执行的结果是否正确呢?
验证和值
验证平均值
通过验证,我们发现程序执行的结果是正确的;有兴趣的小伙伴儿,可以将程序拿去自己验证一下,然后将数组的数据数量适当的增加一些。接下来我们开始程序的解析:
根据控制器的扫描原理(从上往下,从左往右),当我们按下M0触发程序执行的时候,这两段程序从上往下依次执行(一个扫描周期,后面的程序也在这一个扫描周期内执行,只是谁先谁后的问题);我们先将和值清零,平均值清零;若没有这两段程序,当我们第二次触发M0时,会在上一次值的基础上进行累加。比如第一次和值为50,按下按钮再一次执行,和值为100(前提是数据没有改变,若改变,那就是这次的和值+上次的和值,均值同理)。
上图这几段程序的原理解析:
先将数组地址[0]的数据,
分别赋值给最大值和最小值。这样做是为了方便后面的比较,以
地址[0]为基准,跟后面的地址做比较(需要注意的是IF条件满足,那我们前面赋值的最大值和最小值会根据IF的满足,重新植入新的数据,就不在是地址[0]的数据了)。
如果IF成立,“Array_1[Cycle_1]”的值大于“Maximum_Value”,那就将“Array_1[Cycle_1]”的值送给“Maximum_Value”,然后再用“Maximum_Value”的值和后面的值做比较,比较出来的值就是最大值。
如果循环开始到结束,IF都不成立,那地址0的数据就是最大值。
下面的最小值也同理。
第一段程序,是对每个地址的值进行累加求和(Array_1[Cycle_1]的地址是根据循环进行偏移的)。第二段和第三段程序,是转换程序,主要是用于求平均值,平均值一般大多数情况下都是浮点数,所以需要进行转换。第四段是根据和值除以数据个数得出的平均值。今天就分享到这里,祝各位小伙伴儿工作顺利!