﻿ROUTINE Optimerad_start
  ALIAS
    UteTemp = CHANNEL[1]; %Ute temp
    StartVarmare = CHANNEL[33]; %Optimerad start värme
    Aktivering = PARAMETER[30]; %Optimerad.styrn. aktivering
    DriftKalender = CALENDAR[1]; %Nattkalender
    TidsKurva = CURVE[1]; %Start opt.kurva
  VAR
    TidISekTillStart; % Beror på utetempen
  BEGIN
    TidISekTillStart := TidsKurva(UteTemp) * 3600;

    IF Aktivering > 0 THEN
      % Kör värmaren då kalendern säger det.
      IF DriftKalender THEN
        StartVarmare <- 1;

      % Kör värmaren då det är minder än den tid vi 
      % får ur kurvan tills kalendern går till.
      ELSIF (TidISekTillStart > TIMELEFT(DriftKalender)) THEN
        StartVarmare <- 1;
      
      % Stäng värmen.
      ELSE
        StartVarmare <- 0;
      ENDIF;

    % Då funktionen inte är aktiv stänger vi värmen.
    ELSE
      StartVarmare <- 0;
    ENDIF;  
END;