Страница 1 из 2
Автоматическое повторное нажатие кнопки
Добавлено: 20 окт 2018, 23:53
Select
Всем добрый вечер,
Задача построить кнопку, которая бы симулировала аппаратную PUSH BUSH, т.е. в отжатом положении имеет Off, нажатие On.
Кнопка после первого ручного нажатия, спустя 70 - 100 ms должна еще раз нажаться, ее
механическое свойство Latch When Relased.
Для чего мне это нужно:
у меня по входным портам CPU (доступа к hex нет) конфигурируется аппаратно свитчами на 1 из 8 вариантов открытия выходных портов, к примеру после нажатия по входу = 1, выходной порт переходит в непрерывный высокий уровень 1, или открывается на 1 с, или наоборот постоянно открытый высокий уровень переходит в низкий до следующего нажатия и т.д. Из за отсутствия возможности манипулирования этими свойствами на одном CPU, я вынужден брать 2, 3, и более CPU и настраивать их под нужные варианты управления, запитывать, строить обвязку от встречных напряжений на задействованные порты и прочий гимор.
Имея программную
кнопку PUSH BUSH, с настройкой времени повторного автоматического нажатия, я бы смог как минимум посадить на 1 CPU одновременно 2 варианта управления, при этом с конфигурацией под 1 вариант.
Здесь на форуме я рассматривал вариант
автоматического отключения кнопки спустя заданное время, но мой алгоритм иного назначения, поэтому не стал все валить в одну кучу.
Набросок какой то диаграммы, если мало что понятно из в.с. загружу.
Re: Автоматическое повторное нажатие кнопки
Добавлено: 21 окт 2018, 20:15
Kosist
Диаграмму в студию, т.к. лично для меня объяснение было довольно путанное, и не вполне понятное...
Но вопрос следующий - а обязательно это делать именно кнопкой? Почему бы не организовать логику управления в стейт-машине, и там уже отслеживать состояние управляющих сигналов, и по таймеру их повторно отжимать/нажимать? Ведь все сигналы можно представить как массив булеанов - вот и изменяйте их значения на True/False, и отсылайте куда нужно с нужным интервалом.
Т.е. жмете кнопку на интерфейсе -> отлавливаете это событие -> переходите в нужный стейт стейт машины -> отслеживаете таймер -> делаете что нужно + можете также "клацать" кнопкой программно, чтобы юзеру было видно, что происходит.
Re: Автоматическое повторное нажатие кнопки
Добавлено: 22 окт 2018, 00:07
Select
Диаграмма и vi.
При нажатии на кнопку, открывается 1, нужно чтоб она после первого открытия 1и перехода в 0, еще раз открылась 1 спустя 100 ms и вернулась в 0.
организовать логику управления в стейт-машине, и там уже отслеживать состояние управляющих сигналов, и по таймеру их повторно отжимать/нажимать? Ведь все сигналы можно представить как массив булеанов - вот и изменяйте их значения на True/False, и отсылайте куда нужно с нужным интервалом.
Может я не правильно понял, Вы пердлагаете посредством Visa мониторить объект лист, производить сбор состояния портов CPU и т.д.?
Это в данной ситуации мне представляется громоздко и вовлекает в дополнительные аппаратные вложения.
Re: Автоматическое повторное нажатие кнопки
Добавлено: 22 окт 2018, 05:50
Vitekkz88
Select, когда Вы используете механическое свойство кнопки Lath - то нет возможности использовать её свойства val, val(sgl) из property node. Стройте подобное поведение используя механическое свойство кнопки Switch. Либо делайте последовательность из frame-structure:
1. То, что вы пердставили
2. Задержка 100 мс
3. Логика из шага 1 + индикатор для визуализации, что кнопка была нажата.
Re: Автоматическое повторное нажатие кнопки
Добавлено: 22 окт 2018, 16:11
taras_33
Если не принципиально нажимать именно кнопку, то можно использовать FGV например так
Но мне кажется что то тут не так, странный какой то подход...
Re: Автоматическое повторное нажатие кнопки
Добавлено: 22 окт 2018, 23:51
Select
taras_33,
Самое то,
Большое спасибо за содействие.
Что именно Вас смущает?
Re: Автоматическое повторное нажатие кнопки
Добавлено: 23 окт 2018, 04:54
Vitekkz88
FGV - Functional Global Variable(функциональная глобальная переменная), это если кто не разобрался
Re: Автоматическое повторное нажатие кнопки
Добавлено: 23 окт 2018, 20:40
Select
Vitekkz88, FGV с белого листа не потяну, хорошо бы пример посмотреть с кнопками и ледами. taras_33,
Действительно, такой код выполняет те действия о которых я говорил, но попытка прикрутить его к моей ситуации зашла в тупик. У меня Select задает условия в виде констант и отправляет их на выборку из массива. Буду курить этот метод дальше.
Re: Автоматическое повторное нажатие кнопки
Добавлено: 09 ноя 2018, 00:29
Select
Задача все еще актуальна, попробую представить ее в другом ракурсе.
Нужно каким то образом выполнить автоматический повтор (запуск) сигнала из моего примера в начале темы (повтор предыдущей процедуры). Кнопка дважды с интервалом в 100 ms запускает команду на выборку из массива.
Re: Автоматическое повторное нажатие кнопки
Добавлено: 09 ноя 2018, 05:42
taras_33
Нужно каким то образом выполнить автоматический повтор (запуск) сигнала из моего примера в начале темы (повтор предыдущей процедуры). Кнопка дважды с интервалом в 100 ms запускает команду на выборку из массива
Старею видимо, непонятливый стал....
Первый пост - механическое свойство кнопки:
механическое свойство Latch When Relased.
В представленном примере, если это можно назвать примером, механическое свойство Latch when pressed...
сигнала из моего примера в начале темы (повтор предыдущей процедуры).
Что в представленном Вами примере, Вы называете процедурой?
команду на выборку из массива
Покажите как выглядит эта команда.
Re: Автоматическое повторное нажатие кнопки
Добавлено: 09 ноя 2018, 12:34
Select
taras_33,
Для большей ясности, это сейчас работает правильно, но код прожорливый.
Re: Автоматическое повторное нажатие кнопки
Добавлено: 09 ноя 2018, 15:16
Artem.spb
Select писал(а):taras_33,
Для большей ясности, это сейчас работает правильно, но код прожорливый.
код не прожорливый, а бессмысленный.
Использовать циклы, чтобы не использовать секвенсы? Или ради чего такие извращения?
- 1.png (13.33 КБ) 3794 просмотра
Re: Автоматическое повторное нажатие кнопки
Добавлено: 09 ноя 2018, 15:28
taras_33
Для большей ясности, это сейчас работает правильно
Да Вы батенька мазохист!
Ну да ладно, обсуждать Ваш код смысла не вижу.
Два вопроса. Какое механическое свойство кнопки? Должно быть два выхода?
Re: Автоматическое повторное нажатие кнопки
Добавлено: 09 ноя 2018, 19:03
Select
taras_33,
Механическое свойство кнопки Latch When, выход один, после нажатия кнопки выполняется итерация в 1-м цикле и повторяется с задержкой во втором. Таким образом я дважды транслирую один и тот же сигнал в одно нажатие кнопки.
Немного подправил диаграмму, так же прилагаю vi.
Каким образом эту процедуру оптимизировать не исключая представленные элементы в 1 цикле?
Re: Автоматическое повторное нажатие кнопки
Добавлено: 09 ноя 2018, 19:58
taras_33
выход один
Как же один? Я вижу два. И еще меня любопытство раздирает, какую полезную нагрузку в Вашем коде играют Add функции? Какой смысл добавлять к чему бы то ни было ноль?