Данные о разделе для иерархии модели - ссылки Используя словари данных

Когда вы используете ссылку модели, чтобы повредить большую систему моделей на меньшие компоненты и субкомпоненты, можно создать словари данных, чтобы выделять design data. Данные проектирования являются набором переменных рабочей области что использование моделей, чтобы задать параметры блоков и характеристики сигнала. Для основной информации о словарях данных смотрите то, Что Словарь Данных?.

Чтобы проявить этот компонентно-ориентированный подход к управлению данными, создайте разделяемый словарь, который содержит общие данные и отдельный словарь для каждого компонента, который содержит данные, необходимые тому компоненту.

Создайте словарь для каждого компонента

В этом примере показано, как разделить данные проектирования в словари. Когда вы закончили, каждый компонент в системе имеет словарь, и ссылки словаря позволяют компонентам осуществлять обмен данными.

Исследуйте иерархию модели в качестве примера

  1. Перейдите к папке matlabroot/help/toolbox/simulink/examples открытый.

  2. Скопируйте эти файлы в перезаписываемую папку:

    • 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

  3. Загрузите MAT-файлы, чтобы создать данные проектирования в базовом рабочем пространстве.

  4. Откройте модель ex_SystemModel в качестве примера. Эта модель наверху ссылочной иерархии, которая включает другие модели в качестве примера.

  5. В модели обновите схему. Каждый сигнал шины в модели использует Simulink.Bus возразите как тип данных. Объекты, SensorBus и CtrlBus, находятся в базовом рабочем пространстве.

    Модели ex_PlantComp_Lvl1, на которые ссылаются, и ex_ContrComp используйте объекты шины во вводах и выводах корневого уровня, что означает объект, и компоненты контроллера совместно используют объекты.

  6. В базовом рабочем пространстве дважды кликните Simulink.NumericType возразите названному FloatType. Сигналы, параметры и другие элементы данных в компоненте контроллера используют этот тип разделяемых данных.

  7. В панели Model Hierarchy Model Explorer расширьте узел ex_SystemModel.

    Нажмите Configurations узел. В панели Contents, узел Reference to SimConfigSet появляется. SimConfigSet Simulink.ConfigSet объект в базовом рабочем пространстве. Чтобы обеспечить однородность параметра конфигурации для симуляции, все модели в иерархии относятся к SimConfigSet.

  8. Щелкните правой кнопкой по узлу Controller (ex_ContrComp) и выберите Open.

  9. В панели Model Hierarchy Model Explorer расширьте новый узел ex_ContrComp. Нажмите Configurations узел.

    В панели Contents, узел Reference to CodeGenConfigSet появляется. CodeGenConfigSet Simulink.ConfigSet объект в базовом рабочем пространстве. Чтобы обеспечить однородность параметра конфигурации для генерации кода, модели в компоненте контроллера относятся к CodeGenConfigSet. Модели в компоненте объекта не используют CodeGenConfigSet.

  10. В панели 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Все модели в иерархииСовместно использованный глобально целой системой
rhoex_PlantComp_Lvl2 , ex_ContrComp_Sub1_Lvl2, и ex_ContrComp_Sub2_Lvl2Совместно использованный глобально целой системой
muex_PlantComp_Lvl1 и ex_PlantComp_Lvl2Совместно использованный моделями в компоненте объекта
FloatTypeВсе модели в компоненте контроллераСовместно использованный компонентом контроллера и субкомпонентами
CodeGenConfigSetВсе модели в компоненте контроллераСовместно использованный компонентом контроллера и субкомпонентами
initex_ContrComp_Sub1_Lvl2 и ex_ContrComp_Sub2_Lvl1Совместно использованный субкомпонентами контроллера
diffex_ContrComp_Sub1_Lvl1 и ex_ContrComp_Sub1_Lvl2Совместно использованный моделями в первом субкомпоненте контроллера
coeffex_ContrComp_Sub2_Lvl1 и ex_ContrComp_Sub2_Lvl2Совместно использованный моделями во втором субкомпоненте контроллера

Предположим, что отдельные команды разработчиков обеспечивают компонент объекта и компоненты контроллера. Можно использовать словари данных, чтобы сохранить и определить объем разделяемых данных проектирования.

Создайте разделяемый глобальный словарь

Создайте разделяемый словарь глобальных данных, который содержит данные, совместно использованные глобально целой системой.

  1. В Model Explorer выберите File> New> Data Dictionary.

  2. Определите новое имя словаря к GlobalShare и нажмите Save.

  3. В панели Model Hierarchy щелкните правой кнопкой по GlobalShareузел и выбирает Show Empty Sections.

  4. В панели Model Hierarchy выберите Base Workspace. В панели Contents выберите данные проектирования, которые совместно используются глобально целой системой: CtrlBus, SensorBus, и rho.

  5. Щелкните правой кнопкой и выберите Copy.

  6. В панели Model Hierarchy щелкните правой кнопкой по Design Data узел под GlobalShare и выберите Paste.

  7. Точно так же скопируйте SimConfigSet от Base Workspace и копии к Configurations узел под GlobalShare.

Создайте словарь для компонента объекта

Создайте словарь данных для данных, совместно использованных моделями в компоненте Объекта. Добавьте ссылку от этого словаря до разделяемого глобального словаря.

  1. В Model Explorer выберите File> New> Data Dictionary.

  2. Определите новое имя словаря к Plant и нажмите Save.

  3. В панели Model Hierarchy выберите узел Plant. В Диалоговой панели, под Referenced Dictionaries, нажимают Add.

  4. Дважды кликните GlobalShare.sldd.

  5. В панели Model Hierarchy щелкните правой кнопкой по узлу Plant и выберите Save Changes.

Соедините компонент объекта со словарем и переместите данные

Соединитесь компонент Объекта к его словарю компонента затем перемещают данные, совместно использованные моделями в компоненте Объекта от базового рабочего пространства до словаря.

  1. Откройте модель ex_PlantComp_Lvl1.

  2. В модели обновите схему.

  3. Если Диагностическое Представление отображает ошибку для нескольких противоречивых определений SimConfigSet, выберите Delete others рядом с GlobalShare экземпляр. Эта фиксация сохраняет определение в GlobalShare словарь и удаляет другие определения, которые видны модели.

  4. Во вкладке Modeling, под Design, нажимают Link to Data Dictionary.

  5. В диалоговом окне нажмите Browse.

  6. Дважды кликните Plant.sldd.

  7. В диалоговом окне Model Properties нажмите Apply. Нажмите Change all models в ответ на сообщение о соединении моделей, на которые ссылаются.

  8. В диалоговом окне Model Properties нажмите Migrate data.

  9. В диалоговом окне Migrate Data выберите Include data from referenced models и затем нажмите Migrate.

  10. (Необязательно) В диалоговом окне Model Properties, очистите Enable model access to base workspace.

  11. Удалите предыдущий метод для загрузки данных модели. В диалоговом окне Model Properties, на вкладке Callbacks, очищают PreLoadFcn для модели.

  12. Нажмите OK.

Создайте словарь для компонента контроллера

Создайте словарь данных, который содержит данные, совместно использованные моделями в компоненте контроллера. Этот словарь может также сослаться на разделяемый глобальный словарь.

  1. В Model Explorer выберите File> New> Data Dictionary.

  2. Определите новое имя словаря к Controller и нажмите Save.

  3. В панели Model Hierarchy выберите узел Controller. В Диалоговой панели, под Referenced Dictionaries, нажимают Add.

  4. Дважды кликните GlobalShare.sldd.

  5. В панели Model Hierarchy щелкните правой кнопкой по узлу Controller и выберите Save Changes.

Соедините компонент контроллера со словарем и переместите данные

Соединитесь компонент Контроллера к его словарю компонента затем перемещают данные, совместно использованные моделями в компоненте Контроллера от базового рабочего пространства до словаря.

  1. Откройте модель ex_ContrComp.

  2. Если Диагностическое Представление отображает ошибку для нескольких противоречивых определений SimConfigSet, выберите Delete others рядом с GlobalShare экземпляр. Эта фиксация сохраняет определение в GlobalShare словарь и удаляет другие определения, которые видны модели.

  3. Во вкладке Modeling, под Design, нажимают Link to Data Dictionary.

  4. В диалоговом окне нажмите Browse.

  5. Дважды кликните Controller.sldd.

  6. В диалоговом окне Model Properties нажмите Apply. Нажмите Change all models в ответ на сообщение о соединении моделей, на которые ссылаются.

  7. В диалоговом окне Model Properties нажмите Migrate data.

  8. В диалоговом окне Migrate Data выберите Include data from referenced models и затем нажмите Migrate.

  9. (Необязательно) В диалоговом окне Model Properties, очистите Enable model access to base workspace.

  10. Удалите предыдущий метод для загрузки данных модели. В диалоговом окне Model Properties, на вкладке Callbacks, очищают PreLoadFcn для модели.

  11. Нажмите OK.

Соедините систему с глобальным словарем

Наконец, соедините топ-модель с глобальным словарем.

  1. Откройте модель ex_SystemModel.

  2. Во вкладке Modeling, под Design, нажимают Link to Data Dictionary.

  3. В диалоговом окне нажмите Browse.

  4. Дважды кликните GlobalShare.sldd.

  5. В диалоговом окне 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 файл словаря.

Смотрите иерархию словаря

Чтобы просмотреть целый словарь и иерархию модели, выполните анализ зависимостей.

  1. Откройте свою сохраненную модель ex_SystemModel.

  2. На вкладке Modeling, в разделе Design, нажимают Dependency Analyzer.

Системная модель, ex_SystemModel, соединяется со словарем GlobalShare.sldd. Компонент объекта и компонент контроллера каждый соединяются с отдельным словарем. Чтобы получить доступ к разделяемым данным, словари компонента ссылаются на словарь GlobalShare.sldd. Эти словари формируют ссылочную иерархию.

Стратегии обнаружить разделяемые данные

Чтобы изучить, как модели в иерархии модели - ссылки осуществляют обмен данными, используйте эти методы:

  • В открытой модели, на вкладке Modeling, выбирают Find> Find Ref Variables. Model Explorer отображает переменные, которые модель использует, а также переменные, которые сослались на использование моделей. Можно затем щелкнуть правой кнопкой по переменной и выбрать Find Where Used, чтобы отобразить все модели, которые используют переменную. Для получения дополнительной информации смотрите Редактирование и Управляйте Переменными Рабочей области при помощи Model Explorer.

  • В командной строке используйте функциональный Simulink.findVars чтобы определить переменные, модель использует. Можно затем использовать функциональный intersect определить переменные две модели, компоненты или доля субкомпонентов.

Похожие темы