威纶通触摸屏宏指令怎么定义数组(威纶通触摸屏宏指令)

威纶宏指令分类还是挺多的,初始使用与学习时,

还是每个指令都实践一遍比较好,

在编写程序时,可以很快的调用。

这小节是统计分类下的全部函数。

如图,划线的为已经介绍的,下小节会介绍资料取样函数。

威纶通触摸屏宏指令怎么定义数组(威纶通触摸屏宏指令)(1)

统计分类下共有7个函数,

分别为AVERAGE,HARMEAN,MAX, MIN ,MEDIAN,STDEVP,STDEVS。

可以对一系列的数据提取最大值,平均值,最小值等。

下面是每个函数的使用介绍。

在使用这些函数前,我们可以在界面 上准备一个数值显示元件,

用于显示计算结果。元件设置如下图。

读取地址设置为LW0,在格式标签下,

设置显示格式为32位浮点类型,

整数部分显示8位,小数部分显示3位。

威纶通触摸屏宏指令怎么定义数组(威纶通触摸屏宏指令)(2)

1.AVERAGE。

此函数用于计算数组元素的平均值。

例如

float result

int data[5] = {1, 2, 3, 4, 5}

AVERAGE(data[0], result, 5)

函数计算数组内从0开始的5个元素的平均值。

计算结果为(1 2 3 4 5)/5=3。

这里的0表示元素的下标,从0开始计数,5表示参与计算的元素个数,

结果保存到变量result里由于计算结果可能带小数点,

所以这里定义了浮点开变量。

我们也可以使用下面的代码,查看函数执行的结果。

macro_command main()

float result

int data[5] = {1, 2, 3, 4, 5}

//计算数组内从0开始的5个元素的平均值。

//结果为(1 2 3 4 5)/5=3

AVERAGE(data[0], result, 5)

//计算数组内从2开始的3个元素的平均值。

//结果为(3 4 5)/3=4

AVERAGE(data[2], result, 3)

SetData(result, "Local HMI", LW, 0, 1)

end macro_command

2. HARMEAN

函数用于计算数组的调和平均数。

函数的计算公式为n/((1/x1) (1/x2) ... (1/xn))

例如

float result

int data[5] = {1, 2, 3, 4, 5}

HARMEAN(data[0], result, 5)

函数计算从元素0开始5个元素的调和平均数。

计算过程为 5/( (1/1 1/2 1/3 1/4 1/5) )=2.190

可以编写下面代码,在宏编程器里查看结果。

macro_command main()

float result

int data[5] = {1, 2, 3, 4, 5}

//计算从元素0开始5个元素的调和平均数。

//公式为n/((1/x1) (1/x2) ... (1/xn))

//5/( (1/1 1/2 1/3 1/4 1/5) )=2.190

HARMEAN(data[0], result, 5)

SetData(result, "Local HMI", LW, 0, 1)

end macro_command

3. MAX, MIN.

这两个函数用于获取数组内元素的最大和最小值。

例如数组int data[5] = {1, 2, 3, 4, 5}

我们肉眼就可以看出最大值为5,最小值为1.

但如果数组无数比较多,用函数来获取会方便很多。

我们也可以在编程软件里测试下面代码,看下函数执行结果。

macro_command main()

float result

int data[5] = {1, 2, 3, 4, 5}

//数组的最大值为5

//MAX(data[0],result,5)

//数组的最小值为1

MIN(data[0],result,5)

SetData(result, "Local HMI", LW, 0, 1)

end macro_command

4. MEDIAN.

函数用于求数组指定元素的中间值。即把数据从小到大排序后提取中间的数值。

分两种情况,一是元素个数为奇数个,一是元素个数为偶数个。

奇数个时,排序后直接取中间数。

偶数时,排序后求中间两个数的平均数。

例如

float result

int data[6] = {1, 2, 3, 4, 5,6}

MEDIAN(data[0], result, 6)

计数从数组0开始的6个数据的中间值,Result计算结果为(3 4)/2=3.5。

int data[5] = {1, 2, 3, 4, 5}

MEDIAN(data[0], result, 5)

计数从数组0开始的5个数据的中间值,Result计算结果取中间值为3。

可以在编程软件,测试下面的代码,查看执行结果。

macro_command main()

float result

int data[6] = {1, 2, 3, 4, 5,6}

MEDIAN(data[0], result, 6)

SetData(result, "Local HMI", LW, 0, 1)

end macro_command

5. STDEVP。

函数用于计算指定数组元素标准差。

每个元素减去其平均值的平方和,所得结果除以元素个数(或个数减一),再把所得值开根号,

最终所得结果就为这些元素的标准差。

公式为 s=[(x1-x)^2 (x2-x)^2 ......(xn-x)^2]/(n)(x为事先求得的平均数,n为元素个数,x1…xn为每个元素)

标准差=s开根号。

计算过程挺复杂,我们只要知道标准差是反映一组数据离散程度的一种量化方法就好。

我们也可以运行下面的代码来验证上面的公式。

macro_command main()

float result

int data[6] = {1, 2, 3, 4, 5,5}

STDEVP(data[0], result, 5)

SetData(result, "Local HMI", LW, 0, 1)

end macro_command

6. STDEVS。

函数用于计算指定数组元素样本标准差。

此函数的计算公式与前面 的STDEVP相似,仅少一个自由维度,就是平均数减1。

公式为 s=[(x1-x)^2 (x2-x)^2 ......(xn-x)^2]/(n-1)(x为事先求得的平均数,n为元素个数,x1…xn为每个元素)

样本标准差=s开根号。

也可以在编程软件里调用此函数,来验证公式。

macro_command main()

float result

int data[5] = {1, 2, 3, 4, 5}

STDEVS(data[0], result, 5)

SetData(result, "Local HMI", LW, 0, 1)

end macro_command

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页