Будет ответная просьба. Изучите внимательно, пожалуйста.
На ST выглядит интересней:
Код:
function_block EL
var_input
SB1 : bool; // Кнопка
end_var
var_output
EL1, EL2, EL3, EL4 : bool; // Лампы
end_var
var
Mode : udint; // Текущий режим
elN : udint; // Номер лампы в режимах 8 и 9
rtMode : SYS.RTRIG; // Триггер нажатия на SB1
tmr : SYS.TON; // Таймер переключения ламп в режимах 8 и 9
end_var
rtMode(I := SB1); // Фиксируем нажатие на SB1
if rtMode.Q then // Переключаем режим от 0 до 9
Mode := Mode + 1; if Mode = 10 then Mode := 0; end_if
end_if
case Mode of // В зависимости от режима включаем лампы
0: EL1 := false; EL2 := false; EL3 := false; EL4 := false; elN := 0; tmr(I := false);
1: EL1 := true; EL2 := false; EL3 := false; EL4 := false;
2: EL1 := false; EL2 := true; EL3 := false; EL4 := false;
3: EL1 := false; EL2 := false; EL3 := true; EL4 := false;
4: EL1 := false; EL2 := false; EL3 := false; EL4 := true;
5: EL1 := true; EL2 := true; EL3 := false; EL4 := false;
6: EL1 := true; EL2 := true; EL3 := true; EL4 := false;
7: EL1 := true; EL2 := true; EL3 := true; EL4 := true;
8: if elN = 0 then elN := 1; end_if // Зажигаем EL1 при переходе в режим 8
end_case
if elN > 0 Then // Инициирован режим 8
tmr(I := true, T := T#3s); // Запускаем таймер на 3 сек
if tmr.Q then // По истечению переключаемся на следующую или завершаем цикл
elN := elN + 1;
if elN = 5 then
elN := 0;
if Mode = 9 then Mode := 0; end_if // Если режим 9 - сброс в начальное состояние
end_if
tmr(I := false); // Сброс таймера
end_if
case elN of // Включаем соответствующую лампу
1: EL1 := true; EL2 := false; EL3 := false; EL4 := false;
2: EL1 := false; EL2 := true; EL3 := false; EL4 := false;
3: EL1 := false; EL2 := false; EL3 := true; EL4 := false;
4: EL1 := false; EL2 := false; EL3 := false; EL4 := true;
end_case
end_if
end_function_block