Странное поведение Waveform Chart в цикле
-
- interested
- Сообщения: 8
- Зарегистрирован: 28 апр 2017, 10:32
- Версия LabVIEW: 2016
- Контактная информация:
Странное поведение Waveform Chart в цикле
Здравствуйте! Создал программу, в которой в цикле на Waveform Chart в реальном времени отображается график сигнала, поступающего через COM порт. Все работало отлично, график мгновенно отрабатывал изменения внешнего сигнала АЦП. Решил добавить во внутрь цикла элементы Property Nodes Waveform Chart для возможности изменения масштаба по оси Y с помощью кнопок во время выполнения цикла. Запустил. Масштаб отлично динамически меняется кнопками, но... график стал отрабатывать изменения входного сигнала с опозданием до 30 секунд! Стоило убрать Property Nodes Waveform Chart, как все стало нормально. С чем этом может быть связано? И как, все таки, правильно добавить функциональность динамического изменения масштаба во время исполнения цикла сбора данных?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Странное поведение Waveform Chart в цикле
Property / Invoke Nodes исполняются в UI-потоке. Вероятно, с этим. Полагая, что в цикле есть какая-то минимальная задержка. Если её нет, то WFChart очень быстро наберёт максимальную историю данных и далее эта история будет довольно медленно обновляться (смотря, сколько точек хранится и каковы ресурсы системы).tayalex писал(а):С чем этом может быть связано?
Мухи отдельно, котлеты отдельно.tayalex писал(а):И как, все таки, правильно добавить функциональность динамического изменения масштаба во время исполнения цикла сбора данных?
Выносите работу с (G)UI в отдельный цикл на эвентах. Там обрабатывайте все действия с панелью (кнопки, Property / Invoke). В цикле приёма данных не должно быть такого по хорошему.
-
- professor
- Сообщения: 3408
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Странное поведение Waveform Chart в цикле
Вы бы программу свою показали, было бы проще.
Но скорее всего дело в том, что вы смотрите не всю шкалу по Х, а кусок начала данных
Но скорее всего дело в том, что вы смотрите не всю шкалу по Х, а кусок начала данных
-
- interested
- Сообщения: 8
- Зарегистрирован: 28 апр 2017, 10:32
- Версия LabVIEW: 2016
- Контактная информация:
Re: Странное поведение Waveform Chart в цикле
В History Waveform Chart установлено максимальное значение, видна вся шкала X за все истекшее время. Данные в Waveform Chart добавляются с каждой итерацией цикла. Задержка возникает только после добавления Property Nodes в тело цикла. К сожалению, не знаю как на форуме вставить файл.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Странное поведение Waveform Chart в цикле
tayalex, нажмите "Ответить" / "Цитата" и под полем ввода сообщения найдёте вкладку "Добавить вложения".
Я имел в виду задержку в цикле, которая должна там быть, чтобы не нагружать на 100% процессор.
Я имел в виду задержку в цикле, которая должна там быть, чтобы не нагружать на 100% процессор.
-
- interested
- Сообщения: 8
- Зарегистрирован: 28 апр 2017, 10:32
- Версия LabVIEW: 2016
- Контактная информация:
Re: Странное поведение Waveform Chart в цикле
Ага, понял, спасибо! Приложил.
- Вложения
-
- My2_2_ch_error_handling_QQQ.vi
- (42.18 КБ) 116 скачиваний
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Странное поведение Waveform Chart в цикле
tayalex, цикл в цикле - это тот ещё изврат Вы в курсе, что внутренний While у вас выполняется раз в 10 секунд, когда нет никаких данных в порту? Это дефолтный таймаут инструментов VISA. Чтобы мог реагировать на действия пользователя в реальном времени, нужно делать отдельный параллельный цикл по работе с панелью. Также неплохо было бы вынести обработку данных из порта в отдельный цикл. В таком случае у вас было бы 3 цикла:
- цикл получения данных из порта;
- цикл обработки/анализа данных и вывода на экран;
- цикл обработки UI-событий - кнопки, графики, property / invoke nodes и прочая работа с FP.
Связь между циклами организуется через очереди и уведомители (что больше подходит и больше нравится). Можно даже "локалками" обойтись, если совсем неохота париться. На форуме было много примеров по параллельным циклам, поищите. Также это описано в нескольких литературных источниках.
Кроме того, в цикл получения данных из порта я бы добавил обработчик таймаута, чтобы исключить работу с пустыми строками. Вот, как пример: http://www.labviewportal.org/viewtopic. ... 566#p69566 Не забудьте правильно сконфигурировать порт перед работой. Кроме таймаута, также важное значение имеет терминатор, если он используется в протоколе.
- цикл получения данных из порта;
- цикл обработки/анализа данных и вывода на экран;
- цикл обработки UI-событий - кнопки, графики, property / invoke nodes и прочая работа с FP.
Связь между циклами организуется через очереди и уведомители (что больше подходит и больше нравится). Можно даже "локалками" обойтись, если совсем неохота париться. На форуме было много примеров по параллельным циклам, поищите. Также это описано в нескольких литературных источниках.
Кроме того, в цикл получения данных из порта я бы добавил обработчик таймаута, чтобы исключить работу с пустыми строками. Вот, как пример: http://www.labviewportal.org/viewtopic. ... 566#p69566 Не забудьте правильно сконфигурировать порт перед работой. Кроме таймаута, также важное значение имеет терминатор, если он используется в протоколе.
-
- interested
- Сообщения: 8
- Зарегистрирован: 28 апр 2017, 10:32
- Версия LabVIEW: 2016
- Контактная информация:
Re: Странное поведение Waveform Chart в цикле
Большое спасибо! Много информации, буду разбираться, как оптимизировать. Просто все срочно, как всегда)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение