Трудности использования SubVi

Простейшие вопросы в области инженерной разработки
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Трудности использования SubVi

Сообщение Borjomy_1 »

У меня вопрос. Кто будет смотреть 200 параметров???
Аватара пользователя
Vitekkz88

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

Re: Трудности использования SubVi

Сообщение Vitekkz88 »

Borjomy_1, человек 40 инженеров придут и в один монитор будут разглядывать каждый своё. Я с таким сталкивался по работе. Правда параметров тогда было не 200, а 8.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
CCCP33
beginner
beginner
Сообщения: 48
Зарегистрирован: 06 май 2014, 10:30
Версия LabVIEW: 2011, 2015
Откуда: Vldr
Благодарил (а): 1 раз
Контактная информация:

Re: Трудности использования SubVi

Сообщение CCCP33 »

Так понимаю у меня тоже подобная проблема, как у автора.
В main.vi есть кластер typedef, данные из которого расходятся по всей программе в SubVI с различной глубиной иерархии. В этом кластере есть массивы, и иногда есть необходимость передать именно в той конфигурации, в которой я выставил в main.vi (т.е. передавать не только данные, как я делаю обычно, но и свойства). Не знаю как обеспечить простой, гибкий метод передачи всего этого в недры программы, при этом, чтобы не было проблем при отладке отдельных SubVI.
Передавать кластер из ссылок, вместо typedef кластера с данными? (т.е. надо создавать отдельный typedef с ссылками, при изменении основного кластера typedef его пересоздавать каждый раз?, + при отладке я хочу видеть и менять все данные в SubVI, а не ссылки на элементы из кластера).
Для наглядности приведу упрощенный пример, того, что у меня:
Trans properties.png
Trans properties.png (12.39 КБ) 229 просмотров
Т.е. при нажатии кнопки необходимо, чтобы SubVI нижнего уровня вытаскивал только текущие индексы массивов.
Как быть?
Artem.spb

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

Re: Трудности использования SubVi

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

CCCP33 писал(а): 15 мар 2024, 14:50 (т.е. передавать не только данные, как я делаю обычно, но и свойства).
Что такое свойство массива?
Т.е. при нажатии кнопки необходимо, чтобы SubVI нижнего уровня вытаскивал только текущие индексы массивов. Как быть?
Если вам нужно по кнопке в main что-то делать в sub, то саб должен работать параллельно и по кнопке в него должна лететь команда (очереди, нотификаторы, события для этого и придуманы).
В крайнем случае можно мониторить значение кнопки по ссылке но это плохая идея.
CCCP33
beginner
beginner
Сообщения: 48
Зарегистрирован: 06 май 2014, 10:30
Версия LabVIEW: 2011, 2015
Откуда: Vldr
Благодарил (а): 1 раз
Контактная информация:

Re: Трудности использования SubVi

Сообщение CCCP33 »

Artem.spb писал(а): 15 мар 2024, 17:00 Что такое свойство массива?
в данном случае выставленные в GUI индексы массива (Index values)
Artem.spb писал(а): 15 мар 2024, 17:00 Если вам нужно по кнопке в main что-то делать в sub, то саб должен работать параллельно и по кнопке в него должна лететь команда (очереди, нотификаторы, события для этого и придуманы).
В крайнем случае можно мониторить значение кнопки по ссылке но это плохая идея.
не, наверное вы неверно меня поняли. События у меня обрабатываются в main VI, и тут не про них. Вот на примере, который я обозначил, 2 массива - один внутри другого. В SubVI нижнего уровня из этого кластера берутся массивы и обрабатываются вложенными циклами. Однако мне необходимо обработать не все элементы этих массивов (N1xN2), а только выставленные индексами.
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Трудности использования SubVi

Сообщение AndreyDmitriev »

CCCP33 писал(а): 15 мар 2024, 14:50
Т.е. при нажатии кнопки необходимо, чтобы SubVI нижнего уровня вытаскивал только текущие индексы массивов.
Как быть?
Я б явно пробрасывал отдельными вспомогательными элементами в кластере

Изображение
CCCP33
beginner
beginner
Сообщения: 48
Зарегистрирован: 06 май 2014, 10:30
Версия LabVIEW: 2011, 2015
Откуда: Vldr
Благодарил (а): 1 раз
Контактная информация:

Re: Трудности использования SubVi

Сообщение CCCP33 »

AndreyDmitriev писал(а): 15 мар 2024, 19:25 Я б явно пробрасывал отдельными вспомогательными элементами в кластере
Да, похоже других вариантов нет. Появляется в main.vi обработчик, который выставляет текущие индексы и все - с этим можно мириться, НО. Для отладки опять же неудобняк - если я запускаю непосредственно SubVi нижнего уровня, то его логика уже будет другая. Придется либо править их вручную, либо городить логику, исходя из того, что SubVI запускается сам, а не вызывается сверху и подсовывать индексы, которые выставлены в этом SubVi. В общем дополнительный гемор. Вроде что мешает сделать возможность передавать объект полностью, а не только его value :labview: :buuh:
Artem.spb

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

Re: Трудности использования SubVi

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

А вы часом не усложняете себе жизнь? Если из всего массива вам нужен только видимый элемент (по индексу), так и передайте в саб этот элемент, а не весь массив.
CCCP33
beginner
beginner
Сообщения: 48
Зарегистрирован: 06 май 2014, 10:30
Версия LabVIEW: 2011, 2015
Откуда: Vldr
Благодарил (а): 1 раз
Контактная информация:

Re: Трудности использования SubVi

Сообщение CCCP33 »

Artem.spb писал(а): 16 мар 2024, 21:30 А вы часом не усложняете себе жизнь? Если из всего массива вам нужен только видимый элемент (по индексу), так и передайте в саб этот элемент, а не весь массив.
Хотел, чтобы использовался один typedef для main и subvi, т.к. помимо этих массивов subvi использует и другие его элементы. Да и по логике работы программы - в этот subvi встроен сбор данных, и параллельно обработка, визуализация и сохранение на очередях (producer-consumer - т.е. пока прога получает данные с приборов следующего теста, в это же время она обрабатывает данные от предыдущего другим потоком), а иначе эти потроха тоже придется выносить в main vi.
P.S. возможно мне стоит как-то сменить концепцию (поменять шаблон??), но я уже привык в main.vi использовать event structure, и стремлюсь в каждом кадре делать минимум фарша (в идеале только subvi). Хотя в тех спагетти, которые я лепил раньше, как раз делал так, как сейчас предлагаете. Т.о. в моем случае :labview: не дает найти компромисс между гибкостью и эстетикой кода (либо спагетти из которых можно вытянуть/втянуть что угодно, либо использовать typedef + много subvi - код становится читаемый, однако существенно теряет в гибкости)
Ответить

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