Цитата:
PROGRAM PRG_3
VAR
Stop1 : TP:= ( PT := T#1s);
Start1 : TP:= ( PT := T#1s);
Stop2 : TP:= ( PT := T#1s);
Start2 : TP:= ( PT := T#1s);
Stop3 : TP:= ( PT := T#1s);
Start3 : TP:= ( PT := T#1s);
Stop4 : TP:= ( PT := T#1s);
Start4 : TP:= ( PT := T#1s);
fan: WORD;
Do1: BOOL;
Do2: BOOL;
Do3: BOOL;
Do4: BOOL;
setmech : ARRAY[1..4] OF BYTE := 2#0001, 2#0011, 2#0111, 2#1111;
mech : ARRAY[1..4] OF BOOL;
fan:=0;
FOR i :=1 TO 4 DO
fan:=SEL( mech[i], fan, fan OR setmech[i] );
END_FOR
END_VAR
(************************************************* ****)
Fan:= Mech1 OR Mech2 OR Mech3 OR Mech4;
Start1(IN:=Fan.0,Q=>Do1 );
Stop1(IN:=NOT Fan.0,Q=>Do1 );
но еще 4 ошибки пр компиляции наверно я еще не до конца понял что где дописать нужно
Цитата:
VAR_GLOBAL CONSTANT(* Для хранения аварий механизмов *)
Ok : WORD := 0;
xReidi : BYTE := 0; (* Номера битов флага аварий *)
xSped : BYTE := 1;
xPodpor : BYTE := 2;
xTok : BYTE := 3;
END_VAR
(************************************************* ***********)
FUNCTION_BLOCK CULER (*Функциональный блок для управления ВЕНТИЛЯТОРОМ*)
VAR_INPUT
auto : BOOL; (* Автоматический режим работы *)
man_start,
man_stop : BOOL; (* Экранные кнопки СТАРТ и СТОП *)
auto_start,
auto_stop : BOOL; (* Сигналы в режиме автомат СТАРТ и СТОП *)
sens_reidi : BOOL; (* Включение (обратная связь ?) *)
reset : BOOL; (* Сигнал сброса аварии *)
END_VAR
VAR_OUTPUT
out : BOOL; (* Выходы на пускатель *)
fAlarm : WORD; (* Флаг аварий *)
END_VAR
VAR
step : (stop, start, alarm); (* Состояние управляющего процесса *)
timer_reidi : TON; (* Контроль включения *)
RTRIG_auto_start: R_TRIG;
RTRIG_auto_stop: R_TRIG;
END_VAR
(************************************************* *******)
CASE step OF
stop:
timer_reidi(in:=FALSE);
fAlarm := Ok;
RTRIG_auto_start(CLK:=auto_start);
step := SEL( SEL( auto, RTRIG_auto_start.Q, man_start), step, start);
start:
timer_reidi(in:= NOT sens_reidi, pt:=T#2s, Q=> fAlarm.xReidi );
RTRIG_auto_stop(CLK:=auto_stop);
step := SEL(man_stop OR RTRIG_auto_stop.Q, step, stop);
step := SEL(fAlarm <> Ok, step, alarm);
alarm :
step := SEL(reset, step, stop);
END_CASE
out := step=start;