Page 1 of 2

Автоматическое повторное нажатие кнопки

PostPosted: 20 Oct 2018, 23:53
by Select
Всем добрый вечер,
Задача построить кнопку, которая бы симулировала аппаратную PUSH BUSH, т.е. в отжатом положении имеет Off, нажатие On.
Кнопка после первого ручного нажатия, спустя 70 - 100 ms должна еще раз нажаться, ее :labview: механическое свойство Latch When Relased.
Для чего мне это нужно:
у меня по входным портам CPU (доступа к hex нет) конфигурируется аппаратно свитчами на 1 из 8 вариантов открытия выходных портов, к примеру после нажатия по входу = 1, выходной порт переходит в непрерывный высокий уровень 1, или открывается на 1 с, или наоборот постоянно открытый высокий уровень переходит в низкий до следующего нажатия и т.д. Из за отсутствия возможности манипулирования этими свойствами на одном CPU, я вынужден брать 2, 3, и более CPU и настраивать их под нужные варианты управления, запитывать, строить обвязку от встречных напряжений на задействованные порты и прочий гимор.
Имея программную :labview: кнопку PUSH BUSH, с настройкой времени повторного автоматического нажатия, я бы смог как минимум посадить на 1 CPU одновременно 2 варианта управления, при этом с конфигурацией под 1 вариант.
Здесь на форуме я рассматривал вариант автоматического отключения кнопки спустя заданное время, но мой алгоритм иного назначения, поэтому не стал все валить в одну кучу.
Набросок какой то диаграммы, если мало что понятно из в.с. загружу.

Re: Автоматическое повторное нажатие кнопки

PostPosted: 21 Oct 2018, 20:15
by Kosist
Диаграмму в студию, т.к. лично для меня объяснение было довольно путанное, и не вполне понятное...
Но вопрос следующий - а обязательно это делать именно кнопкой? Почему бы не организовать логику управления в стейт-машине, и там уже отслеживать состояние управляющих сигналов, и по таймеру их повторно отжимать/нажимать? Ведь все сигналы можно представить как массив булеанов - вот и изменяйте их значения на True/False, и отсылайте куда нужно с нужным интервалом.
Т.е. жмете кнопку на интерфейсе -> отлавливаете это событие -> переходите в нужный стейт стейт машины -> отслеживаете таймер -> делаете что нужно + можете также "клацать" кнопкой программно, чтобы юзеру было видно, что происходит.

Re: Автоматическое повторное нажатие кнопки

PostPosted: 22 Oct 2018, 00:07
by Select
Диаграмма и vi.
При нажатии на кнопку, открывается 1, нужно чтоб она после первого открытия 1и перехода в 0, еще раз открылась 1 спустя 100 ms и вернулась в 0.
организовать логику управления в стейт-машине, и там уже отслеживать состояние управляющих сигналов, и по таймеру их повторно отжимать/нажимать? Ведь все сигналы можно представить как массив булеанов - вот и изменяйте их значения на True/False, и отсылайте куда нужно с нужным интервалом.

Может я не правильно понял, Вы пердлагаете посредством Visa мониторить объект лист, производить сбор состояния портов CPU и т.д.?
Это в данной ситуации мне представляется громоздко и вовлекает в дополнительные аппаратные вложения.

Re: Автоматическое повторное нажатие кнопки

PostPosted: 22 Oct 2018, 05:50
by Vitekkz88
Select, когда Вы используете механическое свойство кнопки Lath - то нет возможности использовать её свойства val, val(sgl) из property node. Стройте подобное поведение используя механическое свойство кнопки Switch. Либо делайте последовательность из frame-structure:
1. То, что вы пердставили
2. Задержка 100 мс
3. Логика из шага 1 + индикатор для визуализации, что кнопка была нажата.
:dntknw:

Re: Автоматическое повторное нажатие кнопки

PostPosted: 22 Oct 2018, 16:11
by taras_33
Если не принципиально нажимать именно кнопку, то можно использовать FGV например так
Но мне кажется что то тут не так, странный какой то подход...
Double Press Button.png

Re: Автоматическое повторное нажатие кнопки

PostPosted: 22 Oct 2018, 23:51
by Select
taras_33,
Самое то, :super: Большое спасибо за содействие.
Что именно Вас смущает?

Re: Автоматическое повторное нажатие кнопки

PostPosted: 23 Oct 2018, 04:54
by Vitekkz88
FGV - Functional Global Variable(функциональная глобальная переменная), это если кто не разобрался :brows:

Re: Автоматическое повторное нажатие кнопки

PostPosted: 23 Oct 2018, 20:40
by Select
Vitekkz88, FGV с белого листа не потяну, хорошо бы пример посмотреть с кнопками и ледами. taras_33,
Действительно, такой код выполняет те действия о которых я говорил, но попытка прикрутить его к моей ситуации зашла в тупик. У меня Select задает условия в виде констант и отправляет их на выборку из массива. Буду курить этот метод дальше.

Re: Автоматическое повторное нажатие кнопки

PostPosted: 09 Nov 2018, 00:29
by Select
Задача все еще актуальна, попробую представить ее в другом ракурсе.
Нужно каким то образом выполнить автоматический повтор (запуск) сигнала из моего примера в начале темы (повтор предыдущей процедуры). Кнопка дважды с интервалом в 100 ms запускает команду на выборку из массива. :help:

Re: Автоматическое повторное нажатие кнопки

PostPosted: 09 Nov 2018, 05:42
by taras_33
Нужно каким то образом выполнить автоматический повтор (запуск) сигнала из моего примера в начале темы (повтор предыдущей процедуры). Кнопка дважды с интервалом в 100 ms запускает команду на выборку из массива

Старею видимо, непонятливый стал....
Первый пост - механическое свойство кнопки:
механическое свойство Latch When Relased.
В представленном примере, если это можно назвать примером, механическое свойство Latch when pressed...


сигнала из моего примера в начале темы (повтор предыдущей процедуры).
Что в представленном Вами примере, Вы называете процедурой?


команду на выборку из массива
Покажите как выглядит эта команда.

Re: Автоматическое повторное нажатие кнопки

PostPosted: 09 Nov 2018, 12:34
by Select
taras_33,
Для большей ясности, это сейчас работает правильно, но код прожорливый.

Re: Автоматическое повторное нажатие кнопки

PostPosted: 09 Nov 2018, 15:16
by Artem.spb
Select wrote:taras_33,
Для большей ясности, это сейчас работает правильно, но код прожорливый.

код не прожорливый, а бессмысленный.
Использовать циклы, чтобы не использовать секвенсы? Или ради чего такие извращения?
1.png
1.png (13.33 KiB) Viewed 1269 times

Re: Автоматическое повторное нажатие кнопки

PostPosted: 09 Nov 2018, 15:28
by taras_33
Для большей ясности, это сейчас работает правильно

Да Вы батенька мазохист! :haha: Ну да ладно, обсуждать Ваш код смысла не вижу.
Два вопроса. Какое механическое свойство кнопки? Должно быть два выхода?

Re: Автоматическое повторное нажатие кнопки

PostPosted: 09 Nov 2018, 19:03
by Select
taras_33,
Механическое свойство кнопки Latch When, выход один, после нажатия кнопки выполняется итерация в 1-м цикле и повторяется с задержкой во втором. Таким образом я дважды транслирую один и тот же сигнал в одно нажатие кнопки.
Немного подправил диаграмму, так же прилагаю vi.
Каким образом эту процедуру оптимизировать не исключая представленные элементы в 1 цикле?

Re: Автоматическое повторное нажатие кнопки

PostPosted: 09 Nov 2018, 19:58
by taras_33
выход один

Как же один? Я вижу два. И еще меня любопытство раздирает, какую полезную нагрузку в Вашем коде играют Add функции? Какой смысл добавлять к чему бы то ни было ноль?