работа подпрограммы

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

Re: работа подпрограммы

Postby Елизавета on 01 Aug 2017, 13:32

Добрый день! У меня возникла такая задача. Требуется сконфигурировать два аналоговых выхода платы сбора информации USB таким образом, чтобы они были разной формы, частоты (ограниченной длительности). При конфигурации возникает ошибка связанная с тем, что количество семплов для двух каналов должно быть одинаковым (хотя, насколько я понимаю, эта величина задается строго определенной в блоке тактирования). Вопрос. Как это исправить?
Елизавета
interested
interested
 
Posts: 6
Joined: 28 Jul 2017, 13:50
LabVIEW Version: 2013
Karma: 0

Re: работа подпрограммы

Postby Artem.spb on 01 Aug 2017, 13:41

Елизавета wrote:У меня возникла такая задача.

это не контакт, ваш вопрос никак не связан с названием темы, не нужно засорять топик.
На вопрос же ответ был дан в контакте: у вас массивы разной длины, а должны быть одинаковыми.
Artem.spb
expert
expert
 
Posts: 1190
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 213
CLD hardware I/O VIP freelance

Re: работа подпрограммы

Postby kashegor on 01 Aug 2017, 16:18

Вот пример моей куска моей программы
Attachments
Основная программа.rar
(11.34 KiB) Downloaded 15 times
kashegor
beginner
beginner
 
Posts: 30
Joined: 31 Jul 2017, 17:04
LabVIEW Version: 12
Karma: 0

Re: работа подпрограммы

Postby Artem.spb on 01 Aug 2017, 16:58

ДВА ПАРАЛЛЕЛЬНЫХ цикла
glob.png
glob.png (16.58 KiB) Viewed 352 times


один цикл "работает", второй отображает данные на экране. Скорости работы циклов могут быть разными.
Внути subVI запись в глобальную переменную вместо слайда на экране.

В вашем варианте данные изнутри будут получены только после завершения работы subVI
Artem.spb
expert
expert
 
Posts: 1190
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 213
CLD hardware I/O VIP freelance

Re: работа подпрограммы

Postby kashegor on 01 Aug 2017, 17:23

большее спасибо, завтра попробую на своей программе, о результатах отпишусь!
kashegor
beginner
beginner
 
Posts: 30
Joined: 31 Jul 2017, 17:04
LabVIEW Version: 12
Karma: 0

Re: работа подпрограммы

Postby kashegor on 02 Aug 2017, 07:58

Все таки не получается реализовать данное решение. Вы бы не могли подсказать как остановить данные циклы после окончания цикла в подпрограмме?
kashegor
beginner
beginner
 
Posts: 30
Joined: 31 Jul 2017, 17:04
LabVIEW Version: 12
Karma: 0

Re: работа подпрограммы

Postby ladik on 02 Aug 2017, 08:04

Используйте как у Вас и было изначально циклы Forloop.
User avatar
ladik
advanced
advanced
 
Posts: 182
Joined: 18 Nov 2014, 11:45
Location: Астана
Medals: 1
Silver (1)
LabVIEW Version: 2011, 2015
Karma: 61
hardware I/O VIP

Re: работа подпрограммы

Postby kashegor on 02 Aug 2017, 08:16

Пробовал, не получается, так как цикл в подпрограмме выполняется медленнее чем в основной программе.
kashegor
beginner
beginner
 
Posts: 30
Joined: 31 Jul 2017, 17:04
LabVIEW Version: 12
Karma: 0

Re: работа подпрограммы

Postby ladik on 02 Aug 2017, 08:55

А зачем Вам необходимо 25000000 итераций? Почему бы не сделать, к примеру 100, с задержкой в цикле, скажем 50 мс. А вообще пример Artem.spb вполне решает Вашу задачу. Если хотите автоматически остановить циклы после окончания работы подпрограммы, создайте логический индикатор в ней со значением True и подключите его к ConditionTerminal. Туда же индикатор и на него повесьте local variable, как в примере.
User avatar
ladik
advanced
advanced
 
Posts: 182
Joined: 18 Nov 2014, 11:45
Location: Астана
Medals: 1
Silver (1)
LabVIEW Version: 2011, 2015
Karma: 61
hardware I/O VIP

Re: работа подпрограммы

Postby Artem.spb on 02 Aug 2017, 09:20

По-моему у вас в корне неверное построение программы.
Зачем цикл в цикле? тем более такой длинный. Если вдруг возникнет потребность осановить программу, всё равно придётся ждать завершения действий.
Используйте одношаговый subVI, данные храните в сдвиговом регистре, посмотрите в сторону машины состояний.
1s.png
Artem.spb
expert
expert
 
Posts: 1190
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 213
CLD hardware I/O VIP freelance

Re: работа подпрограммы

Postby kashegor on 02 Aug 2017, 11:07

У меня в программе for loop решает ДУ, пока не придумал как можно без него. Пока ни один из предложенных вариантов не получилось реализовать...
kashegor
beginner
beginner
 
Posts: 30
Joined: 31 Jul 2017, 17:04
LabVIEW Version: 12
Karma: 0

Re: работа подпрограммы

Postby Artem.spb on 02 Aug 2017, 11:53

kashegor wrote:У меня в программе for loop решает ДУ, пока не придумал как можно без него. Пока ни один из предложенных вариантов не получилось реализовать...

почему это надо делать в 250К шагов без возможности прервать действие?
и чем принципиально отличаются эти два варианта?
loops.png
loops.png (13.82 KiB) Viewed 314 times

только тем, что второй можно прервать посередине, а первый нельзя.
Artem.spb
expert
expert
 
Posts: 1190
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 213
CLD hardware I/O VIP freelance

Re: работа подпрограммы

Postby kashegor on 02 Aug 2017, 14:53

For loop тоже можно прервать, там добавляется conditional terminal.
kashegor
beginner
beginner
 
Posts: 30
Joined: 31 Jul 2017, 17:04
LabVIEW Version: 12
Karma: 0

Re: работа подпрограммы

Postby Artem.spb on 02 Aug 2017, 15:20

kashegor wrote:For loop тоже можно прервать, там добавляется conditional terminal.

я знаю, но это не ответ на мой вопрос, почему уравнение можно решить в for loop, но нельзя в while?
Artem.spb
expert
expert
 
Posts: 1190
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 213
CLD hardware I/O VIP freelance

Re: работа подпрограммы

Postby kashegor on 02 Aug 2017, 16:21

Попробовал сделать пример в котором все понятнее.
Attachments
Пример2.rar
(22.52 KiB) Downloaded 12 times
kashegor
beginner
beginner
 
Posts: 30
Joined: 31 Jul 2017, 17:04
LabVIEW Version: 12
Karma: 0

PreviousNext

Return to Для чайников

Who is online

Users browsing this forum: No registered users and 9 guests

cron