Советы по программированию на LabVIEW
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Советы по программированию на LabVIEW
"Распределить" контроллы/индикаторыо одного кластера по разным табам не получится...
Мы делили апельсин - много наших полегло...
- Juri
- I/O
- Сообщения: 263
- Зарегистрирован: 19 апр 2017, 23:06
- Версия LabVIEW: 2021
- Благодарил (а): 13 раз
- Поблагодарили: 6 раз
Re: Советы по программированию на LabVIEW
Для каждой вкладки создайте отдельный кластер и поместите все кластеры в кластер
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Советы по программированию на LabVIEW
Usss, а зачем все кластеры в кластер потом? Ведь работать нужно будет все равно с каждым кластером по-отдельности? Тем более, что если кластеры на табах одинаковые, то со всеми можно работать при помощи ссылок...
Мы делили апельсин - много наших полегло...
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Советы по программированию на LabVIEW
бросайте привычку работать через ссылки, и уж тем более не стоит их всем советовать :)Kosist писал(а):Usss, а зачем все кластеры в кластер потом? Ведь работать нужно будет все равно с каждым кластером по-отдельности? Тем более, что если кластеры на табах одинаковые, то со всеми можно работать при помощи ссылок...
Свойства менять - да, но значения записывать - только в крайнем случае. Это на 2-3 порядка замедляет программу.
на лв16 этот тест выдаёт 1400-1500, на лв 15 замедление "всего" в 500 раз
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Советы по программированию на LabVIEW
Artem.spb, скорость имеет значение при большой частоте обновления данных. А если данные обновляются например раз в секунду, задержка не будет чувствоваться. И нужно иметь ввиду, что обновления юзер-интерфейса желательно делать в отдельном цикле,чтобы не тормозить цикл который эти самые данные откуда-то берет. Само собой, будь там график я бы не советовал писать данные через Property Node. Но обычные индикаторы... Скажем так: обновлять индикаторы числовыми значениями чаще секунды - занятие сомнительное, т.к. значение будут мелькать перед глазами как огоньки на гирлянде.
Но все зависит и от архитектуры, и стиля в целом. Я например вижу больше проблем в локальных переменных с точки зрения повторного использования кода. А в целом - особенно если на всех табах будет одинаковый кластер - я бы в таб поместил subpanel, и отображал там виайку который бы посылал данные; чтобы не дублировать код.
Но все зависит и от архитектуры, и стиля в целом. Я например вижу больше проблем в локальных переменных с точки зрения повторного использования кода. А в целом - особенно если на всех табах будет одинаковый кластер - я бы в таб поместил subpanel, и отображал там виайку который бы посылал данные; чтобы не дублировать код.
Мы делили апельсин - много наших полегло...
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Советы по программированию на LabVIEW
Вставлю свои 5 копеек. Ну не знаю... Используя Actor Framework, я с трудом представляю как можно обойтись без property node. Никто не спорит, что обновлять напрямую быстрее. Но вот к примеру реальный проект на cDAQ, два монитора, имеет 34 Ai канала и ВСЕ! до единого обновляются через property node каждые 100 mS, т.е. 10 раз в секунду. Я даже больше скажу, на втором мониторе Chart имеет четыре плота, за одну интерацию каждый добавляет по 2500 точек, и который обновляется с той же частотой 10 Гц, и через теже property node. И проблем с задержками я не наблюдаю. Загрузка процессора около 5%
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
So far, the Universe is winning!
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Советы по программированию на LabVIEW
UI в большинстве случаев - сомнительная штука с точки зрения повторного использования кода.Kosist писал(а):Я например вижу больше проблем в локальных переменных с точки зрения повторного использования кода.
Даже если контролы обновляются раз в секунду, а на экране их 150 штук - будут проблемы с производительностью.
У меня в паре проектов возникли были проблемы. В первом я это не связал с PN, а во втором тест провёл и всё стало очевидно.
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Советы по программированию на LabVIEW
вообще никаких проблем, я обошёлся :)taras_33 писал(а):Используя Actor Framework, я с трудом представляю как можно обойтись без property node.
Через UE отправляю в core нужные данные, а там они уже рисуются прямо она терминалы.
я бы хотел узнать секрет этой магии. Проц мало что показывает, блокировки UI на нём не отражаются. А вот тормоза реальные наблюдаются. Повторю, у меня была пара проектов, кто возникли проблемы с отображением через ссылки.Но вот к примеру реальный проект на cDAQ, ....И проблем с задержками я не наблюдаю. Загрузка процессора около 5%
Каналов было побольше 30, и окон с индикаторами тем более в разы больше, может, дело было в этом. Но с тех пор я избегаю записывать значения через свойства. Исключение - запись значения вместе с другими настройками. Если уж дёргаю интерфейс, то, чтоб два раза не вставать, сразу и значение пихаю.
-
taras_33
- professional
- Сообщения: 392
- Зарегистрирован: 31 окт 2009, 18:25
- Награды: 1
- Версия LabVIEW: 2019
- Поблагодарили: 13 раз
- Контактная информация:
Re: Советы по программированию на LabVIEW
Вот снял видео и прямо с телефона на youtube, поэтому качество ужасное. Но проценты загрузки видны. Для демонстрации скорости сбора, я синусоиду 400 Гц вывожу на scope и на chart.
Через UE отправляю в core нужные данные, а там они уже рисуются прямо она терминалы
Нужно будет попробовать, хотя я придерживаюсь чтобы в event structure ничего кроме реакций на действия юзера небыло.
я бы хотел узнать секрет этой магии
Так нету никакой магии, просто все разнесено - каждая задача, scope, chart, индикаторы, вычисления UI и тд все по отдельности, каждый в своем потоке.
Через UE отправляю в core нужные данные, а там они уже рисуются прямо она терминалы
Нужно будет попробовать, хотя я придерживаюсь чтобы в event structure ничего кроме реакций на действия юзера небыло.
я бы хотел узнать секрет этой магии
Так нету никакой магии, просто все разнесено - каждая задача, scope, chart, индикаторы, вычисления UI и тд все по отдельности, каждый в своем потоке.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
So far, the Universe is winning!
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Советы по программированию на LabVIEW
Качество вполне, магия прям.taras_33 писал(а):Вот снял видео и прямо с телефона на youtube, поэтому качество ужасное. Но проценты загрузки видны. Для демонстрации скорости сбора, я синусоиду 400 Гц вывожу на scope и на chart.
Два цикла - один ловит действия пользователя (и как ни странно - отправляет сообщения сам себе), а второй - только отображением занимается. Т.к. вычислений в нём нет, то и задержки минимальныеНужно будет попробовать, хотя я придерживаюсь чтобы в event structure ничего кроме реакций на действия юзера небыло.
Разноси-не разноси, а вся интерморда будет в UI, нельзя же её запрятать в "I/O".Так нету никакой магии, просто все разнесено - каждая задача, scope, chart, индикаторы, вычисления UI и тд все по отдельности, каждый в своем потоке.
Или если запрятать ссылочного писателя в не-UI оно быстрее работает?
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
Доброго времени суток.
Столкнулся с такой проблемой - после изменения радиокнопок (в свойство Label прописал коды) в кластере, который TypeDef в одном модуле возникает ошибка "You have two or more enumeration data types wired together, but the enumerations are different. The list of items in the enumerations must be exactly the same." Как я понимаю, ругается на то, что радиокнопки стали разные.
Во всех используемых панелях для данного кластера стоит "Auto-update Fron Type Def". Свойство Label тоже проверил - обновилось везде.
Может есть какая-то хитрость в изменении радиокнопок в кластере и TypeDef?
Столкнулся с такой проблемой - после изменения радиокнопок (в свойство Label прописал коды) в кластере, который TypeDef в одном модуле возникает ошибка "You have two or more enumeration data types wired together, but the enumerations are different. The list of items in the enumerations must be exactly the same." Как я понимаю, ругается на то, что радиокнопки стали разные.
Во всех используемых панелях для данного кластера стоит "Auto-update Fron Type Def". Свойство Label тоже проверил - обновилось везде.
Может есть какая-то хитрость в изменении радиокнопок в кластере и TypeDef?
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Советы по программированию на LabVIEW
Иногда такие неизлечимые глюки лечатся только заменой куска на него же.
Попробуйте копипастом заменить глюкнувший контрол
Попробуйте копипастом заменить глюкнувший контрол
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
Большое спасибо, Artem.spb.
Вырезал из TypeDef, сохранил, закрыл, открыл, вставил, сохранил, закрыл. И заработало.
Вырезал из TypeDef, сохранил, закрыл, открыл, вставил, сохранил, закрыл. И заработало.
-
- advanced
- Сообщения: 170
- Зарегистрирован: 18 июл 2019, 13:53
- Версия LabVIEW: 2020
- Откуда: Россия, Ижевск
- Благодарил (а): 33 раза
- Контактная информация:
Re: Советы по программированию на LabVIEW
Рано радовался...
Теперь глюки начались с контролами, следующим за глючным из предыдущего поста. Причём в TypeDef всё правильно, а в модулях, использующих этот кластер, произошли изменения. Такое ощущение, что нарушились какие-то внутренние ссылки, которые сама использует.
В свойствах видно, что наименования контролов (label) сдвинулись вниз на 1.
Жесть...
Теперь глюки начались с контролами, следующим за глючным из предыдущего поста. Причём в TypeDef всё правильно, а в модулях, использующих этот кластер, произошли изменения. Такое ощущение, что нарушились какие-то внутренние ссылки, которые сама использует.
В свойствах видно, что наименования контролов (label) сдвинулись вниз на 1.
Жесть...
- Вложения
-
- Так было и так есть в TypeDef
- Правильные контролы (TypeDef).JPG (14.21 КБ) 4657 просмотров
-
- А так стало в модулях, использующих этот TypeDef
- Глючные контролы.JPG (15.11 КБ) 4657 просмотров
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Советы по программированию на LabVIEW
может, проблема в этом?
после вырезания всё, что осталось сдвинулось вверх. Новый вставленный элемент стал последним, и неважно, что вы его на самый верх сдвинули. Надо индексацию менять ("reorder control in cluster..")
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 2075 Просмотры
-
Последнее сообщение PozhiloyGoblin
-
- 0 Ответы
- 347 Просмотры
-
Последнее сообщение maxim_MA
-
- 23 Ответы
- 2437 Просмотры
-
Последнее сообщение dadreamer
-
- 2 Ответы
- 391 Просмотры
-
Последнее сообщение ujin1
-
- 5 Ответы
- 848 Просмотры
-
Последнее сообщение dadreamer