Провалы в XY графике
-
- beginner
- Сообщения: 23
- Зарегистрирован: 28 май 2017, 17:20
- Версия LabVIEW: 14.0
- Контактная информация:
Провалы в XY графике
[attachment=0]Провал_1.pngПриветствую всех на этом форуме.
Набросал программку для отображения на xy-графике поступающих данных с микроконтроллера. Данные поступают с периодичность 10 мс в виде строки, например "3500.000 1.500", где 3500.000 значение частоты, 1.500 значение АЦП. Данные на графике отображаются вроде корректно, НО! Проскакивают провалы!
Как от них можно избавиться?
Набросал программку для отображения на xy-графике поступающих данных с микроконтроллера. Данные поступают с периодичность 10 мс в виде строки, например "3500.000 1.500", где 3500.000 значение частоты, 1.500 значение АЦП. Данные на графике отображаются вроде корректно, НО! Проскакивают провалы!
Как от них можно избавиться?
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Провалы в XY графике
Наверное, у Вас значение NaN проскакивает - там есть условие, когда записывается или значение, или NaN. Посмотрите "под лампочкой", или как-то проследите состояния индикатора EOS (лучше всего из его значений собирать массив, и смотреть, будет ли там проскакивать True).
Хотя, не уверен, что это причина...
Хотя, не уверен, что это причина...
Мы делили апельсин - много наших полегло...
-
- beginner
- Сообщения: 23
- Зарегистрирован: 28 май 2017, 17:20
- Версия LabVIEW: 14.0
- Контактная информация:
Re: Провалы в XY графике
NaN выполняется, когда придет заданное последнее значение. Например в диапазоне 3000-4000,когда поступит значение 4000, то вместо значения АЦП будет NaN. Это сделано для гашения так сказать "обратного хода луча", чтобы на графике последняя точка не соединялась с первой. Этот кусок схемы я слизал у буржуев, у которых покупал один девайс. В месте с ним было программное обеспечение на labview c исходным кодом. Этот кусок кода был не задействован в моей программе. Сейчас решил расширить функционал этого девайса. И вот застопорился на этих провалах. Не думаю, чтобы программисты этой конторы сделали ЛАЖУ! И почему именно NaN должен проскакивать? Даже если он проскакивает, то как от этого избавиться? Попробую с массивом и гляну, что там. Но на 99% уверен там будет нормально.
-
- beginner
- Сообщения: 23
- Зарегистрирован: 28 май 2017, 17:20
- Версия LabVIEW: 14.0
- Контактная информация:
Re: Провалы в XY графике
Может labview не справляется с такой скорость в 50 мс? Мало вероятно.
- Вложения
-
- Проскок.png (1.26 КБ) 10597 просмотров
-
- Провал_2.png (1.37 КБ) 10597 просмотров
-
- NaN.png (3.56 КБ) 10597 просмотров
-
- beginner
- Сообщения: 23
- Зарегистрирован: 28 май 2017, 17:20
- Версия LabVIEW: 14.0
- Контактная информация:
Re: Провалы в XY графике
Как-то не правильно отправил предыдущее сообщение.
Собрал массив, посмотрел и ...... лучше не стало Провалы возникают, когда проскакивают значения. NaN поступает четко, как и было задано на значении 4000 и больше ни где. Если предположить, что значения в строке поступают корректные, в чем может быть проблема? В com порте?
Собрал массив, посмотрел и ...... лучше не стало Провалы возникают, когда проскакивают значения. NaN поступает четко, как и было задано на значении 4000 и больше ни где. Если предположить, что значения в строке поступают корректные, в чем может быть проблема? В com порте?
-
IvanLis
- guru
- Сообщения: 5462
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 86 раз
Re: Провалы в XY графике
Измените алгоритм работы программы. Т.е. в массив вставлять данные только в случае когда EOS=false, а когда True не вставляйте - игнорируйте это значение. Тогда и на графике они исчезнут.Валерон писал(а):Как-то не правильно отправил предыдущее сообщение.
Собрал массив, посмотрел и ...... лучше не стало Провалы возникают, когда проскакивают значения. NaN поступает четко, как и было задано на значении 4000 и больше ни где. Если предположить, что значения в строке поступают корректные, в чем может быть проблема? В com порте?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- assistant
- Сообщения: 119
- Зарегистрирован: 06 май 2015, 22:24
- Версия LabVIEW: 2014, 2018
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Провалы в XY графике
Посмотрите настройки XY Graph, закладку Plot и выберите правильный Interpolation, чтобы на графике точки соединялись между собой. Провал на графике из-за того, что в отсутствуют данные в массиве для X и Y в конкретном месте.
Последний раз редактировалось Alex Dem 28 май 2017, 23:06, всего редактировалось 1 раз.
-
- beginner
- Сообщения: 23
- Зарегистрирован: 28 май 2017, 17:20
- Версия LabVIEW: 14.0
- Контактная информация:
Re: Провалы в XY графике
Настройки графика несколько раз перебирал.Толку ни какого. Сейчас промониторил com порт двумя программами и выяснил, что данные идут с пропусками, поэтому XY график не соединяет линией через значение. Буду разбираться с программой МК.
Всем откликнувшимся большое спасибо. Тему можно закрыть.
Всем откликнувшимся большое спасибо. Тему можно закрыть.
-
- beginner
- Сообщения: 23
- Зарегистрирован: 28 май 2017, 17:20
- Версия LabVIEW: 14.0
- Контактная информация:
Re: Провалы в XY графике
Хочу поправиться на счет высказывания XY графика. Точки в любом случае будут соединяться. А на том графике. который я показал в своих постах хорошо визуально контролировать корректность поступающих данных.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Провалы в XY графике
Нет, не такой. Вы в любом случае в массив добавляете данные - будь то число, или же NaN. А IvanLis советует не добавлять данные в массив вообще (элементарно попробуйте протестить все при помощи Case Structure), если то условие не выполняется.Валерон писал(а):Прошу прошения уважаемый IvanLis.
А разве у меня не такой алгоритм?
Мы делили апельсин - много наших полегло...
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Провалы в XY графике
Иногда даже примеры от NI содержат лажу. Везде работают люди, которые могут допустить ошибку. Не говорю, что это точно тот случай, но лучше не брать на 100% веру то, что сделали другие (хотя иногда нужна какая-то точка отсчета, от которой можно оттолкнуться и сказать "да, это сделано тем то и тем то, поэтому будет точно работать"). Чуть другой код, чуть другое железо, чуть другая винда, чуть другое время тестирования - и иногда результат получается довольно разный )Валерон писал(а):И вот застопорился на этих провалах. Не думаю, чтобы программисты этой конторы сделали ЛАЖУ!
Мы делили апельсин - много наших полегло...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Провалы в XY графике
Валерон, уверены, что на каждой итерации цикла нужно чистить приёмный буфер? Обычно буфер чистится 1 раз - при инициализации порта (вне цикла). И то эта операция нужна в редких случаях. Почти всегда буфер вы сами разбираете с помощью VISA Read, читая чаще раза в 2-3, чем посылка доходит. Кроме прочего, у вас VISA Read обеспечивает задержку цикла - когда в буфере пусто, задержка равна величине таймаута. А вы ещё туда засадили задержку в 45 мс. Ну, и судя по диаграмме, у вас не обрабатываются случаи, когда приходит пустая (таймаут или ошибка протокола) или некорректная строка.
-
- beginner
- Сообщения: 23
- Зарегистрирован: 28 май 2017, 17:20
- Версия LabVIEW: 14.0
- Контактная информация:
Re: Провалы в XY графике
Уважаемые спецы, спасибо еще раз за советы. Но я думаю, что пока не добьюсь нормальной последовательности данных с МК, обсуждение бессмысленно. Дело в том, что данные с этого забугорного девайса (куплен не в китае, а у америкосов) идут в протоколе SPI и с помощью МК я сделал конвертер в USB. Теперь надо определить или этот девайс выдает пропуски или моя программа в МК "глотает" данные. Для этого нужен какой-нибудь логический анализатор SPI, а у меня пока его нет. Жаль, что напрямую SPI не воткнуть в комп, быстрее можно было бы вычислить.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Провалы в XY графике
Осциллограф в зубы и вперёдВалерон писал(а):Для этого нужен какой-нибудь логический анализатор SPI
Есть же готовое, зачем лишний раз изобретать велосипед? Например, https://www.chipdip.ru/product/usb-spi-click Да много таких переходников, загуглите.Валерон писал(а):Жаль, что напрямую SPI не воткнуть в комп, быстрее можно было бы вычислить.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 2 Ответы
- 535 Просмотры
-
Последнее сообщение Юрий
-
- 12 Ответы
- 870 Просмотры
-
Последнее сообщение JohnChaban
-
- 5 Ответы
- 604 Просмотры
-
Последнее сообщение AndryG