Ну весь проект я выкладывать не буду, а сам алгоритм регулировки могу:
Код:
PROGRAM Regul (*регулировка управления климатической камерой (mashina)*)
VAR_INPUT
iy:INT;
END_VAR
VAR
delta_t:REAL;(*разность температур уставки*)
b_dhod: BOOL;(*бит о достижения диопазона температур уставки, нужен для перегрузки ПИД регулятора*)
END_VAR
delta_t:=mashina.ust_t-mashina.tek_t;
mashina.i_airing:=FALSE;
IF delta_t<10 AND delta_t>-10 THEN (*регулировка удержания*)
mashina.i_airing:=FALSE;
IF mashina.ust_t<=mashina.tek_t_sreda+9 AND mashina.ust_t>=mashina.tek_t_sreda+11 THEN
mashina.r_ten:=TRUE;
mashina.r_kompressor:=FALSE;
ELSIF mashina.ust_t>mashina.tek_t_sreda+10 THEN
mashina.r_ten:=TRUE;
mashina.r_kompressor:=FALSE;
ELSE
mashina.r_ten:=TRUE;
mashina.r_kompressor:=TRUE;
END_IF
IF b_dhod=FALSE THEN(*включаем бит достижения уставки, перегружаем тен*)
IF delta_t < 0 THEN
Mashina.r_ten:=FALSE;
END_IF
b_dhod:=TRUE;
END_IF
ELSE (*delta_t>=10 OR delta_t<=-10 THEN*)
mashina.kompressor_revers:=FALSE;
b_dhod:=FALSE;(*температура уставки не достигнута*)
IF mashina.tek_t>50 THEN
IF delta_t<0 THEN
mashina.i_airing:=TRUE;
mashina.r_ten:=FALSE;
ELSE
mashina.i_airing:=FALSE;
mashina.r_ten:=TRUE;
END_IF
mashina.r_kompressor:=FALSE;
ELSE
mashina.i_airing:=FALSE;
IF delta_t>0 THEN
mashina.r_ten:=TRUE;
mashina.r_kompressor:=FALSE;
ELSE
mashina.r_ten:=FALSE;
mashina.r_kompressor:=TRUE;
END_IF
END_IF
END_IF
эта не полная версия(чёто мне ёе не найти), но рабочая,
в этой есть небольшой баг(ну думаю сами найдёте)...
mashina - простинкая структура с температурами и режимами работы,
i_airing - это режим проветривания.
r_ten,r_kompressor - тэн и холодилка,
b_dhod используктся только для перегрузки пид регулятора тэна(когда тэн выключен он перегружается...