Когда вы используете ссылку модели, чтобы повредить большую систему моделей на меньшие компоненты и субкомпоненты, можно создать словари данных, чтобы выделять 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
в качестве примера. Эта модель наверху ссылочной иерархии, которая включает другие модели в качестве примера.
На вкладке Modeling выберите Compare> Dependencies> 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
используется блоками 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
.
Создайте словарь данных для данных, совместно использованных моделями в компоненте Объекта. Добавьте ссылку от этого словаря до разделяемого глобального словаря.
В 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
словарь и удаляет другие определения, которые видны модели.
Во вкладке Modeling, под Design, нажимают 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
словарь и удаляет другие определения, которые видны модели.
Во вкладке Modeling, под Design, нажимают 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
.
Во вкладке Modeling, под Design, нажимают 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
, они должны получить доступ к Controller
файл словаря.
Чтобы просмотреть целый словарь и иерархию модели, можно выполнить анализ зависимостей в проекте.
Откройте свою сохраненную модель ex_SystemModel
. На вкладке Simulation выберите New> Project> New Project from this Model.
Задайте имя для проекта в поле Project name. Нажмите Create.
В проекте нажмите Dependency Analysis. Нажмите Analyze.
Системная модель, ex_SystemModel
, соединяется со словарем GlobalShare.sldd
. Компонент объекта и компонент контроллера каждый соединяются с отдельным словарем. Чтобы получить доступ к разделяемым данным, словари компонента ссылаются на словарь GlobalShare.sldd
. Эти словари формируют ссылочную иерархию.
Чтобы изучить, как модели в иерархии модели - ссылки осуществляют обмен данными, используйте эти методы:
В открытой модели, на вкладке Modeling, выбирают Find> Find Ref Variables. Model Explorer отображает переменные, которые модель использует, а также переменные, которые сослались на использование моделей. Можно затем щелкнуть правой кнопкой по переменной и выбрать Find Where Used, чтобы отобразить все модели, которые используют переменную. Для получения дополнительной информации смотрите Редактирование и Управляйте Переменными Рабочей области при помощи Model Explorer.
В командной строке используйте функциональный Simulink.findVars
чтобы определить переменные, модель использует. Можно затем использовать функциональный intersect
определить переменные две модели, компоненты или доля субкомпонентов.