перезапись кластера

Простейшие вопросы в области инженерной разработки
Ответить
kolmakowladimir
beginner
beginner
Сообщения: 17
Зарегистрирован: 26 сен 2018, 16:25
Репутация: 0
Версия LabVIEW: 16
Контактная информация:

перезапись кластера

Сообщение kolmakowladimir »

Здравствуйте!
Столкнулся с одной интересной проблемой(особенностью): у меня есть кластер, в котором вложено еще 3 кластера с разными переменными (рис.1). Мне нужно установить в эти переменные разные значения, для этого я использовал "Bundle By Name Function" и каждое значение вызывал отдельно, используя локальные переменные(рис.2). Делал я это, чтобы код выглядел нормально и можно было вписывать комменты. Но вот беда, выполняю каждую "Bundle By Name Function", она все кластеры сбивает в дефолтные значения, т.е. по завершению кода изменилось только значение, которое последним выполнило "Bundle By Name Function"... Я не понимаю, как такое может быть, ведь локальная переменная обращается к одному и тому же кластеру, т.е. кластер меняется с каждым вызовом и эти изменения должны сохраняться при следующих вызовах функции...
перепробовал я разные варианты, чтобы это исправить, но в итоге пришел к такому (рисунок 3). Да, работает, но выглядит ужасно(((
Почему такое происходит? Кластер сделан как typeDef (.ctl)
Вложения
кластер
кластер
до
до
после
после

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

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

Re: перезапись кластера

Сообщение Kosist »

У Вас на первом скрине сплошь и рядом гонка состояний (race condition). Значения кластера, считанные при помощи локальной переменной скорее всего будут дефолтными, т.к. :labview: одновременно выполнит эти ноды. Вот и все объяснение. Нужно задавать порядок записи в явном виде, т.к. :labview: в таком случае не будет знать порядок выполнения функций, и выполнит их все и сразу. Почитайте здесь - https://zone.ni.com/reference/en-XX/hel ... nd_global/, тоже есть примеры.
Вложения
2020-04-02 15_01_11-Clipboard.png
Мы делили апельсин - много наших полегло...

kolmakowladimir
beginner
beginner
Сообщения: 17
Зарегистрирован: 26 сен 2018, 16:25
Репутация: 0
Версия LabVIEW: 16
Контактная информация:

Re: перезапись кластера

Сообщение kolmakowladimir »

Kosist, Я и не заметил при отладке, что он сначала инициализирует все локальные переменные на чтение, конечно он все перезаписал, он же инициализировал дефолтные значения) Странно, что это только сейчас проявилось, я очень давно этим пользуюсь, но спасибо, буду знать)

rushonda
advanced
advanced
Сообщения: 189
Зарегистрирован: 26 фев 2016, 06:31
Репутация: 0
Версия LabVIEW: 19
Контактная информация:

Re: перезапись кластера

Сообщение rushonda »

А зачем вообще столько раз использовать функцию Bundle By Name Function и плодить столько локальных переменных?
Разве нельзя один раз применить Bundle By Name Function - и просто расширить список переменных?

Artem.spb

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

Re: перезапись кластера

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

[quote=="rushonda"]Разве нельзя один раз применить Bundle By Name Function - и просто расширить список переменных?[/quote]
можно и нужно

Ответить

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