% gradminuter % Funktion: % När det uppstår en Differensen mellan Tempkanalen och Börvärde Temp startar en minuträknare. % Varje minut multipliceras antal minuter som gått med avvikelsen. % När differensen är 0 nollställs minuträknaren och börjar om vid nästa differens. % Dessa Gradminuter kopplas till Utgång Gradminut. % Utgång Drift Steg1 aktiveras när gradminut överstiger Börvärde Start Gradminut1 och avaktiveras när den understiger Börvärde Stopp Gradminut1. % Lika för Utgång Drift2 % start sker endast om Diff överstiger MinDiff (så att man inte startar på 0.01 grader typ) ROUTINE GRADMINUTER ALIAS Temp = CHANNEL[50]; % Gradminut = CHANNEL[51]; % DriftSteg1 = CHANNEL[52]; % DriftSteg2 = CHANNEL[53]; % BörvärdeTemp = PARAMETER[1]; % BörvärdeStart1 = PARAMETER[2]; % BörvärdeStopp1 = PARAMETER[3]; % BörvärdeStart2 = PARAMETER[4]; % BörvärdeStopp2 = PARAMETER[5]; % MinDiff = PARAMETER[6]; % Minsta gradskillnad som krävs för att starta steg VAR Diff; % Differensen mellan Temp och BörvärdeTemp MinutRäknare; % BEGIN % Hanterar Gradminut IF TIME_SEC = 0 THEN % körs varje hel minut Diff := Temp - BörvärdeTemp; IF (Diff < MinDiff) THEN Diff := 0; ENDIF; IF (Diff=0) THEN % Gradminut <- 0; % nollställer MinutRäknare := 0; ELSE MinutRäknare := MinutRäknare + 1; Gradminut <- (Diff * MinutRäknare); ENDIF; % styrning % Styrning steg 1 IF (Gradminut > BörvärdeStart1) THEN DriftSteg1 <- 1; ENDIF; IF (Gradminut < BörvärdeStopp1) THEN DriftSteg1 <- 0; ENDIF; % Styrning steg 2 IF (Gradminut > BörvärdeStart2) THEN DriftSteg2 <- 1; ENDIF; IF (Gradminut < BörvärdeStopp2) THEN DriftSteg2 <- 0; ENDIF; ENDIF; % körs varje hel minut END;