Если вы хотите использовать ту же настройку строения для многих моделей, можно написать скрипт, чтобы программно сконфигурировать каждую модель одинаковым образом. Можно использовать скрипт для архивации и сравнения настроек строения, которые используют ваши модели.
В этом примере показаны три различных способа программной настройки строения вашей модели:
Отредактируйте существующий активный набор конфигурации модели
Создайте и отредактируйте новую конфигурацию модели в модели
Создайте ссылку на строение, которая указывает на отдельно стоящую конфигурацию модели
В данном примере используйте модель sldemo_mdlref_depgraph
.
model = 'sldemo_mdlref_depgraph';
open_system(model)
Чтобы манипулировать конфигурацией модели, связанным с моделью, используйте ConfigSet
объект, который представляет конфигурацию модели. В данном примере используйте строение, которая является активной для модели.
activeConfigObj = getActiveConfigSet(model);
get_param(activeConfigObj,'Name')
ans = 'Configuration'
Активное строение модели Configuration
. Чтобы увидеть текущие значения параметров в строении, используйте get_param
функции и ConfigSet
объект.
get_param(activeConfigObj,'StopTime')
ans = '2*24*60*60'
Переименуйте конфигурацию модели в UpdatedConfig
.
set_param(activeConfigObj,'Name','UpdatedConfig');
В данном примере установите время остановки 200
и измените тип решателя на решатель с переменным шагом.
set_param(activeConfigObj,'StopTime','200'); set_param(activeConfigObj,'SolverType','Variable-step');
Когда вы хотите изменить строение модели и сохранить исходные значения параметров ее активного строения, создайте и активируйте новую конфигурацию модели в модели. Чтобы создать другую конфигурацию модели, скопируйте существующую конфигурацию модели и присоедините копию к модели. Чтобы избежать конфликтов по совпадению имен при присоединении копии, либо переименуйте ее перед присоединением, либо установите allowRename
, необязательный третий аргумент attachConfigSet
, в true
.
В данном примере скопируйте активную конфигурацию модели. Переименуйте копию в ConfigCopy
и присоедините его к модели.
newConfigObj = copy(activeConfigObj); set_param(newConfigObj,'Name','ConfigCopy'); attachConfigSet(model, newConfigObj);
Когда вы присоединяете конфигурацию модели к модели, он неактивен. Неактивные строения можно управлять так же, как и активной конфигурацией модели. Чтобы использовать новое строение, активируйте ее для модели.
set_param(newConfigObj,'SolverType','Fixed-step'); setActiveConfigSet(model,'ConfigCopy'); activeConfigSet = getActiveConfigSet(model); get_param(activeConfigObj,'Name')
ans = 'UpdatedConfig'
Теперь, ConfigCopy
является активной конфигурацией модели.
Если вы хотите хранить конфигурацию модели вне вашей модели, создайте скрипт, который настраивает ссылку на строение в модели. Ссылка сохранена в модели и указывает на отдельно стоящую конфигурацию модели, который хранится либо в словаре данных Simulink, либо в базовом рабочем пространстве. Используйте отдельно стоящую конфигурацию модели и ссылки на строение, чтобы совместно использовать одно строение с несколькими моделями. Вы также можете использовать отдельно стоящую конфигурацию модели, когда хотите отредактировать строение, не меняя файл модели.
В данном примере сконфигурируйте модель vdp
для использования ссылки на строение. Во-первых, создайте свободную конфигурацию модели в базовом рабочем пространстве, скопировав активную конфигурацию модели модели. Отдельно стоящее строение является ConfigSet
объект, представленный переменной freeConfigSet
. Этот шаг можно пропустить, если требуется ссылаться на существующую отдельно стоящую конфигурацию модели.
model = 'vdp';
open_system(model)
freeConfigSet = copy(getActiveConfigSet(model));
Создайте строение ссылку. Чтобы указать ссылку на отдельно стоящее строение, установите SourceName
свойство к freeConfigSet
, переменная, которая представляет ваше строение. Новая ссылка является ConfigSetRef
объект, представленный переменной configRef
. Назовите ссылку vdpConfigRef
.
configRef = Simulink.ConfigSetRef; set_param(configRef,'SourceName','freeConfigSet') set_param(configRef,'Name','VdpConfigRef')
Присоедините строение ссылку к модели vdp
при помощи ConfigSetRef
объект. Можно присоединить ссылку только к одной модели. Чтобы использовать ссылку строения в модели, активируйте ее.
attachConfigSet('vdp',configRef); setActiveConfigSet('vdp','VdpConfigRef');
Теперь, когда вы меняете конфигурацию модели, который объект freeConfigSet
представляет, изменения применяются к модели.
Можно получить значения параметров в ссылке на строение при помощи get_param
. Однако вы не можете изменить значения параметров непосредственно в строение ссылке. Чтобы изменить значения, вы должны использовать ConfigSet
объект, который представляет ссылку на отдельно стоящую конфигурацию модели. Получите отдельно стоящую конфигурацию модели из ссылки на строение при помощи getRefConfigSet
способ.
referencedConfigObj = getRefConfigSet(configRef);
Теперь, referencedConfigObj
представляет ту же отдельно стоящую конфигурацию модели, на который ссылаются ваши модели. freeConfigSet
представляет также эту конфигурацию модели. Конфигурация модели используется для изменения значений параметров в ссылочной конфигурации модели. Эти изменения применяются к каждой модели, которая ссылается на строение.
set_param(referencedConfigObj,'SignalLogging','off'); set_param(referencedConfigObj,'StartTime','10');