При использовании ссылок на модели для разделения большой системы моделей на более мелкие компоненты и подкомпоненты можно создать словари данных для разделения данных конструкции. Проектные данные - это набор переменных рабочего пространства, которые используются моделями для задания параметров блока и характеристик сигнала. Основные сведения о словарях данных см. в разделе Что такое словарь данных?.
Чтобы использовать этот компонентный подход к управлению данными, создайте общий словарь, содержащий общие данные, и отдельный словарь для каждого компонента, содержащий данные, необходимые этому компоненту.
В этом примере показано, как разбить проектные данные на словари. По завершении каждый компонент в системе имеет словарь, а ссылки на словари позволяют компонентам совместно использовать данные.
Перейти к папке
(открыто).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. Сигналы, параметры и другие элементы данных в компоненте контроллера используют этот общий тип данных.
На панели «Иерархия моделей» обозревателя моделей разверните узел ex_SystemModel.
Щелкните значок Configurations узел. На панели «Содержимое» узел Reference to SimConfigSet появляется. SimConfigSet является Simulink.ConfigSet в базовой рабочей области. Чтобы сохранить однородность параметров конфигурации для моделирования, все модели в иерархии см. в разделе SimConfigSet.
Щелкните узел правой кнопкой мыши Controller (ex_ContrComp) и выберите Открыть.
На панели «Иерархия моделей» проводника моделей разверните новый узел. ex_ContrComp. Щелкните значок Configurations узел.
На панели «Содержимое» узел Reference to CodeGenConfigSet появляется. CodeGenConfigSet является Simulink.ConfigSet в базовой рабочей области. Для поддержания однородности параметров конфигурации при генерации кода модели в компоненте контроллера см. CodeGenConfigSet. Модели в компоненте завода не используются CodeGenConfigSet.
На панели Иерархия модели (Model Hierarchy) выберите Базовая рабочая область (Base Workspace) На панели «Содержимое» щелкните правой кнопкой мыши переменную. diff и выберите «Найти используемое». В диалоговом окне «Выбор системы» выберите ex_SystemModel и нажмите кнопку OK. Если появится сообщение об обновлении схемы, нажмите кнопку OK.
На панели «Содержимое» переменная 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 | Совместно используется моделями во втором подкомпоненте контроллера |
Предположим, что отдельные команды разработчиков поддерживают компонент завода и компоненты контроллера. Словари данных можно использовать для хранения общих проектных данных.
Создайте общий словарь глобальных данных, содержащий данные, совместно используемые всей системой.
В обозревателе моделей выберите «Файл» > «Создать» > «Словарь данных».
Задать имя нового словаря как GlobalShare и нажмите кнопку «Сохранить».
На панели Иерархия модели (Model Hierarchy) щелкните правой кнопкой мыши значок GlobalShareи выберите «Показать пустые разделы».
На панели Иерархия модели (Model Hierarchy) выберите Базовая рабочая область (Base Workspace). На панели Содержимое (Contents) выберите данные конструкции, совместно используемые всей системой: CtrlBus, SensorBus, и rho.
Щелкните правой кнопкой мыши и выберите «Копировать».
На панели Иерархия модели (Model Hierarchy) щелкните правой кнопкой мыши значок Design Data узел под GlobalShare и выберите Вставить (Paste).
Аналогично, копировать SimConfigSet из базовой рабочей области и скопировать в Configurations узел под GlobalShare.
Создайте словарь данных для данных, совместно используемых моделями в компоненте Завод. Добавьте ссылку из этого словаря в общий глобальный словарь.
В обозревателе моделей выберите «Файл» > «Создать» > «Словарь данных».
Задать имя нового словаря как Plant и нажмите кнопку «Сохранить».
На панели Иерархия модели (Model Hierarchy) выберите узел Plant. В диалоговом окне в разделе Словари ссылок нажмите кнопку Добавить.
Двойной щелчок GlobalShare.sldd.
На панели Иерархия модели (Model Hierarchy) щелкните узел правой кнопкой мыши. Plant и выберите Сохранить изменения.
Свяжите компонент Plant со словарем компонентов, а затем перенесите данные, совместно используемые моделями в компоненте Plant, из базового рабочего пространства в словарь.
Открытие модели ex_PlantComp_Lvl1.
В модели обновите схему.
Если в диагностическом представлении отображается ошибка для нескольких несогласованных определений SimConfigSet, выберите Удалить другие рядом с GlobalShare экземпляр. Это исправление сохраняет определение в GlobalShare и удаляет другие определения, которые могут быть видны модели.
На вкладке «Моделирование» в разделе «Проект» выберите «Связать с словарем данных».
В диалоговом окне нажмите кнопку Обзор.
Двойной щелчок Plant.sldd.
В диалоговом окне Свойства модели (Model Properties) нажмите кнопку Применить (Apply). Щелкните Изменить все модели (Change all models) в ответ на сообщение о связывании ссылочных моделей.
В диалоговом окне Свойства модели (Model Properties) щелкните Перенос данных (Migrate data).
В диалоговом окне Перенос данных (Migrate Data) выберите Включить данные из ссылочных моделей (Include data from referenced models), а затем щелкните Перенос (Migrate)
(Необязательно) В диалоговом окне «Свойства модели» снимите флажок «Включить доступ модели к базовому рабочему пространству».
Удалите предыдущий метод загрузки данных модели. В диалоговом окне Свойства модели (Model Properties) на вкладке Обратные вызовы (Callbacks) снимите флажок PreLoadFcn для модели.
Нажмите кнопку ОК.
Создайте словарь данных, содержащий данные, совместно используемые моделями в компоненте контроллера. Этот словарь может также ссылаться на общий глобальный словарь.
В обозревателе моделей выберите «Файл» > «Создать» > «Словарь данных».
Задать имя нового словаря как Controller и нажмите кнопку «Сохранить».
На панели Иерархия модели (Model Hierarchy) выберите узел Controller. В диалоговом окне в разделе Словари ссылок нажмите кнопку Добавить.
Двойной щелчок GlobalShare.sldd.
На панели Иерархия модели (Model Hierarchy) щелкните узел правой кнопкой мыши. Controller и выберите Сохранить изменения.
Свяжите компонент Controller с его словарем компонентов, а затем перенесите данные, совместно используемые моделями в компоненте Controller, из базового рабочего пространства в словарь.
Открытие модели ex_ContrComp.
Если в диагностическом представлении отображается ошибка для нескольких несогласованных определений SimConfigSet, выберите Удалить другие рядом с GlobalShare экземпляр. Это исправление сохраняет определение в GlobalShare и удаляет другие определения, которые могут быть видны модели.
На вкладке «Моделирование» в разделе «Проект» выберите «Связать с словарем данных».
В диалоговом окне нажмите кнопку Обзор.
Двойной щелчок Controller.sldd.
В диалоговом окне Свойства модели (Model Properties) нажмите кнопку Применить (Apply). Щелкните Изменить все модели (Change all models) в ответ на сообщение о связывании ссылочных моделей.
В диалоговом окне Свойства модели (Model Properties) щелкните Перенос данных (Migrate data).
В диалоговом окне Перенос данных (Migrate Data) выберите Включить данные из ссылочных моделей (Include data from referenced models), а затем щелкните Перенос (Migrate)
(Необязательно) В диалоговом окне «Свойства модели» снимите флажок «Включить доступ модели к базовому рабочему пространству».
Удалите предыдущий метод загрузки данных модели. В диалоговом окне Свойства модели (Model Properties) на вкладке Обратные вызовы (Callbacks) снимите флажок PreLoadFcn для модели.
Нажмите кнопку ОК.
Наконец, свяжите верхнюю модель с глобальным словарем.
Открытие модели ex_SystemModel.
На вкладке «Моделирование» в разделе «Проект» выберите «Связать с словарем данных».
В диалоговом окне нажмите кнопку Обзор.
Двойной щелчок GlobalShare.sldd.
В диалоговом окне «Свойства модели» нажмите кнопку «ОК». Нажмите кнопку «Изменить эту модель» только в ответ на сообщение о связывании ссылочных моделей.
На панели «Иерархия моделей» обозревателя моделей выберите узел словаря «Завод». На панели «Содержимое» для просмотра содержимого Plant.slddщелкните Показать текущую систему (Show Current System) и ниже (Below).
Появится содержимое
разделов Данные конструкции (Design Data) и Конфигурации (Configuration).

Аналогично, просмотрите содержимое Controller.sldd.

В столбце источника данных отображаются переменные и объекты, хранящиеся в каждом словаре.
Все глобальные общие переменные, такие как CtrlBus и SensorBus, проживание в GlobalShare.sldd. Переменная init, которые оба компонента контроллера совместно используют, находятся в Controller.sldd.
Если группа разработчиков, назначенная компоненту контроллера, должна внести изменения в глобальные общие переменные, они получают доступ к GlobalShare файл словаря. Аналогично, если коллектив должен внести изменения в переменную init, они должны получить доступ к Controller файл словаря.
Чтобы просмотреть весь словарь и иерархию модели, выполните анализ зависимостей.
Откройте сохраненную модель ex_SystemModel.
На вкладке Моделирование (Modeling) в разделе Конструкция (Design) щелкните Анализатор зависимостей (Dependency Analyzer).

Модель системы, ex_SystemModel, связан со словарем GlobalShare.sldd. Компонент завода и компонент контроллера связаны с отдельным словарем. Для доступа к общим данным словари компонентов ссылаются на словарь GlobalShare.sldd. Эти словари образуют справочную иерархию.
Чтобы узнать, как модели в ссылочной иерархии модели совместно используют данные, используйте следующие методы.
В открытой модели на вкладке Моделирование (Modeling) выберите Найти (Find) > Найти переменные привязки (Find Ref Variables). В обозревателе моделей отображаются переменные, используемые моделью, а также переменные, используемые ссылочными моделями. Затем можно щелкнуть переменную правой кнопкой мыши и выбрать Найти где используется (Find Where Used), чтобы отобразить все модели, которые используют переменную. Дополнительные сведения см. в разделе Правка и управление переменными рабочей области с помощью проводника моделей.
В командной строке используйте функцию Simulink.findVars для определения переменных, используемых моделью. Затем можно использовать функцию. intersect для определения переменных, совместно используемых двумя моделями, компонентами или подкомпонентами.