VAR
Start: BOOL;
U_in_1_conv: REAL; (*напряжение канал_1*)
U_in_2_conv: REAL; (*напряжение канал_2*)
Timer_letom: TON; (*таймер запуска ДГУ летом через 5 минут после вентиляции*)
Timer_TP23: TP;
Obog: BOOL;
Indikator0: BOOL;
Indikator1: BOOL;
Indikator2: BOOL;
Timer_viklDGU: TOF;
Timer_Webasto: TON;
Timer_raboti_Webasto: TP;
Timer_zad_vkl_DGU: TOF;
F_TRIG1: F_TRIG;
Timer_DGU: TP;
END_VAR
VAR RETAIN
END_VAR
VAR CONSTANT RETAIN
T_porog_1: REAL := 40; (*порог температуры летом 40 градусов*)
T_porog_2: REAL := +5; (*порог температуры_+5*)
T_porog_3: REAL := -5; (*порог температуры_-5*)
T_porog_4: REAL := -20; (*порог температуры_-20*)
T_porog_5: REAL := -30; (*порог температуры_-30*)
U_porog_AKB: REAL := 50; (*порог разряда АКБ*)
U_porog_AKB_zrd: REAL := 55.9; (*порог заряда АКБ*)
U_porog_AKB_start: REAL := 12 ; (*порог напряжения АКБ стартового*)
END_VAR
PLC_PRG
U_in_1_conv := DWORD_TO_REAL(U_in_11)*4.768372E-006; (*напряжение канал_1*)
U_in_2_conv := DWORD_TO_REAL(U_in_2)*4.768372E-006; (*напряжение канал_2*)
IF U_in_1_conv <= U_porog_AKB THEN
Start := 1; (*старт программы*)
END_IF
Timer_letom(IN:=U_out_2 , PT:=T#5m , Q=> , ET=> ); (*таймер на вкл.дгу после вентиляции*)
Timer_TP23(IN:=Obog , PT:=T#45m , Q=> , ET=> ); (*таймер работы подогрева картера*)
Timer_Webasto(IN:=U_out_3 , PT:=T#15s , Q=> , ET=> ); (*таймер задержки включения обогрева webasto*)
Timer_raboti_Webasto(IN:=Timer_Webasto.Q , PT:=T#43m45s , Q=> , ET=> ); (*таймер работы обогрева*)
Timer_zad_vkl_DGU(IN:=U_out_3 , PT:=T#10s , Q=> , ET=> ); (*таймер задержки вкл.ДГУ после обогрева через 10 сек*)
F_TRIG1(CLK:=Timer_zad_vkl_DGU.Q , Q=> ); (*триггер активации таймера работы дгу*)
Timer_DGU(IN:=F_TRIG1.Q , PT:=T#120m , Q=> , ET=> ); (*таймер работы ДГУ*)
(*Если старт программы и температура от 5 до 40 то запустить ДГУ*)
IF Start = 1 AND Temp_1 >= T_porog_2 AND Temp_1 <= T_porog_1 THEN (*режим_0*)
Indikator0 := 1;
U_out_1 := 1;
U_out_3 := 0;
U_out_4 := 0;
Obog := 0;
(*если старт программы и температура больше 40 то включить вентиляцию и ДГУ*)
ELSIF Start = 1 AND Temp_1 >= T_porog_1 THEN (*режим_1*)
Indikator1 := 1;
U_out_2 := 1;
U_out_1 := Timer_letom.Q;
(*Если старт программы и температура от -5 до +5 то включить подогрев картера, обогрев и ДГУ*)
ELSIF Start = 1 AND Temp_1 > T_porog_3 AND Temp_1 < T_porog_2 THEN (*режим_2*)
Indikator2 := 1;
Obog := 1;
U_out_3 := Timer_TP23.Q;
U_out_4 := Timer_raboti_Webasto.Q;
U_out_1 := Timer_DGU.Q;
ELSE
Obog := 0;
Indikator0 := 0;
Indikator1 := 0;
Indikator2 := 0;
U_out_1 := 0;
U_out_2 := 0;
U_out_3 := 0;
U_out_4 := 0;
END_IF
(*если АКБ зарядился то выключить все*)
IF U_in_1_conv >= U_porog_AKB_zrd(* OR F = 0*) THEN
Start := 0;
(* U_out_2 := 0; Rele_2 := 0;
U_out_1 := 0; Rele_1 := 0;
U_out_3 := 0;*)
END_IF