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

Простейшие вопросы в области инженерной разработки
rsv
assistant
assistant
Сообщения: 110
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2018
Благодарил (а): 8 раз

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

Сообщение rsv »

Узнал много нового - и про функцию Type Cast, и про библиотеку OpenG.
Всем спасибо.
rsv
assistant
assistant
Сообщения: 110
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2018
Благодарил (а): 8 раз

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

Сообщение rsv »

Вопрос по использованию сетевых переменных
При запуске приложения на ПК считываю уставки из ini-файла в сетевую переменную типа кластер. После этого уставки уже не меняются.
В дальнейшем уставки нужны на контроллере (Real-Time) в цикле. При каждой итерации последовательно вызывается несколько модулей, в которых используются уставки из кластера.
В связи с этим вопрос:
Как эффективнее использовать уставки на контроллере (быстродействие актуально):
- из каждого модуля обращаться к сетевой переменной и через Unbundle вытаскивать нужные уставки;
- перед запуском цикла считать кластер в локальную переменную и передавать в каждый модуль в виде параметра;
Может есть ещё какие-то более быстродействующие решения?
Artem.spb

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

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

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

rsv писал(а): 02 фев 2021, 18:36 - из каждого модуля обращаться к сетевой переменной и через Unbundle вытаскивать нужные уставки;
- перед запуском цикла считать кластер в локальную переменную и передавать в каждый модуль в виде параметра;
Может есть ещё какие-то более быстродействующие решения?
хранить данные в проводах и извлекать из них по необходимости - самый быстрый и рекомендуемый способ
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1127
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 8 раз
Поблагодарили: 14 раз
Контактная информация:

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

Сообщение Kosist »

rsv писал(а): 02 фев 2021, 18:36 Может есть ещё какие-то более быстродействующие решения?
Скорость здесь - вообще не решающий фактор, т.к. если конфигурационные параметры считываются/устанавливаются один раз, то это влияет на быстродействие приложения самым незначительным способом. А если Вы "дергаете" эти значения постоянно - что-то не так со структурой модулей. Ведь если настройки не меняются - зачем их постоянно считывать? Почему быстродействие актуально? Быстродействие по Вашему - это какие величины, как быстро это должно происходить?
Я бы больше волновался о архитектуре - например, разделить конфигурацию на отдельные классы/кластеры для каждого модуля. Потому как если все параметры записать в один кластер, а потом использовать его между разными модулями вытягивая лишь нужные параметры - создается сильная связка модулей, что не есть хорошо.
Мы делили апельсин - много наших полегло...
ujin1
beginner
beginner
Сообщения: 45
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 1 раз
Поблагодарили: 5 раз

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

Сообщение ujin1 »

rsv писал(а): 02 фев 2021, 18:36 - перед запуском цикла считать кластер в локальную переменную и передавать в каждый модуль в виде параметра;
Такой есть вариант
Подключить сформированный кластер к входу цикла или сдвиговому регистру. Это если параметров много и неудобно использовать провода.
Извлекать из кластера данные по мере необходимости.
По скорости должно быть как чтение локальной переменной, только локальная переменная ссылается на элемент передней панели, а вход и сдвиговый регистр в памяти на диаграмме.
Данные.png
Изображение
ujin1
beginner
beginner
Сообщения: 45
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 1 раз
Поблагодарили: 5 раз

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

Сообщение ujin1 »

Kosist писал(а): 02 фев 2021, 23:20 ...вытягивая лишь нужные параметры - создается сильная связка модулей, что не есть хорошо.
В JKI State machine при инициализации используют bundle (не bundle by name). Все параметры именованные. Нужные параметры далее unbundle by name.
Новый элемент добавляется в кластер не ломая ничего дальше. Связка при таком способе отсутствует.
Вложения
Данные1.png
Изображение
rsv
assistant
assistant
Сообщения: 110
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2018
Благодарил (а): 8 раз

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

Сообщение rsv »

Kosist писал(а): 02 фев 2021, 23:20 Скорость здесь - вообще не решающий фактор, т.к. если конфигурационные параметры считываются/устанавливаются один раз, то это влияет на быстродействие приложения самым незначительным способом. А если Вы "дергаете" эти значения постоянно - что-то не так со структурой модулей. Ведь если настройки не меняются - зачем их постоянно считывать?
Собственно, я и спрашивал что бы понять как лучше работать с неизменными конфигурационными параметрами...
Под дёрганием Вы понимаете считывание именно из сетевой переменной? А недёрганье - это то, что предложил ujin1 (кластер из сетевой переменной подаётся на вход цикла, а внутри модулей из входного кластера вытаскиваются нужные параметры)?
Kosist писал(а): 02 фев 2021, 23:20 Почему быстродействие актуально? Быстродействие по Вашему - это какие величины, как быстро это должно происходить?
1 итерация = 1 миллисекунда
Kosist писал(а): 02 фев 2021, 23:20 Я бы больше волновался о архитектуре - например, разделить конфигурацию на отдельные классы/кластеры для каждого модуля. Потому как если все параметры записать в один кластер, а потом использовать его между разными модулями вытягивая лишь нужные параметры - создается сильная связка модулей, что не есть хорошо.
Так и сделано - для каждого выходного сигнала используется свой кластер уставок. И к моменту запуска цикла они приходят разными извилистыми путями. Но для расчёта всё равно приходится несколько модулей использовать...
Artem.spb

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

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

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

rsv писал(а): 03 фев 2021, 08:15 1 итерация = 1 миллисекунда
Не слишком ли шустро? Может можно оптимизировать код и "склеить" несколько итераций в одну?
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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