Если требуется использовать одну и ту же настройку конфигурации для многих моделей, можно написать сценарий для программной настройки каждой модели одним и тем же способом. Сценарий можно использовать для архивирования и сравнения настроек конфигурации, используемых моделями.
В этом примере показаны три различных способа программной настройки конфигурации модели:
Изменение существующего активного набора конфигурации модели
Создание и редактирование нового набора конфигурации в модели
Создание ссылки на конфигурацию, указывающей на автономный набор конфигурации
Для этого примера используйте модель 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');