Просмотр полной версии : Помогите решить задачу с кнопками
Valadimir
08.08.2025, 20:52
Добрый день!
Codesys 3.5
Такая задача: 4 кнопки с фиксацией. При нажатии любой кнопки, "отжимается" кнопка нажатая ранее.
Подскажите, какие могут быть варианты решения.
Всем спасибо!
программные ? сами физические кнопки без фиксации. Если используется D-триггер, то у него есть вход сброса, соответственно через ИЛИ от "противоположных" кнопок его можно сбрасывать.
fixBTN : UDINT;
if btn1 and not btn2 and not btn3 and not btn4 then
fixBTN := 1;
end_if
if not btn1 and btn2 and not btn3 and not btn4 then
fixBTN := 2;
end_if
if not btn1 and not btn2 and btn3 and not btn4 then
fixBTN := 3;
end_if
if not btn1 and not btn2 and not btn3 and btn4 then
fixBTN := 4;
end_if
Valadimir
Можно и на LD
Среда не КДС, но это не важно, КДС тоже так может.
Xn - входа ПЛК, Yn - выхода, M - маркер (битовая переменная).
Показано три канала, четыре и более не вмещаются в скриншот.
M,M_,On,Out : DWORD; //если приперло - можно 32 кнопы запилить
------
M.0 := Di1; //каждая DiN связана с DoN
M.1 := Di2;
M.2 := Di3;
M.3 := Di4;
On := M AND NOT M_;
Out := SEL(On > 0, Out, On);
M_ := M;
Do1 := Out.0;
Do2 := Out.1;
Do3 := Out.2;
Do4 := Out.3;
Сергей0308
11.08.2025, 16:49
Добрый день!
Codesys 3.5
Такая задача: 4 кнопки с фиксацией. При нажатии любой кнопки, "отжимается" кнопка нажатая ранее.
Подскажите, какие могут быть варианты решения.
Всем спасибо!
Вот здесь посмотрите, короче, должно подойти и придумывать не надо, в смысле уже давно придумано и даже в два раза превышает ваши потребности(8 кнопок), с перспективой развития до 32:
https://owen.ru/forum/showthread.php?t=12691&p=361404&viewfull=1#post361404
Да и само ваше Т. З. поражает своей недосказанностью, если мягко выражаться, но всё гармонично, в смысле, сделать не можете, объяснить(толково) не можете!
85281
Хотел дополнить, что в последствии этот алгоритм неоднократно совершенствовал, но кажется в других темах, это один из первых вариантов.
И, макрос RAMP_BIT нужен только для случаев когда одновременно нажато более одной кнопки, он задаёт приоритет и разруливает одновременное нажатие более одной кнопки.
https://owen.ru/forum/showthread.php?t=12691&p=361508&viewfull=1#post361508
Eugene.A
11.08.2025, 18:00
85282
А так сгодится? Ну нет у меня дома кодесиса.
Прием заявлений на отборочный тур продолжается.
Сергей0308
11.08.2025, 19:10
Так, для начала товарищ пусть прояснит что он хочет, 4-х стабильный триггер, как Евгений нарисовал, или 4-е связанных Т-триггера, в смысле, при нажатии повторно на ту же кнопку, соответствующий выход выключается? Кстати, у меня имеются оба варианта, по второй(нижней) ссылке у меня варианты с 4-мя связанными Т-триггерами.
Valadimir
11.08.2025, 20:29
кнопки программные на дисплее, не физические
кнопку можно только нажать, отжать пальцем с дисплея нельзя, т.е. всегда какая-то кнопка нажата
kondor3000
11.08.2025, 20:35
кнопки программные на дисплее, не физические
кнопку можно только нажать, отжать пальцем с дисплея нельзя, т.е. всегда какая-то кнопка нажата
Кнопку на дисплее можно сделать как переключатель и как кнопку без фиксации,
выше выложены примеры для работы в двух вариантах.
Лучше бы написали на чём вы делаете проект.
Сергей0308
11.08.2025, 20:39
кнопки программные на дисплее, не физические
кнопку можно только нажать, отжать пальцем с дисплея нельзя, т.е. всегда какая-то кнопка нажата
Тогда первый вариант, как Евгений нарисовал, 4-х стабильный триггер, наконец нам повезло узнать чего Вы хотите, ура!
Как говорится, не прошло и года!
Может у кого есть задача поинтересней?! А то что-то мозги вянут.:rolleyes:
Valadimir
кнопки программные на дисплее, не физические
В настройках визуализации кнопки:
1. Нажатие - импульс (обычно 0,2 сек), заводится на битовую переменную (для примера, приведенного мною ранее, вместо Xn поставить Mn).
2. Отображение - статус выхода канала (Yn) . Канал выключен - картинка отжатой кнопки, канал включен - картинка нажатой кнопки.
Valadimir
19.08.2025, 20:14
Всем спасибо!
Разобрался
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot