PDA

Просмотр полной версии : «Гирлянда» на ПР200



Byter
25.06.2025, 05:51
Здравствуйте, являюсь студентом на практике, дали задание на ПР200 в программе owen logic сделать как бы «гирлянду».
То есть:
Имеется 4 кнопки ->
1 кнопка, при нажатии которой 4 лампочки должны поочередно загораться раз в 2 секунды.
2 кнопка, при нажатии которой эти же 4 лампочки уже по две через одну должны загораться раз в 2 секунды и сменять друг друга(1 и 3 на 2 и 4)
3 и 4 кнопки (самое сложное) при нажатии на 3 должно увеличиваться время горения лампочек на 1 секунду, а при нажатии на 4 уменьшаться на 1 секунду

P.S. С 2 первыми кнопками справился, а вот с остальными 2 не могу, помогите пожалуйста 🙏

1exan
25.06.2025, 06:18
Здравствуйте, являюсь студентом на практике, дали задание на ПР200 в программе owen logic сделать как бы «гирлянду».
То есть:
Имеется 4 кнопки ->
1 кнопка, при нажатии которой 4 лампочки должны поочередно загораться раз в 2 секунды.
2 кнопка, при нажатии которой эти же 4 лампочки уже по две через одну должны загораться раз в 2 секунды и сменять друг друга(1 и 3 на 2 и 4)
3 и 4 кнопки (самое сложное) при нажатии на 3 должно увеличиваться время горения лампочек на 1 секунду, а при нажатии на 4 уменьшаться на 1 секунду

P.S. С 2 первыми кнопками справился, а вот с остальными 2 не могу, помогите пожалуйста 

Приложите файл с проектом что уже наваяли

Byter
25.06.2025, 06:44
Вот файл, забыл сначала скинуть

EFrol
25.06.2025, 07:25
На ST устроит?

Byter
25.06.2025, 07:45
Было бы хорошо, если без ST, но так тоже пойдёт

1exan
25.06.2025, 08:04
Вот файл, забыл сначала скинуть

Если прям чтоб правильно было - надо было бы конечно по другому делать изначально.
Но для первого раза и так нормально, добавить изменение периода можно так:

Byter
25.06.2025, 08:39
Спасибо вам огромное, очень выручили!

Byter
25.06.2025, 08:45
Если не затрудняю, могли бы вы объяснить как это работает?

EFrol
25.06.2025, 08:46
Вот полный вариант:

1exan
25.06.2025, 09:31
Если не затрудняю, могли бы вы объяснить как это работает?

Что именно непонятно?

Dimensy
25.06.2025, 09:58
Для разнообразия, мой вариант

EFrol
25.06.2025, 10:04
Ну и для полноты картинки на ST:
84511



function_block garland

var_input
Mode1, Mode2, Up, Dn : bool; // Кнопки
end_var

var_output
Q1, Q2, Q3, Q4 : bool; // Лампы
end_var

var
State : udint; // Состояние
Mode : bool; // Режим
TMR : SYS.TON; // Таймер импульсов переключения
TL : udint := 1000; // Период между импульсами
Mode1Set, Mode2Set : SYS.RTRIG;
UpSet, DnSet : SYS.RTRIG;
end_var

// Фиксируем переключение режима
Mode1Set(I := Mode1); Mode2Set(I := Mode2);
if Mode1Set.Q then State := 0; Mode := false; TMR(I := false); Q1 := true; end_if
if Mode2Set.Q then State := 0; Mode := true; TMR(I := false); Q1 := true; Q3 := true; end_if

// Фиксируем увеличение/уменьшение периодв с ограничением
UpSet(I := Up); DnSet(I := Dn);
if UpSet.Q and TL < 100000 then TL := TL + 1000; end_if
if DnSet.Q and TL > 2000 then TL := TL - 1000; end_if

// Фиксируем смену состояния
TMR(I := true, T := udint_to_time(TL));
if TMR.Q then // Пришло время переключиться
TMR(I := false); // Перезапуск таймера
if Not Mode then
case State of
0: Q1 := true; Q2 := false; Q3 := false; Q4 := false; State := 1;
1: Q1 := false; Q2 := true; Q3 := false; Q4 := false; State := 2;
2: Q1 := false; Q2 := false; Q3 := true; Q4 := false; State := 3;
3: Q1 := false; Q2 := false; Q3 := false; Q4 := true; State := 0;
end_case
else
case State of
0: Q1 := true; Q2 := false; Q3 := true; Q4 := false; State := 1;
1: Q1 := false; Q2 := true; Q3 := false; Q4 := true; State := 0;
end_case
end_if
end_if

end_function_block

Сергей0308
26.06.2025, 12:34
Здравствуйте, являюсь студентом на практике, дали задание на ПР200 в программе owen logic сделать как бы «гирлянду».
То есть:
Имеется 4 кнопки ->
1 кнопка, при нажатии которой 4 лампочки должны поочередно загораться раз в 2 секунды.
2 кнопка, при нажатии которой эти же 4 лампочки уже по две через одну должны загораться раз в 2 секунды и сменять друг друга(1 и 3 на 2 и 4)
3 и 4 кнопки (самое сложное) при нажатии на 3 должно увеличиваться время горения лампочек на 1 секунду, а при нажатии на 4 уменьшаться на 1 секунду

P.S. С 2 первыми кнопками справился, а вот с остальными 2 не могу, помогите пожалуйста ��

Если надоедят эти мигания(в глазах зарябит), их можно как-то прекратить или это будет продолжаться бесконечно?
Или лампочки придётся выкручивать?