Когда вы используете ссылку модели, чтобы повредить большую систему моделей на меньшие компоненты и субкомпоненты, можно создать словари данных, чтобы выделять 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
в качестве примера. Эта модель наверху ссылочной иерархии, которая включает другие модели в качестве примера.
Выберите Analysis> Model Dependencies> Model Dependency Viewer> Models Only. Иерархия модели - ссылки содержит системную модель, компонент объекта с двумя моделями и компонент контроллера. Компонент контроллера содержит два субкомпонента, каждый из которых состоят из двух моделей.
В модели обновите схему. Каждый сигнал шины в модели использует объект 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
используется блоками Константа в моделях 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
.
Создайте словарь данных для данных, совместно использованных моделями в компоненте Объекта. Добавьте ссылку от этого словаря до разделяемого глобального словаря.
В Model Explorer выберите File> New> Data Dictionary.
Определите новое имя словаря к Plant
и нажмите Save.
В панели Model Hierarchy выберите узел Plant
. В Диалоговой панели, под Referenced Dictionaries, нажимают Add.
Дважды кликните GlobalShare.sldd
.
В панели Model Hierarchy щелкните правой кнопкой по узлу Plant
и выберите Save Changes.
Соединитесь компонент Объекта к его словарю компонента затем перемещают данные, совместно использованные моделями в компоненте Объекта от базового рабочего пространства до словаря.
Откройте модель ex_PlantComp_Lvl1
.
В модели обновите схему.
Если Диагностическое Представление отображает ошибку для нескольких противоречивых определений SimConfigSet
, выберите Delete others рядом с экземпляром GlobalShare
. Эта фиксация сохраняет определение в словаре GlobalShare
и удаляет другие определения, которые видны модели.
Выберите File> Model Properties> Link to Data Dictionary.
В диалоговом окне нажмите Browse.
Дважды кликните Plant.sldd
.
В диалоговом окне Model Properties нажмите Apply. Нажмите Change all models в ответ на сообщение о соединении моделей, на которые ссылаются.
В диалоговом окне Model Properties нажмите Migrate data.
В диалоговом окне Migrate Data выберите Include data from referenced models и затем нажмите Migrate.
(Необязательно) В диалоговом окне Model Properties, очистите Enable 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
.
Если Диагностическое Представление отображает ошибку для нескольких противоречивых определений SimConfigSet
, выберите Delete others рядом с экземпляром GlobalShare
. Эта фиксация сохраняет определение в словаре GlobalShare
и удаляет другие определения, которые видны модели.
Выберите File> Model Properties> Link to Data Dictionary.
В диалоговом окне нажмите Browse.
Дважды кликните Controller.sldd
.
В диалоговом окне Model Properties нажмите Apply. Нажмите Change all models в ответ на сообщение о соединении моделей, на которые ссылаются.
В диалоговом окне Model Properties нажмите Migrate data.
В диалоговом окне Migrate Data выберите Include data from referenced models и затем нажмите Migrate.
(Необязательно) В диалоговом окне Model Properties, очистите Enable access to base workspace.
Удалите предыдущий метод для загрузки данных модели. В диалоговом окне Model Properties, на вкладке Callbacks, очищают PreLoadFcn
для модели.
Нажмите OK.
Наконец, соедините топ-модель с глобальным словарем.
Откройте модель ex_SystemModel
.
Выберите File> Model Properties> Link to Data Dictionary.
В диалоговом окне нажмите Browse.
Дважды кликните GlobalShare.sldd
.
В диалоговом окне Model Properties нажмите OK. Нажмите Change this model only в ответ на сообщение о соединении моделей, на которые ссылаются.
В панели Model Hierarchy Model Explorer выберите Объект узла словаря. В панели Contents, чтобы просмотреть содержимое Plant.sldd
, нажимают кнопку Show Current System and Below. Содержимое Данных проектирования и разделов Настроек появляется.
Точно так же просмотрите содержимое Controller.sldd
.
Столбец DataSource показывает переменные и возражает, что каждый словарь хранит.
Все глобально совместно используемые переменные, такие как CtrlBus
и SensorBus
, находятся в GlobalShare.sldd
. Переменная init
, который обе из доли субкомпонентов контроллера, находится в Controller.sldd
.
Если группа разработчиков, присвоенная компоненту контроллера, должна внести изменения в глобально совместно используемые переменные, они получают доступ к файлу словаря GlobalShare
. Точно так же, если команда должна внести изменения в переменную init
, они должны получить доступ к файлу словаря ContrShare
.
Чтобы просмотреть целый словарь и иерархию модели, можно выполнить анализ зависимостей в проекте.
Откройте свою сохраненную модель ex_SystemModel
. Выберите File> Project> Create Project from Model.
Задайте имя для проекта в поле Project name. Нажмите Create.
В проекте нажмите Dependency Analysis. Нажмите Analyze.
Системная модель, ex_SystemModel
, соединяется со словарем GlobalShare.sldd
. Компонент объекта и компонент контроллера каждый соединяются с отдельным словарем. Чтобы получить доступ к разделяемым данным, словари компонента ссылаются на словарь, GlobalShare.sldd
.These словари формирует ссылочную иерархию.
Чтобы изучить, как модели в иерархии модели - ссылки осуществляют обмен данными, используйте эти методы:
В открытой модели выберите Edit> Find Referenced Variables. Model Explorer отображает переменные, которые модель использует, а также переменные, которые сослались на использование моделей. Можно затем щелкнуть правой кнопкой по переменной и выбрать Find Where Used, чтобы отобразить все модели, которые используют переменную. Для получения дополнительной информации смотрите Редактирование и Управляйте Переменными Рабочей области при помощи Model Explorer.
В командной строке используйте функциональный Simulink.findVars
, чтобы определить переменные, которые использует модель. Можно затем использовать функциональный intersect
, чтобы определить переменные две модели, компоненты или доля субкомпонентов.