Помогите пожалуйста со следующей проблемой: Есть Матрица с номерами датчиков, и Массив "алгоритм" из булевых переменных.
ЧТО ТРЕБУЕТСЯ: При нажатии на элемент массива "алгоритм" и по нажатию кнопки ДТ в массиве
"используемые датчики" с тем же индексом, вывести лицевую панель SubVI вида: "ON/OFF" " №ДТ" "задействован/незадейтвован" "ок"
Где на матрицу № ДТ передаются данные с той же матрицы основного прибора.
При выборе элемента в массиве ON/OFF № датчиков формируются в массив . По клику
кнопки ОК данные передаются в основной прибор дальше, лицевая панель Sub VI закрывается.
При нажатии на следующую кнопку ДТ в массиве Исп.датчики в массиве булевых переменных ничего не должно отображаться, а в строковом массиве должна быть информация, что датчик уже задействован.
В чем проблемы: При открытии подприбора данные не записываются, кнопка ОК не закрывает лицевую панель, и индикатор Numeric, имитирующий поступление данных с DAQ останавливается.
В качестве примера использовала встроенные примеры LabVIEW, но видимо не разобралась до конца.
работа с SubVI
работа с SubVI
- Вложения
-
- Программа.vi
- (12.28 КБ) 73 скачивания
-
- Untitled 8 (SubVI).vi
- (7.91 КБ) 73 скачивания
- zxc_pavel
- adviser
- Сообщения: 242
- Зарегистрирован: 02 июн 2016, 12:07
- Версия LabVIEW: 15
- Благодарил (а): 9 раз
- Поблагодарили: 23 раза
- Контактная информация:
Re: работа с SubVI
VI не закрывалась по 2 причинам: Вы не меняли в параметрах File -> Vi properties -> Windows Appearance -> Custom - там 2 галки надо open и close. И вы не меняли массив после выхода -> условие каждую итерацию срабатывало бы.
Ну и я запутался, пытаясь понять что надо в итоге сделать)
Ну и я запутался, пытаясь понять что надо в итоге сделать)
- Вложения
-
- Программа.vi
- (19.97 КБ) 69 скачиваний
-
- Untitled 8.vi
- (13.31 КБ) 75 скачиваний
Re: работа с SubVI
zxc_pavel, я поставила галки,где вы сказали.
В общих чертах, это программа по управлению реле. нажатием элементов в массиве "алгоритм" выбирается, будет работать реле по заданному алгоритму или нет. если да, то выбираются датчики с которыми это реле работает. Датчики как раз выбираются в окошке SubVI.
грубо говоря, если оба элемента с индексом 0 массивов Исп.датчики и Алгоритм имеют значение True, то в открывшемся SubVi выбираются датчики 1,2,3. по кнопке ОК, панель закрывается, и массив из булевых переменных передаётся в основной прибор.
Затем выбираются элементы с индексом 1 в массивах Исп.датчики и алгоритм, снова открывается лицевая панель SubVI, но в строковом массиве уже стоит пометка, что датчики 1,2,3 уже задействованы.
При этом, если повторно нажать кнопку ДТ с индексом 0, на открывшейся панели будут видны выбранные датчики.
Помогите пожалуйста, в первую очередь сделать выбор датчиков. Не могу понять, что не так(
это значит, надо поставить значения Folse для массива или что? Я заметила, что после нажатия кнопки ДТ ваши "отлипают", а мои нет, ( mechanical action стоит тоже).И вы не меняли массив после выхода
Да, пожалуй я и правда путано написала. ((Ну и я запутался, пытаясь понять что надо в итоге сделать)
В общих чертах, это программа по управлению реле. нажатием элементов в массиве "алгоритм" выбирается, будет работать реле по заданному алгоритму или нет. если да, то выбираются датчики с которыми это реле работает. Датчики как раз выбираются в окошке SubVI.
грубо говоря, если оба элемента с индексом 0 массивов Исп.датчики и Алгоритм имеют значение True, то в открывшемся SubVi выбираются датчики 1,2,3. по кнопке ОК, панель закрывается, и массив из булевых переменных передаётся в основной прибор.
Затем выбираются элементы с индексом 1 в массивах Исп.датчики и алгоритм, снова открывается лицевая панель SubVI, но в строковом массиве уже стоит пометка, что датчики 1,2,3 уже задействованы.
При этом, если повторно нажать кнопку ДТ с индексом 0, на открывшейся панели будут видны выбранные датчики.
Помогите пожалуйста, в первую очередь сделать выбор датчиков. Не могу понять, что не так(
- Вложения
-
- Untitled 1 Folder.zip
- (11.78 КБ) 71 скачивание
- zxc_pavel
- adviser
- Сообщения: 242
- Зарегистрирован: 02 июн 2016, 12:07
- Версия LabVIEW: 15
- Благодарил (а): 9 раз
- Поблагодарили: 23 раза
- Контактная информация:
Re: работа с SubVI
Я опять запутался...
Почему нельзя сопоставить 2 массива в одной программе? Это намного проще и понятнее было бы
В чем отличие массива исп.датчики в главной программе от массива в subVi, я не могу понять
Логичнее было бы: выбираем только алгоритм - смотрим какие датчики свободны - выбираем - убираем их из свободных.?
Почему нельзя сопоставить 2 массива в одной программе? Это намного проще и понятнее было бы
В чем отличие массива исп.датчики в главной программе от массива в subVi, я не могу понять
Логичнее было бы: выбираем только алгоритм - смотрим какие датчики свободны - выбираем - убираем их из свободных.?
Re: работа с SubVI
zxc_pavel, в конечной программе там еще все запутанней)) поэтому для удобства пользователя было решено использовать SubVI.
Я поняла, что совсем вас запутала, поэтому предельно упростила. В этой программе надо выбрать операцию (сложение или вычитание) и нажать ОК. в открывшемся окне выбрать два из четырех чисел и нажать ОК. должен вывестись результат сложения или вычитания.
Укажите пожалуйста на мои ошибки. Почему у меня не "отлипает" кнопка ОК в массиве? окно SubVI не закрывается поэтому?
Пробовала делать не с массивами- все получилось. А с ними- почему-то нет(
Я поняла, что совсем вас запутала, поэтому предельно упростила. В этой программе надо выбрать операцию (сложение или вычитание) и нажать ОК. в открывшемся окне выбрать два из четырех чисел и нажать ОК. должен вывестись результат сложения или вычитания.
Укажите пожалуйста на мои ошибки. Почему у меня не "отлипает" кнопка ОК в массиве? окно SubVI не закрывается поэтому?
Пробовала делать не с массивами- все получилось. А с ними- почему-то нет(
- Вложения
-
- калькулятор.vi
- (10.04 КБ) 80 скачиваний
-
- калькулятор (SubVI).vi
- (7.74 КБ) 67 скачиваний
- zxc_pavel
- adviser
- Сообщения: 242
- Зарегистрирован: 02 июн 2016, 12:07
- Версия LabVIEW: 15
- Благодарил (а): 9 раз
- Поблагодарили: 23 раза
- Контактная информация:
Re: работа с SubVI
Добавьте в программку 2 вещи:
1. В Case, где вызывается subVI - добавьте обнуление массивов - (и в сложение и в вычитание), у Вас постоянно в них заходит
2. В том же Case: ПКМ на subVI -> SubVI Node Setup - галки поставить
И перед запуском основной программы закройте subvi
1. В Case, где вызывается subVI - добавьте обнуление массивов - (и в сложение и в вычитание), у Вас постоянно в них заходит
2. В том же Case: ПКМ на subVI -> SubVI Node Setup - галки поставить
И перед запуском основной программы закройте subvi
- Вложения
-
- 1.png (1.65 КБ) 3155 просмотров
-
- 2.png (20.85 КБ) 3155 просмотров
Re: работа с SubVI
zxc_pavel, а в чем разница между галочками в настройках Vi properties -> Windows Appearance -> Custom , и нажатием ПКМ? вроде одни и те же.. в любом случае, это заработало, большое спасибо.
Не подскажите ещё, как сделать так, чтобы при вызове подприбора кнопками с разными индексами (массив из кнопок), в SubVI сбрасывались данные, введеные при вызове подприбора кнопкой с другим индексом? Если поставить обнуление, то сбрасывается везде(
Не подскажите ещё, как сделать так, чтобы при вызове подприбора кнопками с разными индексами (массив из кнопок), в SubVI сбрасывались данные, введеные при вызове подприбора кнопкой с другим индексом? Если поставить обнуление, то сбрасывается везде(
- zxc_pavel
- adviser
- Сообщения: 242
- Зарегистрирован: 02 июн 2016, 12:07
- Версия LabVIEW: 15
- Благодарил (а): 9 раз
- Поблагодарили: 23 раза
- Контактная информация:
Re: работа с SubVI
Да должен был и так работать... Это одно и то же.
Да по-разному можно, главное не заходить постоянно в нее, например, запоминать нажатия в еще одном массиве и передавать его
Или сделать булеву константу, которая сбрасывается на false при смене состояния, обнулять тогда не надо
Или сделать целочисленную константу, которая будет запоминать последний индекс
Да по-разному можно, главное не заходить постоянно в нее, например, запоминать нажатия в еще одном массиве и передавать его
Или сделать булеву константу, которая сбрасывается на false при смене состояния, обнулять тогда не надо
Или сделать целочисленную константу, которая будет запоминать последний индекс
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 16 Ответы
- 3263 Просмотры
-
Последнее сообщение Artem.spb
-
- 4 Ответы
- 220 Просмотры
-
Последнее сообщение Andrew Lunev