Мне нужна помощь с 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, инициализировать еще раз?
Большое спасибо