работа подпрограммы
-
- interested
- Сообщения: 9
- Зарегистрирован: 28 июл 2017, 13:50
- Версия LabVIEW: 2013
- Контактная информация:
Re: работа подпрограммы
Добрый день! У меня возникла такая задача. Требуется сконфигурировать два аналоговых выхода платы сбора информации USB таким образом, чтобы они были разной формы, частоты (ограниченной длительности). При конфигурации возникает ошибка связанная с тем, что количество семплов для двух каналов должно быть одинаковым (хотя, насколько я понимаю, эта величина задается строго определенной в блоке тактирования). Вопрос. Как это исправить?
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 173 раза
- Контактная информация:
Re: работа подпрограммы
это не контакт, ваш вопрос никак не связан с названием темы, не нужно засорять топик.Елизавета писал(а):У меня возникла такая задача.
На вопрос же ответ был дан в контакте: у вас массивы разной длины, а должны быть одинаковыми.
-
- beginner
- Сообщения: 47
- Зарегистрирован: 31 июл 2017, 17:04
- Версия LabVIEW: 12
- Контактная информация:
Re: работа подпрограммы
Вот пример моей куска моей программы
- Вложения
-
- Основная программа.rar
- (11.34 КБ) 123 скачивания
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 173 раза
- Контактная информация:
Re: работа подпрограммы
ДВА ПАРАЛЛЕЛЬНЫХ цикла
Внути subVI запись в глобальную переменную вместо слайда на экране.
В вашем варианте данные изнутри будут получены только после завершения работы subVI
один цикл "работает", второй отображает данные на экране. Скорости работы циклов могут быть разными.Внути subVI запись в глобальную переменную вместо слайда на экране.
В вашем варианте данные изнутри будут получены только после завершения работы subVI
-
- beginner
- Сообщения: 47
- Зарегистрирован: 31 июл 2017, 17:04
- Версия LabVIEW: 12
- Контактная информация:
Re: работа подпрограммы
большее спасибо, завтра попробую на своей программе, о результатах отпишусь!
-
- beginner
- Сообщения: 47
- Зарегистрирован: 31 июл 2017, 17:04
- Версия LabVIEW: 12
- Контактная информация:
Re: работа подпрограммы
Все таки не получается реализовать данное решение. Вы бы не могли подсказать как остановить данные циклы после окончания цикла в подпрограмме?
-
ladik
- developer
- Сообщения: 275
- Зарегистрирован: 18 ноя 2014, 11:45
- Награды: 1
- Версия LabVIEW: 2015, 2019
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 3 раза
- Контактная информация:
Re: работа подпрограммы
Используйте как у Вас и было изначально циклы Forloop.
Дорогу осилит идущий.
-
- beginner
- Сообщения: 47
- Зарегистрирован: 31 июл 2017, 17:04
- Версия LabVIEW: 12
- Контактная информация:
Re: работа подпрограммы
Пробовал, не получается, так как цикл в подпрограмме выполняется медленнее чем в основной программе.
-
ladik
- developer
- Сообщения: 275
- Зарегистрирован: 18 ноя 2014, 11:45
- Награды: 1
- Версия LabVIEW: 2015, 2019
- Откуда: Екатеринбург
- Благодарил (а): 4 раза
- Поблагодарили: 3 раза
- Контактная информация:
Re: работа подпрограммы
А зачем Вам необходимо 25000000 итераций? Почему бы не сделать, к примеру 100, с задержкой в цикле, скажем 50 мс. А вообще пример Artem.spb вполне решает Вашу задачу. Если хотите автоматически остановить циклы после окончания работы подпрограммы, создайте логический индикатор в ней со значением True и подключите его к ConditionTerminal. Туда же индикатор и на него повесьте local variable, как в примере.
Дорогу осилит идущий.
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 173 раза
- Контактная информация:
Re: работа подпрограммы
По-моему у вас в корне неверное построение программы.
Зачем цикл в цикле? тем более такой длинный. Если вдруг возникнет потребность осановить программу, всё равно придётся ждать завершения действий.
Используйте одношаговый subVI, данные храните в сдвиговом регистре, посмотрите в сторону машины состояний.
Зачем цикл в цикле? тем более такой длинный. Если вдруг возникнет потребность осановить программу, всё равно придётся ждать завершения действий.
Используйте одношаговый subVI, данные храните в сдвиговом регистре, посмотрите в сторону машины состояний.
-
- beginner
- Сообщения: 47
- Зарегистрирован: 31 июл 2017, 17:04
- Версия LabVIEW: 12
- Контактная информация:
Re: работа подпрограммы
У меня в программе for loop решает ДУ, пока не придумал как можно без него. Пока ни один из предложенных вариантов не получилось реализовать...
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 173 раза
- Контактная информация:
Re: работа подпрограммы
почему это надо делать в 250К шагов без возможности прервать действие?kashegor писал(а):У меня в программе for loop решает ДУ, пока не придумал как можно без него. Пока ни один из предложенных вариантов не получилось реализовать...
и чем принципиально отличаются эти два варианта? только тем, что второй можно прервать посередине, а первый нельзя.
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 173 раза
- Контактная информация:
Re: работа подпрограммы
я знаю, но это не ответ на мой вопрос, почему уравнение можно решить в for loop, но нельзя в while?kashegor писал(а):For loop тоже можно прервать, там добавляется conditional terminal.
-
- beginner
- Сообщения: 47
- Зарегистрирован: 31 июл 2017, 17:04
- Версия LabVIEW: 12
- Контактная информация:
Re: работа подпрограммы
Попробовал сделать пример в котором все понятнее.
- Вложения
-
- Пример2.rar
- (22.52 КБ) 102 скачивания
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 16 Ответы
- 3261 Просмотры
-
Последнее сообщение Artem.spb
-
- 4 Ответы
- 220 Просмотры
-
Последнее сообщение Andrew Lunev