Страница 1 из 1

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

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

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

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

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

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

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

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

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

Добавлено: 04 апр 2020, 21:15
Artem.spb
[quote=="rushonda"]Разве нельзя один раз применить Bundle By Name Function - и просто расширить список переменных?[/quote]
можно и нужно