ABBAC900F学习笔记332:自定义功能块求日均值

标签:
abbfreelancest编程计算日均值 |
分类: ABBDCS |
这一篇学习笔记我在博客园发表过,这里再记录一次。
最近现场需要在ABB
DCS上做日均值计算,从前一天上午8点到第二天上午7点59分59秒,一秒一个数据,最后求日均值。
freelance自定义功能块对数组总的元素个数有一个限制,无论是组态模拟控制器,还是组态实际控制器,我在做练习的时候遇见过,于是就减少总的数组元素数量。
基本思路是这样子:
1.
使用hour_Pv[0..59,0..59]来记录当前一个小时每一秒的检测值;整点时,把这个数组中所有成员数据清零。
2.使用hour_sum[0..23]来存放24个小时的每一个小时的累计值,每天8点整将这个数组成员全部清零。
3.使用hour_count[0..23]来存放24个小时的每一个小时不为0的数据的数量,为0的数据不参与均值计算,每天8点整将这个数组成员全部清零。
4.
计算hour_sum成员之和除以hour_count成员之和。
在前面项目基础上,新建一个用户自定义类
整个ST程序如下:
FUNCTION_BLOCK AVG_Day_ST
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
(*
PARA_VIS
END_VAR
*)
var
end_var;
if Hour=8 and Minute=0 and Second=0
then
end_if;
if Minute=0 and Second=0 then
end_if;
hour_Pv[Minute,Second]:=PV;
hour_sum[Hour]:=0.0;
hour_count[Hour]:=0.0;
for i:=0 to 59 do
end_for;
sum:=0.0;
count:=0.0;
for i:=0 to 23 do
end_for;
if count<>0.0 then
end_if;
END_FUNCTION_BLOCK
我没有具体测试,应该是没有问题的。