Страница 1 из 1

работа с SubVI

Добавлено: 04 ноя 2017, 22:23
Et_cetera
Помогите пожалуйста со следующей проблемой: Есть Матрица с номерами датчиков, и Массив "алгоритм" из булевых переменных.
ЧТО ТРЕБУЕТСЯ: При нажатии на элемент массива "алгоритм" и по нажатию кнопки ДТ в массиве
"используемые датчики" с тем же индексом, вывести лицевую панель SubVI вида: "ON/OFF" " №ДТ" "задействован/незадейтвован" "ок"
Где на матрицу № ДТ передаются данные с той же матрицы основного прибора.
При выборе элемента в массиве ON/OFF № датчиков формируются в массив . По клику
кнопки ОК данные передаются в основной прибор дальше, лицевая панель Sub VI закрывается.
При нажатии на следующую кнопку ДТ в массиве Исп.датчики в массиве булевых переменных ничего не должно отображаться, а в строковом массиве должна быть информация, что датчик уже задействован.
В чем проблемы: При открытии подприбора данные не записываются, кнопка ОК не закрывает лицевую панель, и индикатор Numeric, имитирующий поступление данных с DAQ останавливается.

В качестве примера использовала встроенные примеры LabVIEW, но видимо не разобралась до конца.

Re: работа с SubVI

Добавлено: 04 ноя 2017, 23:38
zxc_pavel
VI не закрывалась по 2 причинам: Вы не меняли в параметрах File -> Vi properties -> Windows Appearance -> Custom - там 2 галки надо open и close. И вы не меняли массив после выхода -> условие каждую итерацию срабатывало бы.
Ну и я запутался, пытаясь понять что надо в итоге сделать)

Re: работа с SubVI

Добавлено: 05 ноя 2017, 16:31
Et_cetera
zxc_pavel, я поставила галки,где вы сказали.
И вы не меняли массив после выхода
это значит, надо поставить значения Folse для массива или что? Я заметила, что после нажатия кнопки ДТ ваши "отлипают", а мои нет, ( mechanical action стоит тоже).
Ну и я запутался, пытаясь понять что надо в итоге сделать)
Да, пожалуй я и правда путано написала. ((
В общих чертах, это программа по управлению реле. нажатием элементов в массиве "алгоритм" выбирается, будет работать реле по заданному алгоритму или нет. если да, то выбираются датчики с которыми это реле работает. Датчики как раз выбираются в окошке SubVI.
грубо говоря, если оба элемента с индексом 0 массивов Исп.датчики и Алгоритм имеют значение True, то в открывшемся SubVi выбираются датчики 1,2,3. по кнопке ОК, панель закрывается, и массив из булевых переменных передаётся в основной прибор.
Затем выбираются элементы с индексом 1 в массивах Исп.датчики и алгоритм, снова открывается лицевая панель SubVI, но в строковом массиве уже стоит пометка, что датчики 1,2,3 уже задействованы.
При этом, если повторно нажать кнопку ДТ с индексом 0, на открывшейся панели будут видны выбранные датчики.
Помогите пожалуйста, в первую очередь сделать выбор датчиков. Не могу понять, что не так(

Re: работа с SubVI

Добавлено: 06 ноя 2017, 08:19
zxc_pavel
Я опять запутался...
Почему нельзя сопоставить 2 массива в одной программе? Это намного проще и понятнее было бы
В чем отличие массива исп.датчики в главной программе от массива в subVi, я не могу понять

Логичнее было бы: выбираем только алгоритм - смотрим какие датчики свободны - выбираем - убираем их из свободных.?

Re: работа с SubVI

Добавлено: 06 ноя 2017, 20:21
Et_cetera
zxc_pavel, в конечной программе там еще все запутанней)) поэтому для удобства пользователя было решено использовать SubVI.

Я поняла, что совсем вас запутала, поэтому предельно упростила. В этой программе надо выбрать операцию (сложение или вычитание) и нажать ОК. в открывшемся окне выбрать два из четырех чисел и нажать ОК. должен вывестись результат сложения или вычитания.
Укажите пожалуйста на мои ошибки. Почему у меня не "отлипает" кнопка ОК в массиве? окно SubVI не закрывается поэтому?
Пробовала делать не с массивами- все получилось. А с ними- почему-то нет(

Re: работа с SubVI

Добавлено: 06 ноя 2017, 20:43
zxc_pavel
Добавьте в программку 2 вещи:
1. В Case, где вызывается subVI - добавьте обнуление массивов - (и в сложение и в вычитание), у Вас постоянно в них заходит
2. В том же Case: ПКМ на subVI -> SubVI Node Setup - галки поставить

И перед запуском основной программы закройте subvi

Re: работа с SubVI

Добавлено: 07 ноя 2017, 22:33
Et_cetera
zxc_pavel, а в чем разница между галочками в настройках Vi properties -> Windows Appearance -> Custom , и нажатием ПКМ? вроде одни и те же.. в любом случае, это заработало, большое спасибо.
Не подскажите ещё, как сделать так, чтобы при вызове подприбора кнопками с разными индексами (массив из кнопок), в SubVI сбрасывались данные, введеные при вызове подприбора кнопкой с другим индексом? Если поставить обнуление, то сбрасывается везде(

Re: работа с SubVI

Добавлено: 07 ноя 2017, 23:27
zxc_pavel
Да должен был и так работать... Это одно и то же.
Да по-разному можно, главное не заходить постоянно в нее, например, запоминать нажатия в еще одном массиве и передавать его
Или сделать булеву константу, которая сбрасывается на false при смене состояния, обнулять тогда не надо
Или сделать целочисленную константу, которая будет запоминать последний индекс