﻿%
% INSTRUKTION
% sätt upp en temperaturmätare på en av temperatur kanalerna och klicka i tim medelvärde. Spara. 
% Den nya hMEAN_kanalen är den du använder till hmedel nedan. 
% Skapa också en parameter för inställning av hur många timmars dämpning det ska vara samt 
% en kanal för den dämpade temperaturvärdet som du kopplar till dH respektive dampad_kanal nedan.
%
ROUTINE Dampad_Temp
  ALIAS
    hmedel = CHANNEL[45]; % Ersätt med lokalt kanalnummer
    dH = PARAMETER[1]; % 0-36 timmars dämpning. Ersätt med lokal parameternummer
    dampad_kanal = CHANNEL[47];
  VAR
    h1; h2; h3; h4; h5; h6; h7; h8; h9; h10; h11; h12;
    h13; h14; h15; h16; h17; h18; h19; h20; h21; h22; h23; h24;
    h25; h26; h27; h28; h29; h30; h31; h32; h33; h34; h35; h36;
    antal;
    dtemp;
    antal_v;
  BEGIN
    IF antal_v = 0 THEN dampad_kanal <- hmedel; 
    ELSIF (TIME_SEC = 0) AND ((TIME_MINUTE = 0) OR (TIME_MINUTE = 15) OR (TIME_MINUTE = 30) OR (TIME_MINUTE = 45)) THEN
      IF antal_v < dH THEN antal := antal_v + 1; 
        ELSIF dH > 36 THEN antal := 37; 
        ELSIF dH < 1 THEN antal := 0; 
        ELSE antal := dH + 1;
      ENDIF;
      
      IF antal < 1 THEN dtemp := hmedel; ELSE dtemp := hmedel / antal; ENDIF;
      IF antal > 36 THEN dtemp := dtemp + (h36 / antal); ENDIF;
      IF antal > 35 THEN dtemp := dtemp + (h35 / antal); ENDIF;
      IF antal > 34 THEN dtemp := dtemp + (h34 / antal); ENDIF;
      IF antal > 33 THEN dtemp := dtemp + (h33 / antal); ENDIF;
      IF antal > 32 THEN dtemp := dtemp + (h32 / antal); ENDIF;
      IF antal > 31 THEN dtemp := dtemp + (h31 / antal); ENDIF;
      IF antal > 30 THEN dtemp := dtemp + (h30 / antal); ENDIF;
      IF antal > 29 THEN dtemp := dtemp + (h29 / antal); ENDIF;
      IF antal > 28 THEN dtemp := dtemp + (h28 / antal); ENDIF;
      IF antal > 27 THEN dtemp := dtemp + (h27 / antal); ENDIF;
      IF antal > 26 THEN dtemp := dtemp + (h26 / antal); ENDIF;
      IF antal > 25 THEN dtemp := dtemp + (h25 / antal); ENDIF;
      IF antal > 24 THEN dtemp := dtemp + (h24 / antal); ENDIF;
      IF antal > 23 THEN dtemp := dtemp + (h23 / antal); ENDIF;
      IF antal > 22 THEN dtemp := dtemp + (h22 / antal); ENDIF;
      IF antal > 21 THEN dtemp := dtemp + (h21 / antal); ENDIF;
      IF antal > 20 THEN dtemp := dtemp + (h20 / antal); ENDIF;
      IF antal > 19 THEN dtemp := dtemp + (h19 / antal); ENDIF;
      IF antal > 18 THEN dtemp := dtemp + (h18 / antal); ENDIF;
      IF antal > 17 THEN dtemp := dtemp + (h17 / antal); ENDIF;
      IF antal > 16 THEN dtemp := dtemp + (h16 / antal); ENDIF;
      IF antal > 15 THEN dtemp := dtemp + (h15 / antal); ENDIF;
      IF antal > 14 THEN dtemp := dtemp + (h14 / antal); ENDIF;
      IF antal > 13 THEN dtemp := dtemp + (h13 / antal); ENDIF;
      IF antal > 12 THEN dtemp := dtemp + (h12 / antal); ENDIF;
      IF antal > 11 THEN dtemp := dtemp + (h11 / antal); ENDIF;
      IF antal > 10 THEN dtemp := dtemp + (h10 / antal); ENDIF;
      IF antal > 9 THEN dtemp := dtemp + (h9 / antal); ENDIF;
      IF antal > 8 THEN dtemp := dtemp + (h8 / antal); ENDIF;
      IF antal > 7 THEN dtemp := dtemp + (h7 / antal); ENDIF;
      IF antal > 6 THEN dtemp := dtemp + (h6 / antal); ENDIF;
      IF antal > 5 THEN dtemp := dtemp + (h5 / antal); ENDIF;
      IF antal > 4 THEN dtemp := dtemp + (h4 / antal); ENDIF;
      IF antal > 3 THEN dtemp := dtemp + (h3 / antal); ENDIF;
      IF antal > 2 THEN dtemp := dtemp + (h2 / antal); ENDIF;
      IF antal > 1 THEN dtemp := dtemp + (h1 / antal); ENDIF;
      dampad_kanal <- dtemp;
    ENDIF;
    IF (TIME_SEC = 59) AND (TIME_MINUTE = 59) THEN  
      h36:=h35;
      h35:=h34;
      h34:=h33;
      h33:=h32;
      h32:=h31;
      h31:=h30;
      h30:=h29;
      h29:=h28;
      h28:=h27;
      h27:=h26;
      h26:=h25;
      h25:=h24;
      h24:=h23;
      h23:=h22;
      h22:=h21;
      h21:=h20;
      h20:=h19;
      h19:=h18;
      h18:=h17;
      h17:=h16;
      h16:=h15;
      h15:=h14;
      h14:=h13;
      h13:=h12;
      h12:=h11;
      h11:=h10;
      h10:=h9;
      h9:=h8;
      h8:=h7;
      h7:=h6;
      h6:=h5;
      h5:=h4;
      h4:=h3;
      h3:=h2;
      h2:=h1;
      h1:=hmedel;
      IF antal_v < 37 THEN antal_v := antal_v + 1; ENDIF;
    ENDIF;
END;
