Автоматизация строения модели при помощи скрипта

Если вы хотите использовать ту же настройку строения для многих моделей, можно написать скрипт, чтобы программно сконфигурировать каждую модель одинаковым образом. Можно использовать скрипт для архивации и сравнения настроек строения, которые используют ваши модели.

В этом примере показаны три различных способа программной настройки строения вашей модели:

  • Отредактируйте существующий активный набор конфигурации модели

  • Создайте и отредактируйте новую конфигурацию модели в модели

  • Создайте ссылку на строение, которая указывает на отдельно стоящую конфигурацию модели

В данном примере используйте модель 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');

Похожие темы