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

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

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

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

  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. Если в Diagnostic View отображается ошибка для нескольких несогласованных определений 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. В диалоговом окне Миграция данных выберите 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. Если в Diagnostic View отображается ошибка для нескольких несогласованных определений 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. В диалоговом окне Миграция данных выберите 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 выберите узел словаря Plant. На панели 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.

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

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

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

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

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

Похожие темы