Изменения частоты с заданным нами шагом

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

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение dadreamer »

druny1234 писал(а):dadreamer все как Вы написали сделал. Не разберусь тольк как отправлять сигнал на прибор с Timeout, сделал вот так, но после этого у меня зависла программа, и данные не менялись.
У меня, к сожалению, сейчас нет под рукой :labview: , поэтому вот картинка.
2.jpg
1. Задайте время таймаута (синяя иконка с часами); когда не будет происходить никаких событий, это время вам обеспечит задержку в цикле.
2. Перейдите на кадр таймаута и поместите туда код отправки сигнала.
3. Массив сигнала нужно сделать в виде сдвигового регистра (через весь цикл). При изменении контролов delta, start, end отправляете в регистр новое значение сигнала. В таймауте пускаете провод напрямую.
4. Добавьте в кадр обработчик событий delta и end, сейчас у вас обрабатывается только модификация start.
Artem.spb

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

Re: Изменения частоты с заданным нами шагом

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

druny1234 писал(а): но после этого у меня зависла программа, и данные не менялись.
потому что таймаута НЕТ
и циклы у вас неработоспособно связаны, вы не уловили суть потока данных. У вас внутренний цикл никогда не остановится, если начнёт работу, т.к. по проводнику придёт значение и больше оно не сможет измениться.
event.png
+ надо проверить, что индекс сигнала не вышел за пределы. и при выходе за рамки прекращать выдавать (например, задать таймаут -1), или начать выдавать с начала (обнулить индекс)
druny1234
beginner
beginner
Сообщения: 34
Зарегистрирован: 07 сен 2016, 14:13
Версия LabVIEW: 2014
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение druny1234 »

Спасибо за помощь, вы извените, что все по стопять раз спрашиваю, прост это вторая программа для меня, и немного трудно уловить что да как надо.
druny1234
beginner
beginner
Сообщения: 34
Зарегистрирован: 07 сен 2016, 14:13
Версия LabVIEW: 2014
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение druny1234 »

Добрый день уважаемые форумчане! При дальнейшей реализации проекта возникла следующая проблемка, с Lock-in я измеряю ток, и мне необходимо построить зависимость тока от частоты и сохранить данные в файл(с сохранением думаю разберусь). При измерении и постройки графика у меня выдает какуето чушь.
Вложения
3.png
FreqIn2 (2).vi
(39.83 КБ) 97 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение dadreamer »

druny1234 писал(а):Добрый день уважаемые форумчане! При дальнейшей реализации проекта возникла следующая проблемка, с Lock-in я измеряю ток, и мне необходимо построить зависимость тока от частоты и сохранить данные в файл(с сохранением думаю разберусь). При измерении и постройки графика у меня выдает какуето чушь.
Просто глядя на вашу картинку, уже можно заметить некорректный кодинг. Во-первых, Instr сессию (пурпурный провод) нужно протягивать во всех кадрах всех структур, т.к. при использовании default туннеля сессия становится пустой и в дальнейшем :vi: не смогут с ней работать. Во-вторых, посмотрите на default туннели, выделенные зелёным. Является ли такое поведение допустимым для вас? (Для массива default соответствует пустому массиву, для числа - нулю).

Кроме того, есть и другие косяки. Например, задержка в тайм-ауте эвента - вещь вредная, не стоит туда её помещать. Работайте либо по разности таймеров "текущий минус сохранённый", либо выносите работу с железом в отдельный цикл. По-хорошему, вам надо поменять архитектуру программы, т.к. в эвенте уже нагорожено всякого.
Вложения
3.png
druny1234
beginner
beginner
Сообщения: 34
Зарегистрирован: 07 сен 2016, 14:13
Версия LabVIEW: 2014
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение druny1234 »

То есть на выходе у меня 0 получается? Хотя при измерении,при изменении частоты менялся и ток, все было в порядке. И по поводу таймера, изменения частоты слишком быстро происходит и Lock-in не успевает извлечь сигнал.
Последний раз редактировалось druny1234 08 ноя 2016, 12:37, всего редактировалось 1 раз.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение dadreamer »

druny1234 писал(а):То есть на выходе у меня 0 получается? Хотя при измерении,при изменении частоты менялся и ток, все было в порядке.
Когда не нажат Boolean, обнуляется массив и счётчик. Если это вас устраивает, то тогда у меня претензий нет.
druny1234 писал(а):При измерении и постройки графика у меня выдает какуето чушь.
Какая именно чушь?? Ни картинки графика нет, ни файла... :dntknw:
druny1234
beginner
beginner
Сообщения: 34
Зарегистрирован: 07 сен 2016, 14:13
Версия LabVIEW: 2014
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение druny1234 »

Кнопку я создал для того, чтоб посылались заданные частоты с уже сгенерированного массива, т.к. если без кнопки, при запуске программы, пока не запустишь генерацию массива, на прибор подается 0, а прибор не может поставить частоту 0 и выдает ошибку с ужасно пискливым звуком.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение dadreamer »

druny1234 писал(а):Кнопку я создал для того, чтоб посылались заданные частоты с уже сгенерированного массива, т.к. если без кнопки, при запуске программы, пока не запустишь генерацию массива, на прибор подается 0, а прибор не может поставить частоту 0 и выдает ошибку с ужасно пискливым звуком.
Можно было перед циклом сгенерировать тот же Ramp Pattern по дефолтным параметрам. Или записать в свойство Value (Signaling) для любого из трёх контролов delta, start, end, что привело бы к срабатыванию события Value Change. Ну да ладно, кнопка, так кнопка.
druny1234 писал(а):И по поводу таймера, изменения частоты слишком быстро происходит и Lock-in не успевает извлечь сигнал.
Я же вам уже сказал
dadreamer писал(а):Работайте либо по разности таймеров "текущий минус сохранённый", либо выносите работу с железом в отдельный цикл.
druny1234
beginner
beginner
Сообщения: 34
Зарегистрирован: 07 сен 2016, 14:13
Версия LabVIEW: 2014
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение druny1234 »

Надеюсь правильно Вас понял про вынос работы с железом. Нашел решение с графиком, только каждый раз отображаеться новая точка, старая не записывается на графике
Вложения
4.png
FreqIn2 (3).vi
(28.17 КБ) 98 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение dadreamer »

druny1234 писал(а):Надеюсь правильно Вас понял про вынос работы с железом. Нашел решение с графиком, только каждый раз отображаеться новая точка, старая не записывается на графике
Нет, неправильно. :wink: Вы всё в тот же цикл запихнули, а нужно в параллельный.

Вообще, у вас как-то так должно получиться:
1. Цикл обработки (G)UI-событий (взаимодействие в панелью: работа с контролами/индикаторами, нажатия кнопок и т.п.);
2. Цикл по работе с железом (чтение данных, запись команд) - по идее, на каждое устройство выделяется собственный цикл;
3. Цикл "конечный автомат", где размещается обработка данных с устройств, формирование команд и логика работы программы.

В вашем случае (надеюсь) программа достаточно простая, поэтому можно совместить 2 и 3, заодно поместив туда же отображение информации (графики и иже с ними). Связать между собой циклы можно через инструменты синхронизации, такие как очереди, уведомители, рандеву и т.д.
dadreamer писал(а):
dadreamer писал(а):Синхронизировать циклы можно через очереди, уведомители и прочие инструменты.
В интернете полно примеров по передаче данных между параллельными циклами. Изучите, как работают механизмы синхронизации, на примере http://www.ni.com/white-paper/3023/en/ (подход "Producer - Consumer"). Посмотрите схожие темы на форуме, например http://www.labviewportal.org/viewtopic. ... 096#p66096 , http://www.labviewportal.org/viewtopic. ... 893#p68893 , http://www.labviewportal.org/viewtopic. ... 28&#p62828

А также вот вам литература и примеры:
1) "LabVIEW Основы II: Разработка" : шаблон «Производитель-потребитель» + материал в главе 2 "Передача данных между несколькими циклами"
2) Питер Блюм "LabVIEW: стиль программирования", в частности глава 8 "Шаблоны" и раздел 8.3.1 "Параллельные циклы"
3) примеры в папке C:\Program Files (x86)\National Instruments\LabVIEW 2014\examples\Synchronization
druny1234
beginner
beginner
Сообщения: 34
Зарегистрирован: 07 сен 2016, 14:13
Версия LabVIEW: 2014
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение druny1234 »

Спасибо dadreamer за подробный ответ!) Будем учиться. Добра :thank:
druny1234
beginner
beginner
Сообщения: 34
Зарегистрирован: 07 сен 2016, 14:13
Версия LabVIEW: 2014
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение druny1234 »

Помогите пожалуйста,при вкл кнопке идет эксперимент и данные на графике рисуются, при выкл кнопки, данные с графика пропадают. Пробывал записывать в файл, одни нули записываются. Я знаю что правильнее как dadreamer посоветовал, но хотелось сперва на скорую руку сделать, а потом уже перестроить.
Вложения
5.png
FreqIn2 (4).vi
(30.16 КБ) 91 скачивание
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Изменения частоты с заданным нами шагом

Сообщение Blackman »

:shok:
Вложения
AFR Simulator BD.PNG
AFR Simulator FP.PNG
AFR Simulator.vi
(24.17 КБ) 110 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Изменения частоты с заданным нами шагом

Сообщение dadreamer »

druny1234 писал(а):Помогите пожалуйста
Исправьте сначала вашу программу по моим рекомендациям: http://www.labviewportal.org/viewtopic. ... 320#p72320
А если не хотите выносить работу с приборами в отдельный цикл, то реализуйте предложенный мной вариант:
dadreamer писал(а):Работайте либо по разности таймеров "текущий минус сохранённый"
Надеюсь, догадаетесь взять значение системного таймера?.. :wink:

По графикам вам уже Blackman преложил пример. Вам надо только его приспособить под свои нужды. Ключевое слово - накопление (хоть в регистре, хоть в feedback node). Обратите внимание на default туннель на оранжевом проводе.
druny1234 писал(а):при выкл кнопки, данные с графика пропадают
Да, и вам настоятельно рекомендую почитать книжки по :labview: : http://www.labviewportal.org/viewtopic. ... 890#p38890 Потому что стиль у вас жуть :D
Ответить

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