Когда вы используете ссылки на модель, чтобы разбить большую систему моделей на меньшие компоненты и подкомпоненты, можно создать словари данных для сегрегации 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
для определения переменных используются две модели, компоненты или подкомпоненты.