施耐德UNITY的ST编程求最近一分钟算数平均值
前面学习联系了西门子TIA的SCL编程求均值,今晚学习练习施耐德UNITY下ST编程求测点最近一分钟的算数平均值。这一篇学习笔记在新浪博客发过,这里再次记录一下。
新建一个M580项目,新建一个导出的功能块类型Average_Minute,建立以下变量:
尽量减少输入输出变量。
建立其下ST程序段Average_Minute
Second1:=BCD_TO_INT(%SW50);
Second:=div(second1,100);
R_TRIG_0 (CLK :=%s6,
Q => Trig);
IF Trig then
Minute[Second]:=PV;
SUM:=0.0;
for i:=0 to 59 do
sum:=sum+minute[i];
end_for;
Average_Minute:=sum/60.0;
end_if;
前面两句是读取PLC系统时钟秒。
第三句是获取每秒%S6的上升沿。后面是每秒给一个数组成员赋值,然后计算这个数组所有成员的算数平均值。数组成员60个,对应最近60秒的测量值。
完成后可以在主程序调用。
编译下载,就可以看到效果了。由于没有实际的测点,这里使用了常数做测试。