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

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

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

  • Переместите все модели в иерархии целиком, чтобы использовать единственный словарь. Затем создайте отдельные словари, на которые ссылаются, чтобы организовать данные проектирования.

  • Инкрементно мигрируйте путем начала с моделей в нижней части иерархии. Используйте этот метод, если вы не можете переместить все модели целиком.

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

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

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

  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. Выберите Analysis> Model Dependencies> Model Dependency Viewer> Models Only. Иерархия модели - ссылки содержит системную модель, компонент завода с двумя моделями и компонент контроллера. Компонент контроллера содержит два субкомпонента, каждый из которых состоят из двух моделей.

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

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

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

  8. В Образцовой панели Иерархии модели Проводника расширьте узел ex_SystemModel.

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

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

  10. В Образцовой панели Иерархии модели Проводника расширьте новый узел ex_ContrComp. Расширьте Модель (ex_ContrComp_Sub1_Lvl1) узла.

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

  11. В панели Иерархии модели выберите Base Workspace. В панели Содержимого щелкните правой кнопкой по переменному diff и выберите Find Where Used. В Выборе системное диалоговое окно выберите ex_SystemModel и нажмите ОК. Если вы видите сообщение об обновлении схемы, нажимаете ОК.

    В панели Содержимого переменный diff используется блоками Константа в моделях 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. В образцовом ex_SystemModel выберите File> Model Properties> Link to Data Dictionary.

  2. В диалоговом окне, под Моделью относится к, выберите Data Dictionary. Нажмите New.

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

  4. В диалоговом окне Model Properties нажать ОК.

  5. Нажмите ОК в ответ на сообщение о миграции переменных, на которые ссылаются.

  6. Нажмите кнопку Да в ответ на сообщение об удалении импортированных элементов от базового рабочего пространства.

  7. Сохраните модель.

Можно моделировать и сгенерировать код от моделей в иерархии. Все модели в иерархии соединяются со словарем. Все переменные в базовом рабочем пространстве теперь находятся в новом словаре System.sldd.

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

  1. Откройте образцовый ex_PlantComp_Lvl1.

  2. Выберите File> Model Properties> Link to Data Dictionary.

  3. В диалоговом окне, под Моделью относится к, нажмите New.

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

  5. В диалоговом окне Model Properties нажать ОК.

  6. В ответ на сообщение нажмите Move Data.

  7. Нажмите кнопку Да в ответ на сообщение о мигрирующих данных.

  8. Сохраните модель.

Модели в компоненте завода, ex_PlantComp_Lvl1 и ex_PlantComp_Lvl2, соединяются с новым словарем Plant.sldd. Другие модели в иерархии остаются соединенными с System.sldd. Поскольку образцовый ex_PlantComp_Lvl1 использует глобально совместно используемые переменные, такие как CtrlBus и SensorBus, процесс миграции перемещает эти переменные в Plant.sldd. Однако System.sldd теперь ссылается на Plant.sldd, таким образом, все модели в иерархии могут продолжить использовать глобально совместно используемые переменные.

Переменная, которую модели объекта управления совместно используют, mu, также находится в Plant.sldd. Другие переменные, которые модели контроллера совместно используют, такие как init и diff, остаются в System.sldd.

Компонент завода может одинокий от остальной части системы, потому что все ее данные находятся в Plant.sldd. Однако компонент контроллера зависит от разделяемых данных, который также сохранен в Plant.sldd.

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

Откройте образцовый ex_ContrComp, который является топ-моделью в компоненте контроллера. Соедините эту модель с новым словарем под названием Contr.sldd. Затем сохраните модель.

Когда вы заканчиваете, эти пять моделей в компоненте контроллера соединяются с Contr.sldd. Поскольку глобально совместно используемые переменные, такие как CtrlBus и SensorBus все еще находятся в словаре Plant.sldd, словарь ссылки Contr.sldd Plant.sldd. Из-за этой ссылки, модели в компоненте контроллера могут продолжить использовать глобально совместно используемые переменные.

Переменные, которые модели контроллера совместно используют, такие как diff, init и CodeGenConfigSet, теперь находятся в Contr.sldd.

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

Откройте образцовый ex_ContrComp_Sub1_Lvl1. Соедините эту модель с новым словарем под названием ContrSub1.sldd. Затем сохраните модель.

Когда вы заканчиваете, модели в первом субкомпоненте контроллера, ex_ContrComp_Sub1_Lvl1 и ex_ContrComp_Sub1_Lvl2, соединяются с ContrSub1.sldd. Модели во втором субкомпоненте остаются соединенными со словарем Contr.sldd.

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

Откройте образцовый ex_ContrComp_Sub2_Lvl1. Соедините эту модель с новым словарем под названием ContrSub2.sldd. Затем сохраните модель.

Словарь контроллера Contr.sldd ссылается на словари субкомпонента, ContrSub1.sldd и ContrSub2.sldd. Поэтому словарь контроллера и топ-модель в компоненте контроллера (ex_ContrComp) могут использовать все данные, заданные в этих словарях субкомпонента.

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

Словари субкомпонента ContrSub1.sldd и ссылка ContrSub2.sldd Plant.sldd. Поэтому все модели в иерархии могут продолжить использовать глобально совместно используемые переменные, такие как SensorBus и SimConfigSet, которые сохранены в Plant.sldd.

Осмотрите хранение данных

В Образцовой панели Иерархии модели Проводника выберите Систему узла словаря. В панели Содержимого, чтобы просмотреть содержимое System.sldd, нажимают кнопку Show Current System и Below. Содержимое Данных проектирования и разделов Настроек появляется.

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

Все глобально совместно используемые переменные, такие как CtrlBus и SensorBus, находятся в Plant.sldd. Переменный init, который обе из доли субкомпонентов контроллера, находится в ContrSub1.sldd. Из-за ссылок словаря, созданных процессом миграции, компоненты и субкомпоненты могут все еще совместно использовать эти переменные.

Если группы разработчиков, присвоенные компоненту контроллера, должны внести изменения в глобально совместно используемые переменные, они должны получить доступ к файлу словаря завода. Точно так же, если команда, присвоенная второму субкомпоненту контроллера, должна внести изменения в переменный init, они должны получить доступ к первому файлу словаря субкомпонента.

Оптимизируйте совместное использование данных Используя ссылочные словари

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

  1. Закройте все модели, которые вы имеете открытый.

    bdclose all

  2. В Образцовом Проводнике выберите File> New> Data Dictionary.

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

  4. В панели Иерархии модели выберите узел ContrSub2. В Диалоговой панели, под Dictionares, на который Ссылаются, нажимают Add.

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

  6. В панели Иерархии модели щелкните правой кнопкой по узлу ContrSub2 и выберите Save Changes.

  7. Добавьте GlobalShare.sldd как ссылку на словари ContrSub1.sldd и Plant.sldd. Сохраните каждый словарь после того, как вы добавите ссылку.

  8. В панели Иерархии модели выберите Систему узла.

  9. В панели Содержимого выберите глобально совместно используемые переменные:

    • CtrlBus

    • SensorBus

    • SimConfigSet

    • \rho

  10. В Столбце источника данных выберите GlobalShare.sldd для любой из выбранных переменных.

    Все переменные перемещаются от Plant.sldd до GlobalShare.sldd.

  11. Сохраните изменения в словаре System.sldd.

Теперь, если какая-либо из этих трех групп разработчиков должна внести изменения в глобально совместно используемые переменные, такие как SimConfigSet и CtrlBus, они могут получить доступ к словарю GlobalShare.sldd. Этот словарь содержит только переменные, которые совместно используют все модели в системе. Поскольку компонент и словари субкомпонента Plant.sldd, ContrSub1.sldd и ContrSub2.sldd вся ссылка глобально разделяемый словарь GlobalShare.sldd, все модели в иерархии могут использовать данные.

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

  1. В Образцовом Проводнике выберите File> New> Data Dictionary.

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

  3. В панели Иерархии модели выберите узел словаря ContrSub2. В Диалоговой панели, в соответствии со Словарями, на которые Ссылаются, выбирают Add.

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

  5. В панели Иерархии модели щелкните правой кнопкой по узлу ContrSub2 и выберите Save Changes.

  6. Добавьте ContrShare.sldd как ссылку на ContrSub1.sldd и сохраните словарь ContrSub1.sldd.

  7. Добавьте GlobalShare.sldd как ссылку на ContrShare.sldd и сохраните словарь ContrShare.sldd.

  8. В панели Иерархии модели выберите Систему узла.

  9. В панели Содержимого выберите эти переменные:

    • CodeGenConfigSet

    • init

    • FloatType

  10. В Столбце источника данных выберите ContrShare.sldd для любой из выбранных переменных.

    Все выбранные переменные перемещаются от ContrSub1.sldd до ContrShare.sldd.

  11. Сохраните изменения в словаре System.sldd.

Чтобы далее оптимизировать иерархию словаря, удалите ненужные ссылки, которые создал процесс миграции. Кроме того, удалите ненужные ссылки, которые вы создали из ContrSub1.sldd и ContrSub2.sldd к GlobalShare.sldd. Поскольку ссылки ContrShare.sldd GlobalShare.sldd, словари субкомпонента контроллера могут использовать данные в GlobalShare.sldd, непосредственно не ссылаясь на GlobalShare.sldd.

  1. В Образцовой панели Иерархии модели Проводника выберите Противоречие узла словаря. В Диалоговой панели, в списке Словарей, на который Ссылаются, выбирают Plant и нажимают Remove. Сохраните изменение в Contr.sldd.

  2. Удалите ссылки на GlobalShare.sldd и Plant.sldd от ContrSub1.sldd. Сохраните изменения в ContrSub1.sldd.

  3. Удалите ссылки на GlobalShare.sldd, Plant.sldd и ContrSub1.sldd от ContrSub2.sldd. Сохраните изменения в ContrSub2.sldd.

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

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

  1. Откройте свой сохраненный образцовый ex_SystemModel. Выберите File> Simulink Project> Create Project from Model.

  2. Задайте имя для проекта в поле Названия проекта. Нажмите Create.

  3. В Проекте Simulink нажмите Dependency Analysis. Нажмите Analyze.

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

Чтобы осмотреть данные в словарях, используйте Образцовый Проводник.

  1. В вашем сохраненном образцовом ex_SystemModel кликните по значку словаря данных.

  2. В Образцовой панели Иерархии модели Проводника, под узлом словаря, выбирают узел Данных проектирования.

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

    Можно также щелкнуть правой кнопкой по имени столбца и выбрать Group by This Column, чтобы сгруппировать записи словарями, которые задают их.

  4. В панели Иерархии модели, под Системой узла, кликают по Настройкам узла. В панели Содержимого объект Simulink.ConfigSet CodeGenConfigSet сохранен в разделяемом словаре для компонента контроллера. SimConfigSet сохранен в глобально разделяемом словаре.

Переместите иерархию модели на словари инкрементно

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

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

В примере Создают Словарь для Каждого Компонента, вы перемещаете иерархию компонентов и субкомпонентов от базового рабочего пространства до словарей данных, начинающихся с топ-модели. Этот пример показывает, как достигнуть того же конечного состояния, начав процесс миграции с субкомпонентов в нижней части иерархии. Чтобы осуществлять обмен данными с другими моделями, которые все еще используют базовое рабочее пространство, вы конфигурируете новые словари, чтобы обеспечить доступ к базовому рабочему пространству (см., Продолжают Использовать Разделяемые данные в Базовом рабочем пространстве).

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

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

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

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

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

  1. Откройте модель ex_ContrComp_Sub2_Lvl1. Эта модель наверху второго субкомпонента.

  1. Выберите File> Model Properties> Link to Data Dictionary.

  2. В диалоговом окне, под Моделью относится к, выберите Data Dictionary и нажмите New.

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

  4. В диалоговом окне Model Properties нажать ОК.

  5. В диалоговом окне Link Model to Data Dictionary снимите флажок и нажмите ОК. Со снятым флажком Simulink не перемещает данные от базового рабочего пространства до словаря.

  6. Нажмите ОК в диалоговом окне Model Properties, затем сохраните модель.

С этой настройкой все существующие данные все еще находятся в базовом рабочем пространстве. Когда вы и другие члены команды создаете новые данные для второго субкомпонента контроллера:

  • Если часть данных используется субкомпонентом только, можно создать его в новом словаре, ContrSub2.sldd.

  • Если другие компоненты или субкомпоненты должны использовать часть данных, можно создать ее в базовом рабочем пространстве.

Переместите данные для второго субкомпонента контроллера

Опционально, после того, как вы соединяете модель со словарем, можно переместить данные от базового рабочего пространства до словаря вручную. Переместите только данные, которые модель не совместно использует с другими моделями через базовое рабочее пространство.

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

  1. В нижнем левом углу модели ex_ContrComp_Sub2_Lvl1 кликните по значку словаря. Словарь ContrSub2.sldd открывается в Образцовом Проводнике.

  2. В Образцовой панели Иерархии модели Проводника нажмите Base Workspace.

  3. В панели Содержимого, сокращение переменная coeff.

  4. В панели Иерархии модели, под узлом ContrSub2, выбирают узел Данных проектирования.

  5. В панели Содержимого вставьте переменную coeff.

  6. В панели Иерархии модели щелкните правой кнопкой по узлу ContrSub2 и выберите Save Changes.

Теперь, переменный coeff задан в словаре, не базовом рабочем пространстве.

Чтобы предотвратить ошибки, когда вы работаете с моделями в субкомпоненте, необходимо удалить некоторые обратные вызовы загрузки данных из моделей. Если вы не удаляете обратные вызовы, каждый раз, когда вы открываете одну из моделей, обратный вызов создает копию переменной coeff в базовом рабочем пространстве. Конфликтные определения переменной в словаре и базовом рабочем пространстве затем приводят к ошибкам, когда вы пытаетесь моделировать или обновить блок-схему.

  1. В Образцовой панели Иерархии модели Проводника выберите ex_ContrCompSub2_Lvl1 узел.

  2. В Диалоговой панели (правая панель), выберите вкладку Callbacks.

  3. Для обратного вызова PreLoadFcn удалите строку, которая загружает данные от ProjectData_ContrSub2.mat. Этот MAT-файл задает coeff.

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

  4. Удалите ту же строку из обратного вызова PreLoadFcn другой модели во втором субкомпоненте контроллера.

  5. При необходимости очистите любые остающиеся копии coeff от базового рабочего пространства.

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

Соедините первый субкомпонент контроллера, топ-моделью которого является ex_ContrComp_Sub1_Lvl1 к словарю под названием ContrSub1.sldd. После того, как вы закончите, переместите переменный diff на новый словарь и, в обратном вызове PreLoadFcn моделей в субкомпоненте, удалите строку, которая загружает данные от ProjectData_ContrSub1.mat. Когда вы заканчиваете, очистите любые остающиеся копии diff, которые остаются в базовом рабочем пространстве.

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

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

  1. В Образцовом Проводнике выберите File> New> Data Dictionary.

  2. В Создавании нового диалогового окна Data Dictionary, Имени файла набора к ContrShare и нажимают Save.

  3. В Образцовой панели Иерархии модели Проводника выберите узел ContrSub1.

  4. В Диалоговой панели (правая панель), в соответствии со Словарями, на которые Ссылаются, нажимают Add.

  5. В диалоговом окне Open Data Dictionary дважды кликните ContrShare.sldd.

    Словарь ContrSub1.sldd относится к ContrShare.sldd.

  6. Сконфигурируйте словарь ContrSub2.sldd, чтобы относиться к ContrShare.sldd.

  7. Используйте Образцовый Проводник, чтобы переместить init от базового рабочего пространства до ContrShare.sldd.

  8. Сохраните изменения, которые вы внесли в словари.

  9. В обратном вызове PreLoadFcn моделей в субкомпонентах контроллера удалите строку, которая загружает данные от ProjectData_ContrSubs.mat.

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

  1. Соедините модель компонента контроллера, ex_ContrComp, к словарю под названием Contr.sldd. После того, как вы закончите, Simulink конфигурирует ссылки словаря: ссылки Contr.sldd ContrSub1.sldd и ContrSub2.sldd.

    Contr.sldd не содержит данных, но он изолирует словари контроллера от системного словаря, который вы создаете позже.

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

    • Используйте Образцовый Проводник, чтобы переместить переменный FloatType в раздел Design Data ContrShare.sldd (не Contr.sldd).

    • Переместите переменный CodeGenConfigSet в раздел Configurations ContrShare.sldd.

      Чтобы представить раздел Configurations, в Образцовой панели Иерархии модели Проводника, щелкают правой кнопкой по узлу словаря и выбирают Show Empty Sections.

    Эти переменные используются всеми моделями в компоненте контроллера.

  3. В обратном вызове PreLoadFcn всех моделей в компоненте контроллера удалите строку, которая загружает данные от ProjectData_Contr.mat.

Полная миграция к словарям

  1. Соедините топ-модель в компоненте завода, ex_PlantComp_Lvl1, к новому словарю под названием Plant.sldd.

  2. Соедините системную модель, ex_SystemModel, к новому словарю под названием System.sldd.

Теперь, когда все модели используют словари, можно переместить все данные от базового рабочего пространства:

  1. Переместите переменный mu в Plant.sldd.

  2. В обратном вызове PreLoadFcn моделей в компоненте завода удалите строку, которая загружает данные от ProjectData_Plant.mat.

  3. Используйте Образцовый Проводник, чтобы создать новый словарь под названием GlobalShare.sldd.

  4. Сконфигурируйте Plant.sldd и ContrShare.sldd, чтобы относиться к GlobalShare.sldd.

  5. Переместите эти переменные в GlobalShare.sldd:

    • \rho

    • SimConfigSet

    • SensorBus

    • CtrlBus

    GlobalShare.sldd содержит переменные, в которых нуждаются все модели в иерархии.

  6. В обратном вызове PreLoadFcn всех моделей удалите строку, которая загружает данные от ProjectData_System.mat.

  7. Для ContrSub1 ContrSub2 и словари Plant, в Образцовой панели Иерархии модели Проводника, выбирают узел словаря и в Диалоговой панели, ясный Предоставляют доступ к базовому рабочему пространству.

  8. Для каждого из других словарей подтвердите, что Предоставляют доступ к базовому рабочему пространству, очищен. Моделям в иерархии больше не нужно базовое рабочее пространство.

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

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

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

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

Похожие темы

Была ли эта тема полезной?