Использование команды set_param приводит к ошибке «добавить / удалить вариантные блоки через обратные вызовы» - PullRequest
0 голосов
/ 06 апреля 2019

Мне нужна помощь с Simulink. Пожалуйста, извините за мой плохой английский.

Я создаю собственную библиотеку simulink. Я пытаюсь изменить параметр «BlockChoice» в зависимости от «Radiobutton», чтобы выбрать правильную гидравлическую модель, которую я хочу использовать.

Когда появляется изменение, я использую поле Callback / Initialization маски (я уже пробовал оба) в

set_param([gcb,'some subsystems'], 'BlockChoice', 'MyChoice')

, чтобы выбрать правильное поле моей «Настраиваемой подсистемы».

Когда я использую

get_param([gcb,'some subsystems'], 'BlockChoice')

новый выбор установлен правильно. Когда я запускаю симуляцию, simulink выдает мне ошибку

Your model tries to add/delete variant blocks through call-backs. With variant blocks we do not allow this change.

Самое смешное, что когда я вручную "смотрю" / перемещаюсь по всем маскам, до "Конфигурируемой подсистемы" и затем запускаю симуляцию, ошибки не возникает.

Я попробовал другой способ с

set_param([gcb,'firstChild'], 'someVariable', 'someValue')

функционирует для установки других параметров дочерних блоков, пока я не достигну моего последнего блока перед «Настраиваемой подсистемой», и только последний блок позволяет изменять значение «BlockChoice», но это не помогает.

Когда я перемещаюсь по дочерним блокам и захожу в свою «Настраиваемую подсистему» ​​с параметром «BlockChoice», я вижу, что simulink «отстает» и затем переключается на правильный выбор.

Я использую Matlab R2016a. Библиотека была также протестирована на R2014b и R2015a. Такие же проблемы.

Я пытался

set_param(gcs,'SimulationCommand','Update')

но моя модель начинает загружаться каждый раз, я что-то меняю в маске.

Любые идеи, как я могу сказать блок, после того, как я установил BlockChoice, инициализировать еще раз?

Большое спасибо

...