Когда вы используете ссылки на модель, чтобы разбить большую систему моделей на меньшие компоненты и подкомпоненты, можно создать словари данных для сегрегации design data. Проектные данные - это набор переменных рабочей области, которые модели используют для определения параметров блоков и характеристик сигналов. Основные сведения о словарях данных см. в разделе «Что такое словарь данных?».
Чтобы использовать этот основанный на компонентах подход к управлению данными, создайте общий словарь, содержащий общие данные, и отдельный словарь для каждого компонента, который содержит данные, необходимые этому компоненту.
В этом примере показано, как разделить данные проекта на словари. Когда вы заканчиваете, каждый компонент в системе имеет словарь, и ссылки на словарь позволяют компонентам совместно использовать данные.
Перейдите к папке
(откройте).matlabroot/ help/toolbox/simulink/examples
Скопируйте эти файлы в папку с возможностью записи:
ProjectData_Contr.mat
ProjectData_ContrSub1.mat
ProjectData_ContrSub2.mat
ProjectData_ContrSubs.mat
ProjectData_Plant.mat
ProjectData_System.mat
ex_SystemModel
ex_PlantComp_Lvl1
ex_PlantComp_Lvl2
ex_ContrComp
ex_ContrComp_Sub1_Lvl1
ex_ContrComp_Sub1_Lvl2
ex_ContrComp_Sub2_Lvl1
ex_ContrComp_Sub2_Lvl2
Загрузите MAT-файлы, чтобы создать проектные данные в базовом рабочем пространстве.
Откройте пример модели ex_SystemModel. Эта модель находится в верхней части иерархии ссылок, которая включает другие модели примера.
В модели обновите схему. Каждый сигнал шины в модели использует Simulink.Bus объект как тип данных. Объекты, SensorBus и CtrlBus, находятся в базовом рабочем пространстве.
Ссылка на модели ex_PlantComp_Lvl1 и ex_ContrComp используйте объекты шины для входов и выходов корневого уровня, что означает, что компоненты объекта и контроллера совместно используют объекты.
В базовом рабочем пространстве дважды кликните Simulink.NumericType объект с именем FloatType. Сигналы, параметры и другие элементы данных в компоненте контроллера используют этот тип разделяемых данных.
На панели Model Hierarchy Model Explorer разверните узел ex_SystemModel.
Нажмите на Configurations узел. На панели Contents узел Reference to SimConfigSet появляется. SimConfigSet является Simulink.ConfigSet объект в базовом рабочем пространстве. Чтобы сохранить однородность параметров конфигурации для симуляции, все модели в иерархии см. SimConfigSet.
Щелкните правой кнопкой мыши узел Controller (ex_ContrComp) и выберите Open.
На панели Model Hierarchy Model Explorer разверните новый узел ex_ContrComp. Нажмите на Configurations узел.
На панели Contents узел Reference to CodeGenConfigSet появляется. CodeGenConfigSet является Simulink.ConfigSet объект в базовом рабочем пространстве. Чтобы сохранить однородность параметров конфигурации для генерации кода, модели в компоненте контроллера относятся к CodeGenConfigSet. Модели в компоненте объекта управления не используют CodeGenConfigSet.
На панели Model Hierarchy выберите Base Workspace. На панели Contents щелкните правой кнопкой мыши переменную diff и выберите Find Where Used. В диалоговом окне Select a system выберите ex_SystemModel и нажмите OK. Если вы видите сообщение об обновлении схемы, нажмите OK.
На панели Contents значение переменной diff используется блоками Constant в моделях ex_ContrComp_Sub1_Lvl1 и ex_ContrComp_Sub1_Lvl2, которые составляют первый подкомпонент контроллера. Точно так же другие модели в иерархии совместно используют переменные базовые рабочие пространства coeff, init, mu, и rho.
Таблица показывает модели, которые совместно используют каждую переменную в базовом рабочем пространстве.
| Имя переменной | Модели с использованием переменной | Возможности совместного использования |
|---|---|---|
CtrlBus | Модели верхнего уровня в компонентах объекта управления и контроллера | Глобальное совместное использование всей системы |
SensorBus | Модели верхнего уровня в компонентах объекта управления и контроллера | Глобальное совместное использование всей системы |
SimConfigSet | Все модели в иерархии | Глобальное совместное использование всей системы |
rho | ex_PlantComp_Lvl2 , ex_ContrComp_Sub1_Lvl2, и ex_ContrComp_Sub2_Lvl2 | Глобальное совместное использование всей системы |
mu | ex_PlantComp_Lvl1 и ex_PlantComp_Lvl2 | Разделяется моделями в компоненте объекта управления |
FloatType | Все модели в компоненте контроллера | Общий для компонента контроллера и подкомпонентов |
CodeGenConfigSet | Все модели в компоненте контроллера | Общий для компонента контроллера и подкомпонентов |
init | ex_ContrComp_Sub1_Lvl2 и ex_ContrComp_Sub2_Lvl1 | Общие подкомпоненты контроллера |
diff | ex_ContrComp_Sub1_Lvl1 и ex_ContrComp_Sub1_Lvl2 | Разделяется моделями в первом подкомпоненте контроллера |
coeff | ex_ContrComp_Sub2_Lvl1 и ex_ContrComp_Sub2_Lvl2 | Разделяется моделями во втором подкомпоненте контроллера |
Предположим, что отдельные команды разработчиков поддерживают компонент объекта управления и компоненты контроллера. Можно использовать словари данных для хранения и расширения общих проектных данных.
Создайте общий словарь глобальных данных, содержащий данные, совместно используемые всей системой в глобальном масштабе.
В Model Explorer выберите File > New > Data Dictionary.
Установите имя нового словаря равным GlobalShare и нажмите Save.
На панели Model Hierarchy щелкните правой кнопкой мыши по GlobalShareУзлом и выберите Show Empty Sections.
На панели Model Hierarchy выберите Base Workspace. На панели Contents выберите проектные данные, которые являются глобально общими для всей системы: CtrlBus, SensorBus, и rho.
Щелкните правой кнопкой мыши и выберите Copy.
На панели Model Hierarchy щелкните правой кнопкой мыши по Design Data узел под GlobalShare и выберите Paste.
Точно так же скопируйте SimConfigSet из Base Workspace и копировать в Configurations узел под GlobalShare.
Создайте словарь данных для данных, совместно используемых моделями в компоненте Plant. Добавьте ссылку из этого словаря в общий глобальный словарь.
В Model Explorer выберите File > New > Data Dictionary.
Установите имя нового словаря равным Plant и нажмите Save.
На панели Model Hierarchy выберите узел Plant. На панели Диалоговое окно, в разделе Referenced Dictionaries, нажмите Add.
Дважды кликните GlobalShare.sldd.
На панели Model Hierarchy щелкните правой кнопкой мыши узел Plant и выберите Save Changes.
Соедините компонент Объекта с его словарем компонентов, затем перенесите данные, общие для моделей в Объект компоненте, из базового рабочего пространства в словарь.
Откройте модель ex_PlantComp_Lvl1.
В модели обновите схему.
Если в Diagnostic View отображается ошибка для нескольких несогласованных определений SimConfigSet, выберите Delete others рядом с GlobalShare образец. Это исправление сохраняет определение в GlobalShare словарь и удаляет другие определения, которые могут быть видны в модели.
На вкладке Modeling, под Design, нажмите Link to Data Dictionary.
В диалоговом окне нажмите кнопку Browse.
Дважды кликните Plant.sldd.
В диалоговом окне Model Properties нажмите Apply. Щелкните Change all models в ответ на сообщение о связывании ссылочных моделей.
В диалоговом окне Model Properties нажмите Migrate data.
В диалоговом окне Миграция данных выберите Include data from referenced models и нажмите Migrate.
(Необязательно) В диалоговом окне Model Properties снимите Enable model access to base workspace.
Удалите предыдущий метод загрузки данных моделей. В диалоговом окне Model Properties на вкладке Callbacks очистите PreLoadFcn для модели.
Нажмите OK.
Создайте словарь данных, который содержит данные, общие для моделей в компоненте контроллера. Этот словарь может также ссылаться на общий глобальный словарь.
В Model Explorer выберите File > New > Data Dictionary.
Установите имя нового словаря равным Controller и нажмите Save.
На панели Model Hierarchy выберите узел Controller. На панели Диалоговое окно, в разделе Referenced Dictionaries, нажмите Add.
Дважды кликните GlobalShare.sldd.
На панели Model Hierarchy щелкните правой кнопкой мыши узел Controller и выберите Save Changes.
Соедините компонент Контроллера с его словарем компонентов, затем перенесите данные, общие для моделей в Контроллер компоненте, из базового рабочего пространства в словарь.
Откройте модель ex_ContrComp.
Если в Diagnostic View отображается ошибка для нескольких несогласованных определений SimConfigSet, выберите Delete others рядом с GlobalShare образец. Это исправление сохраняет определение в GlobalShare словарь и удаляет другие определения, которые могут быть видны в модели.
На вкладке Modeling, под Design, нажмите Link to Data Dictionary.
В диалоговом окне нажмите кнопку Browse.
Дважды кликните Controller.sldd.
В диалоговом окне Model Properties нажмите Apply. Щелкните Change all models в ответ на сообщение о связывании ссылочных моделей.
В диалоговом окне Model Properties нажмите Migrate data.
В диалоговом окне Миграция данных выберите Include data from referenced models и нажмите Migrate.
(Необязательно) В диалоговом окне Model Properties снимите Enable model access to base workspace.
Удалите предыдущий метод загрузки данных моделей. В диалоговом окне Model Properties на вкладке Callbacks очистите PreLoadFcn для модели.
Нажмите OK.
Наконец, привяжите верхнюю модель к глобальному словарю.
Откройте модель ex_SystemModel.
На вкладке Modeling, под Design, нажмите Link to Data Dictionary.
В диалоговом окне нажмите кнопку Browse.
Дважды кликните GlobalShare.sldd.
В диалоговом окне Model Properties нажмите OK. Щелкните Change this model only в ответ на сообщение о связывании ссылочных моделей.
На Model Hierarchy панели Model Explorer выберите узел словаря Plant. На панели Contents, чтобы просмотреть содержимое Plant.sldd, нажмите Show Current System and Below.
Появится содержимое разделов
Проекта Данных и Строений.

Точно так же просмотрите содержимое Controller.sldd.

В DataSource столбце показаны переменные и объекты, которые хранятся в каждом словаре.
Все глобально общие переменные, такие как CtrlBus и SensorBus, проживать в GlobalShare.sldd. Переменная init, которые разделяют оба подкомпонента контроллера, находится в Controller.sldd.
Если группа разработчиков, назначенная компоненту контроллера, должна вносить изменения в глобально общие переменные, они получают доступ к GlobalShare файл словаря. Точно так же, если команда должна внести изменения в переменную initони должны получить доступ к Controller файл словаря.
Чтобы просмотреть весь словарь и иерархию модели, выполните анализ зависимостей.
Откройте сохраненную модель ex_SystemModel.
На вкладке Modeling, в разделе Design, нажмите Dependency Analyzer.

The системной модели, ex_SystemModel, связана со словарем GlobalShare.sldd. Каждый из компонентов объекта и контроллера связан с отдельным словарем. Для доступа к разделяемым данным словари компонентов ссылаются на словарь GlobalShare.sldd. Эти словари образуют иерархию ссылок.
Чтобы узнать, как модели в иерархии моделей-ссылок совместно используют данные, используйте следующие методы:
В открытой модели на вкладке Моделирование выберите Find > Find Ref Variables. В Model Explorer отображаются переменные, которые использует модель, а также переменные, которые используют ссылки на модели. Затем можно щелкнуть правой кнопкой мыши переменную и выбрать Find Where Used, чтобы отобразить все модели, которые используют переменную. Для получения дополнительной информации см. «Редактирование и управление переменными рабочей области при помощи Model Explorer».
В командной строке используйте функцию Simulink.findVars для определения переменных, используемых моделью. Затем можно использовать функцию intersect для определения переменных используются две модели, компоненты или подкомпоненты.