cbattles
Member
What's the best way to "zero" an array of values in SCL? See code below. I think I have what I need but I'm not sure how to "reset" or "zero" the array. Any ideas??
FUNCTION_BLOCK FB3
TITLE = 'MAX RECHARGE PRESSURE'
VAR_INPUT
COUNT_UP: BOOL;
MIDNIGHT_RESET: BOOL;
FLOWRATE: REAL;
END_VAR
VAR_OUTPUT
MAXFLOW: REAL;
MINFLOW: REAL;
AVERAGE: REAL;
END_VAR
VAR_TEMP
// Temporary Variables
END_VAR
VAR
COUNT: INT;
RANGE: INT;
FLOWTEMP: REAL;
TIME1: TIME_OF_DAY;
INDEX: INT;
SUM: REAL;
DATA: ARRAY[0..179] OF REAL;
END_VAR
BEGIN
IF COUNT_UP THEN
DATA[COUNT]:=FLOWRATE;
IF DATA[COUNT]<FLOWTEMP THEN
FLOWTEMP:=DATA[COUNT];
END_IF;
IF FLOWTEMP>MAXFLOW AND FLOWTEMP <> 10000 THEN
MAXFLOW:=FLOWTEMP;
END_IF;
COUNT:=COUNT+1;
END_IF;
IF COUNT>179 THEN
COUNT:=0;
END_IF;
IF COUNT=0 THEN
FLOWTEMP:=10000.0;
MINFLOW:=DATA[COUNT];
END_IF;
IF COUNT>=1 AND DATA[COUNT]<MINFLOW THEN
MINFLOW:=DATA[COUNT];
END_IF;
IF MIDNIGHT_RESET THEN
MAXFLOW:=0.0;
END_IF;
RANGE:=180;
SUM:=0.0;
FOR INDEX:=1 TO RANGE DO
SUM:=SUM+DATA[INDEX];
END_FOR;
AVERAGE:=SUM/RANGE;
END_FUNCTION_BLOCK
FUNCTION_BLOCK FB3
TITLE = 'MAX RECHARGE PRESSURE'
VAR_INPUT
COUNT_UP: BOOL;
MIDNIGHT_RESET: BOOL;
FLOWRATE: REAL;
END_VAR
VAR_OUTPUT
MAXFLOW: REAL;
MINFLOW: REAL;
AVERAGE: REAL;
END_VAR
VAR_TEMP
// Temporary Variables
END_VAR
VAR
COUNT: INT;
RANGE: INT;
FLOWTEMP: REAL;
TIME1: TIME_OF_DAY;
INDEX: INT;
SUM: REAL;
DATA: ARRAY[0..179] OF REAL;
END_VAR
BEGIN
IF COUNT_UP THEN
DATA[COUNT]:=FLOWRATE;
IF DATA[COUNT]<FLOWTEMP THEN
FLOWTEMP:=DATA[COUNT];
END_IF;
IF FLOWTEMP>MAXFLOW AND FLOWTEMP <> 10000 THEN
MAXFLOW:=FLOWTEMP;
END_IF;
COUNT:=COUNT+1;
END_IF;
IF COUNT>179 THEN
COUNT:=0;
END_IF;
IF COUNT=0 THEN
FLOWTEMP:=10000.0;
MINFLOW:=DATA[COUNT];
END_IF;
IF COUNT>=1 AND DATA[COUNT]<MINFLOW THEN
MINFLOW:=DATA[COUNT];
END_IF;
IF MIDNIGHT_RESET THEN
MAXFLOW:=0.0;
END_IF;
RANGE:=180;
SUM:=0.0;
FOR INDEX:=1 TO RANGE DO
SUM:=SUM+DATA[INDEX];
END_FOR;
AVERAGE:=SUM/RANGE;
END_FUNCTION_BLOCK