Советы по программированию на LabVIEW

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

Activity Gold
expert
expert
Сообщения: 1067
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Репутация: 0
Версия LabVIEW: 2013-2017
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Kosist »

"Распределить" контроллы/индикаторыо одного кластера по разным табам не получится...
Мы делили апельсин - много наших полегло...

Usss
assistant
assistant
Сообщения: 126
Зарегистрирован: 19 апр 2017, 23:06
Репутация: 0
Версия LabVIEW: 2018

Re: Советы по программированию на LabVIEW

Сообщение Usss »

Для каждой вкладки создайте отдельный кластер и поместите все кластеры в кластер

Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1067
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Репутация: 0
Версия LabVIEW: 2013-2017
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Kosist »

Usss, а зачем все кластеры в кластер потом? Ведь работать нужно будет все равно с каждым кластером по-отдельности? Тем более, что если кластеры на табах одинаковые, то со всеми можно работать при помощи ссылок...
Мы делили апельсин - много наших полегло...

Artem.spb

Activity Автор
expert
expert
Сообщения: 1866
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Репутация: 0
Версия LabVIEW: 12-18
Контактная информация:

Re: Советы по программированию на LabVIEW

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

Kosist писал(а):Usss, а зачем все кластеры в кластер потом? Ведь работать нужно будет все равно с каждым кластером по-отдельности? Тем более, что если кластеры на табах одинаковые, то со всеми можно работать при помощи ссылок...
бросайте привычку работать через ссылки, и уж тем более не стоит их всем советовать :)
Свойства менять - да, но значеняи записывать - только в крайнем случае. Это на 2-3 порядка замедляет программу.
на лв16 этот тест выдаёт 1400-1500, на лв 15 замедление "всего" в 500 раз
speed.PNG

Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1067
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Репутация: 0
Версия LabVIEW: 2013-2017
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Kosist »

Artem.spb, скорость имеет значение при большой частоте обновления данных. А если данные обновляются например раз в секунду, задержка не будет чувствоваться. И нужно иметь ввиду, что обновления юзер-интерфейса желательно делать в отдельном цикле,чтобы не тормозить цикл который эти самые данные откуда-то берет. Само собой, будь там график я бы не советовал писать данные через Property Node. Но обычные индикаторы... Скажем так: обновлять индикаторы числовыми значениями чаще секунды - занятие сомнительное, т.к. значение будут мелькать перед глазами как огоньки на гирлянде.
Но все зависит и от архитектуры, и стиля в целом. Я например вижу больше проблем в локальных переменных с точки зрения повторного использования кода. А в целом - особенно если на всех табах будет одинаковый кластер - я бы в таб поместил subpanel, и отображал там виайку который бы посылал данные; чтобы не дублировать код.
Мы делили апельсин - много наших полегло...

Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 337
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Репутация: 0
Версия LabVIEW: 2019
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение taras_33 »

Вставлю свои 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!

Artem.spb

Activity Автор
expert
expert
Сообщения: 1866
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Репутация: 0
Версия LabVIEW: 12-18
Контактная информация:

Re: Советы по программированию на LabVIEW

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

Kosist писал(а):Я например вижу больше проблем в локальных переменных с точки зрения повторного использования кода.
UI в большинстве случаев - сомнительная штука с точки зрения повторного использования кода.
Даже если контролы обновляются раз в секунду, а на экране их 150 штук - будут проблемы с производительностью.
У меня в паре проектов возникли были проблемы. В первом я это не смязал с PN, а во втором тест провёл и всё стало очевидно.

Artem.spb

Activity Автор
expert
expert
Сообщения: 1866
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Репутация: 0
Версия LabVIEW: 12-18
Контактная информация:

Re: Советы по программированию на LabVIEW

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

taras_33 писал(а):Используя Actor Framework, я с трудом представляю как можно обойтись без property node. ​
вообще никаких проблем, я обошёлся :)
Через UE отправляю в core нужные данные, а там они уже рисуются прямо она терминалы.
Но вот к примеру реальный проект на cDAQ, ....И проблем с задержками я не наблюдаю. Загрузка процессора около 5%
я бы хотел узнать секрет этой магии. Проц мало что показывает, блокировки UI на нём не отражаются. А вот тормоза реальные наблюдаются. Повторю, у меня была пара проектов, кто возникли проблемы с отображением через ссылки.
Каналов было побольше 30, и окон с индикаторами тем более в разы больше, может, дело было в этом. Но с тех пор я избегаю записывать значения через свойства. Исключение - запись значения вместе с другими настройками. Если уж дёргаю интерфейс, то, чтоб два раза не вставать, сразу и значение пихаю.

Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 337
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Репутация: 0
Версия LabVIEW: 2019
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение taras_33 »

Вот снял видео и прямо с телефона на youtube, поэтому качество ужасное. Но проценты загрузки видны. Для демонстрации скорости сбора, я синусоиду 400 Гц вывожу на scope и на chart.
https://youtu.be/KT9ZsJ3CeKs

Через 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!

Artem.spb

Activity Автор
expert
expert
Сообщения: 1866
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Репутация: 0
Версия LabVIEW: 12-18
Контактная информация:

Re: Советы по программированию на LabVIEW

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

taras_33 писал(а):Вот снял видео и прямо с телефона на youtube, поэтому качество ужасное. Но проценты загрузки видны. Для демонстрации скорости сбора, я синусоиду 400 Гц вывожу на scope и на chart.
https://youtu.be/KT9ZsJ3CeKs
Качество вполне, магия прям.
Нужно будет попробовать, хотя я придерживаюсь чтобы в event structure ничего кроме реакций на действия юзера небыло.
Два цикла - один ловит действия пользователя (и как ни странно - отправляет сообщения сам себе), а второй - только отображением занимается. Т.к. вычислений в нём нет, то и задержки минимальные
Так нету никакой магии, просто все разнесено - каждая задача, scope, chart, индикаторы, вычисления UI и тд все по отдельности, каждый в своем потоке.
Разноси-не разноси, а вся интерморда будет в UI, нельзя же её запрятать в "I/O".
Или если запрятать ссылочного писателя в не-UI оно быстрее работает?

rsv
user
user
Сообщения: 91
Зарегистрирован: 18 июл 2019, 13:53
Репутация: 0
Версия LabVIEW: 2018
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

Доброго времени суток.
Столкнулся с такой проблемой - после изменения радиокнопок (в свойство 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?
Вложения
Радиокнопки.JPG
Радиокнопки.JPG (9.31 КБ) 504 просмотра
Свойство_1.JPG
Свойство_2.JPG

Artem.spb

Activity Автор
expert
expert
Сообщения: 1866
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Репутация: 0
Версия LabVIEW: 12-18
Контактная информация:

Re: Советы по программированию на LabVIEW

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

Иногда такие неизлечимые глюки лечатся только заменой куска на него же.
Попробуйте копипастом заменить глюкнувший контрол

rsv
user
user
Сообщения: 91
Зарегистрирован: 18 июл 2019, 13:53
Репутация: 0
Версия LabVIEW: 2018
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

Большое спасибо, Artem.spb.
Вырезал из TypeDef, сохранил, закрыл, открыл, вставил, сохранил, закрыл. И заработало.

rsv
user
user
Сообщения: 91
Зарегистрирован: 18 июл 2019, 13:53
Репутация: 0
Версия LabVIEW: 2018
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

Рано радовался...
Теперь глюки начались с контролами, следующим за глючным из предыдущего поста. Причём в TypeDef всё правильно, а в модулях, использующих этот кластер, произошли изменения. Такое ощущение, что нарушились какие-то внутренние ссылки, которые сама :labview: использует.
В свойствах видно, что наименования контролов (label) сдвинулись вниз на 1.
Жесть... :shok:
Вложения
Так было и так есть в TypeDef
Так было и так есть в TypeDef
Правильные контролы (TypeDef).JPG (14.21 КБ) 456 просмотров
А так стало в модулях, использующих этот TypeDef
А так стало в модулях, использующих этот TypeDef
Глючные контролы.JPG (15.11 КБ) 456 просмотров

Artem.spb

Activity Автор
expert
expert
Сообщения: 1866
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Репутация: 0
Версия LabVIEW: 12-18
Контактная информация:

Re: Советы по программированию на LabVIEW

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

rsv писал(а):
30 апр 2020, 11:54
Вырезал из TypeDef, ...
может, проблема в этом?
после вырезания всё, что осталось сдвинулось вверх. Новый вставленный элемент стал последним, и неважно, что вы его на самый верх сдвинули. Надо индексацию менять ("reorder control in cluster..")

Ответить

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