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

Простейшие вопросы в области инженерной разработки
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение 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 вариант.
Здесь на форуме я рассматривал вариант автоматического отключения кнопки спустя заданное время, но мой алгоритм иного назначения, поэтому не стал все валить в одну кучу.
Набросок какой то диаграммы, если мало что понятно из в.с. загружу.
LabView 14,18
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

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

Сообщение Kosist »

Диаграмму в студию, т.к. лично для меня объяснение было довольно путанное, и не вполне понятное...
Но вопрос следующий - а обязательно это делать именно кнопкой? Почему бы не организовать логику управления в стейт-машине, и там уже отслеживать состояние управляющих сигналов, и по таймеру их повторно отжимать/нажимать? Ведь все сигналы можно представить как массив булеанов - вот и изменяйте их значения на True/False, и отсылайте куда нужно с нужным интервалом.
Т.е. жмете кнопку на интерфейсе -> отлавливаете это событие -> переходите в нужный стейт стейт машины -> отслеживаете таймер -> делаете что нужно + можете также "клацать" кнопкой программно, чтобы юзеру было видно, что происходит.
Мы делили апельсин - много наших полегло...
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

Диаграмма и vi.
При нажатии на кнопку, открывается 1, нужно чтоб она после первого открытия 1и перехода в 0, еще раз открылась 1 спустя 100 ms и вернулась в 0.
организовать логику управления в стейт-машине, и там уже отслеживать состояние управляющих сигналов, и по таймеру их повторно отжимать/нажимать? Ведь все сигналы можно представить как массив булеанов - вот и изменяйте их значения на True/False, и отсылайте куда нужно с нужным интервалом.
Может я не правильно понял, Вы пердлагаете посредством Visa мониторить объект лист, производить сбор состояния портов CPU и т.д.?
Это в данной ситуации мне представляется громоздко и вовлекает в дополнительные аппаратные вложения.
Вложения
Push Bush.png
Push Bush.png (4.24 КБ) 3837 просмотров
Push push.vi
(8.31 КБ) 100 скачиваний
LabView 14,18
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

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

Сообщение Vitekkz88 »

Select, когда Вы используете механическое свойство кнопки Lath - то нет возможности использовать её свойства val, val(sgl) из property node. Стройте подобное поведение используя механическое свойство кнопки Switch. Либо делайте последовательность из frame-structure:
1. То, что вы пердставили
2. Задержка 100 мс
3. Логика из шага 1 + индикатор для визуализации, что кнопка была нажата.
:dntknw:
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

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

Сообщение taras_33 »

Если не принципиально нажимать именно кнопку, то можно использовать FGV например так
Но мне кажется что то тут не так, странный какой то подход...
Double Press Button.png
Вложения
Double Press Btn.vi
(9.61 КБ) 83 скачивания
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

taras_33,
Самое то, :super: Большое спасибо за содействие.
Что именно Вас смущает?
LabView 14,18
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

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

Сообщение Vitekkz88 »

FGV - Functional Global Variable(функциональная глобальная переменная), это если кто не разобрался :brows:
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

Vitekkz88, FGV с белого листа не потяну, хорошо бы пример посмотреть с кнопками и ледами. taras_33,
Действительно, такой код выполняет те действия о которых я говорил, но попытка прикрутить его к моей ситуации зашла в тупик. У меня Select задает условия в виде констант и отправляет их на выборку из массива. Буду курить этот метод дальше.
LabView 14,18
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

Задача все еще актуальна, попробую представить ее в другом ракурсе.
Нужно каким то образом выполнить автоматический повтор (запуск) сигнала из моего примера в начале темы (повтор предыдущей процедуры). Кнопка дважды с интервалом в 100 ms запускает команду на выборку из массива. :help:
LabView 14,18
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

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

Сообщение taras_33 »

Нужно каким то образом выполнить автоматический повтор (запуск) сигнала из моего примера в начале темы (повтор предыдущей процедуры). Кнопка дважды с интервалом в 100 ms запускает команду на выборку из массива
Старею видимо, непонятливый стал....
Первый пост - механическое свойство кнопки:
механическое свойство Latch When Relased.
В представленном примере, если это можно назвать примером, механическое свойство Latch when pressed...

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

команду на выборку из массива
Покажите как выглядит эта команда.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

taras_33,
Для большей ясности, это сейчас работает правильно, но код прожорливый.
Вложения
Push push.png
LabView 14,18
Artem.spb

Activity Автор
professor
professor
Сообщения: 3393
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

Сообщение Artem.spb »

Select писал(а):taras_33,
Для большей ясности, это сейчас работает правильно, но код прожорливый.
код не прожорливый, а бессмысленный.
Использовать циклы, чтобы не использовать секвенсы? Или ради чего такие извращения?
1.png
1.png (13.33 КБ) 3538 просмотров
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

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

Сообщение taras_33 »

Для большей ясности, это сейчас работает правильно
Да Вы батенька мазохист! :haha: Ну да ладно, обсуждать Ваш код смысла не вижу.
Два вопроса. Какое механическое свойство кнопки? Должно быть два выхода?
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

taras_33,
Механическое свойство кнопки Latch When, выход один, после нажатия кнопки выполняется итерация в 1-м цикле и повторяется с задержкой во втором. Таким образом я дважды транслирую один и тот же сигнал в одно нажатие кнопки.
Немного подправил диаграмму, так же прилагаю vi.
Каким образом эту процедуру оптимизировать не исключая представленные элементы в 1 цикле?
Вложения
Push push.png
Push push.vi
(11.06 КБ) 80 скачиваний
LabView 14,18
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

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

Сообщение taras_33 »

выход один
Как же один? Я вижу два. И еще меня любопытство раздирает, какую полезную нагрузку в Вашем коде играют Add функции? Какой смысл добавлять к чему бы то ни было ноль?
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Ответить

Вернуться в «Для чайников»