Переместите модели, чтобы использовать словарь данных Simulink

Словарь данных Simulink® постоянно хранит данные модели включая переменные MATLAB®, объекты данных и типы данных. Для основной информации о словарях данных смотрите то, Что Словарь Данных?.

Переместите единственную модель, чтобы использовать словарь

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

Примечание

Simulink не импортирует данные моделирования, такие как объекты Timeseries в словарь данных.

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

  2. Сохраните копию модели к вашей текущей папке. Откройте копию.

  3. В Редакторе Simulink нажмите File> Model Properties> Link to Data Dictionary.

  4. В диалоговом окне Model Properties Модель набора относится к к Словарю Данных, и нажмите New, чтобы создать словарь данных.

  5. Назовите словарь данных, сохраните его и нажмите Apply.

  6. Нажмите путь к Add, если вы видите сообщение, чтобы добавить местоположение словаря к пути MATLAB.

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

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

  9. Нажмите ОК в диалоговом окне Model Properties.

    Уведомление появляется в Редакторе Simulink, сообщая, что ваша модель теперь соединяется со словарем данных.

  10. В Редакторе Simulink кликните по значку словаря данных в левом нижнем углу, чтобы открыть словарь. Чтобы осмотреть содержимое словаря, в Образцовой панели Иерархии модели Проводника, выбирают узел под узлом словаря.

Переместите иерархию модели - ссылки, чтобы использовать словарь

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

  1. Откройте модель в качестве примера sldemo_mdlref_datamngt, который ссылается на образцовый sldemo_mdlref_counter_datamngt.

  2. Сохраните копии моделей к вашей текущей папке.

  3. Откройте топ-модель, sldemo_mdlref_datamngt.

  4. В Редакторе Simulink нажмите File> Model Properties> Link to Data Dictionary.

  5. В диалоговом окне Model Properties Модель набора относится к к Словарю Данных, и нажмите New, чтобы создать словарь данных.

  6. Назовите словарь данных, сохраните его и нажмите Apply.

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

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

  9. Нажмите ОК в ответ на сообщение о миграции перечислимых типов.

Факторы прежде, чем Мигрировать на Словарь Данных

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

Проверьте на обратные вызовы загрузки данных

Можно использовать образцовые обратные вызовы, такие как обратный вызов PreLoadFcn, чтобы загрузить данные проектирования из файла в базовое рабочее пространство, когда модель загружается. Например, следующий обратный вызов загружает данные проектирования из файла MAT myData.mat.

load myData

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

Можно использовать Инструменты Декларации Simulink, чтобы найти обратные вызовы загрузки данных. Смотрите Анализируют Зависимости моделей.

Проверьте скрипты

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

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

Рассмотрите этот пример. Здесь, скрипт ищет базовое рабочее пространство переменный sensor и устанавливает параметр enable в зависимости от значения sensor.noiseEnable.

if evalin('base','sensor.noiseEnable')
	enable = 'Enabled';
else
	enable = 'Disabled';
end 

Когда вы мигрируете на словарь данных, заменяете эти прямые ссылки на base можно следующим образом:

if Simulink.data.evalinGlobal(myExampleModel,...
'sensor.noiseEnable')
	enable = 'Enabled';
else
	enable = 'Disabled';
end 
Функция Simulink.data.evalinGlobal оценивает выражение в глобальной области видимости заданной модели. Здесь, глобальная область видимости может быть в словаре данных или базовом рабочем пространстве, если модель не соединяется со словарем.

Проверьте настраиваемые параметры на генерацию кода

  • Если ваша модель соединяется со словарем данных, и словарь не обеспечивает доступ к базовому рабочему пространству (см., Продолжают Использовать Разделяемые данные в Базовом рабочем пространстве), Simulink игнорирует информацию о классе памяти, заданную в диалоговом окне Model Parameter Configuration.

  • При использовании интерфейс Simulink, чтобы переместить модель, чтобы использовать словарь данных, и вы принимаете решение переместить данные базового рабочего пространства, Simulink также перемещает информацию о классе памяти модели. Если ваша модель содержит информацию о классе памяти для переменных в базовом рабочем пространстве, Simulink преобразовывает эти переменные в объекты Simulink.Parameter во время миграции. Затем Simulink устанавливает класс памяти этих объектов Simulink.Parameter с помощью информации о классе памяти от модели.

  • Если вы перемещаете эту модель назад на базовое рабочее пространство, Simulink не восстанавливает информацию о классе памяти в модели. Чтобы сохранить класс памяти для этих переменных, используйте объекты параметра из словаря данных. Можно также вручную сбросить информацию о классе памяти в модели.

  • Если вы устанавливаете свойство DataDictionary модели из командной строки, можно преобразовать настраиваемые переменные в объекты Simulink.Parameter с помощью функции tunablevars2parameterobjects.

Данные, разделяемые моделями - ссылками

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

Модели в иерархии модели - ссылки обычно осуществляют обмен данными. Владение данных, количество совместно используемых переменных и сложность вашего совместного использования стратегии могут влиять на способ, которым вы используете словари. Для получения дополнительной информации смотрите, Определяют, Где Сохранить Переменные и Объекты для Моделей Simulink.

Допустимые классы данных проектирования

Можно импортировать, сохранить или создать переменные MATLAB, которые используют поддерживаемые типы данных Simulink, такие как boolean и int32 и структуры в разделе Design Data словаря данных Simulink. Можно также использовать объекты этих классов и объекты большинства классов, которые разделяют эти классы на подклассы:

  • Simulink.AliasType

  • Simulink.Bus

  • Simulink.NumericType

  • Simulink.Parameter

  • Simulink.LookupTable

  • Simulink.Breakpoint

  • Simulink.Signal

  • Simulink.Variant

  • Simulink.data.dictionary.EnumTypeDefinition

  • embedded.fi

  • embedded.fimath

  • numlti

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

Недопустимые другие классы данных

Можно импортировать, сохранить или создать объекты данных многих встроенных и пользовательских классов или типов данных в разделе Other Data словаря данных Simulink, за исключением следующего:

  • Массивы объектов создаются из встроенных или пользовательских классов

  • Пользовательские классы, которые имеют свойство с любым из этих имен:

    • LastModified

    • LastModifiedBy

    • DataSource

    • Состояние

    • Variant

Миграция с от блоков рабочей области

Если модель содержит блок From Workspace, который относится к переменной в базовом рабочем пространстве, можно переместить модель на словарь данных. Однако процесс миграции принимает различные меры в зависимости от природы переменной, к которой относится блок:

  • Если значение переменной не является объектом timeseries, процесс миграции импортирует переменную к разделу Design Data словаря данных. Блок может все еще относиться к переменной.

  • Если значение переменной является объектом timeseries (который словарь данных не может сохранить), процесс миграции не импортирует переменную. Затем когда вы пытаетесь обновить схему или моделировать модель, блок From Workspace не может найти переменную и выдает ошибку. В таком случае можно сконфигурировать блок, чтобы относиться к переменной базового рабочего пространства при помощи функции evalin. Смотрите Использование со Словарем Данных.

Ограничения словаря данных

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

  • Вы не можете импортировать определенные виды данных проектирования, такие как объекты класса meta и объекты timeseries в раздел Design Data словаря данных.

  • Simulink не позволяет неявное разрешение сигнала для модели, соединенной со словарем данных. Чтобы использовать словарь данных, установите образцовое разрешение Сигнала параметра конфигурации Explicit only или None.

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

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

Продолжите использовать разделяемые данные в базовом рабочем пространстве

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

Опционально, можно сконфигурировать словарь, чтобы предоставить моделям доступ к базовому рабочему пространству. Затем можно сохранить разделяемые данные в базовом рабочем пространстве и хранить образцово-специфичные данные в словаре. Чтобы сконфигурировать словарь таким образом, выберите один из этих методов:

  • Когда вы соединяете модель с новым словарем в диалоговом окне Link Model to Data Dictionary, ясный Перемещают переменные, на которые ссылаются, от базового рабочего пространства. После того, как вы закончите соединять модель, Simulink выбирает доступ к свойству Allow словаря к базовому рабочему пространству.

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

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

  • Установка может оказать значительное влияние на другие модели и словари. Словари, которые ссылаются на целевой словарь (см., что Словарь Ссылается), и все словари предка также предоставляют моделям доступ к базовому рабочему пространству.

    В целом, для иерархии моделей, на которые ссылаются, Simulink требует, чтобы вы установили соответствующую, неповрежденную иерархию словарей, на которые ссылаются (см. Данные Раздела для Иерархии Модели - ссылки Используя Словари Данных). Выбор предоставляет доступ к базовому рабочему пространству для словаря низкоуровневой модели, или для важного, широко разделяемого словаря может значительно повлиять на целую иерархию модели.

    Например, если словарь посреди иерархии задает переменную под названием myVar, и базовое рабочее пространство задает различную переменную с тем же именем, по умолчанию, имена переменных не конфликтуют. Однако, когда вы выбираете, предоставляют доступ к базовому рабочему пространству в низкоуровневом словаре, имена переменных начинают конфликтовать, генерируя Диагностические ошибки Средства просмотра.

  • В целом вы не можете взаимодействовать с данными базового рабочего пространства через словарь.

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

    • С программируемым интерфейсом словаря данных (см., Хранят Данные в Словаре Программно), чтобы взаимодействовать с данными базового рабочего пространства, можно использовать только эти функции с объектом Simulink.data.dictionary.Section:

      • assignin

      • существовать

      • evalin

      Рассмотрите использование функций, таких как Simulink.data.assigninGlobal вместо этого. Смотрите Переход к Использованию Словаря Данных.

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

  • Когда вы экспортируете данные из словаря (см. Импорт и Экспортируйте Данные Словаря), Simulink игнорирует данные базового рабочего пространства.

  • Simulink обрабатывает базовое рабочее пространство и словарь как единое пространство имен. Вы не можете задать две переменные с тем же именем, один в базовом рабочем пространстве и один в словаре.

Переместите сложную иерархию модели с разделяемыми данными

Для примеров, включая тот, который показывает, как использовать, Предоставляют доступ к базовому рабочему пространству, чтобы включить инкрементную миграцию, видеть Данные Раздела для Иерархии Модели - ссылки Используя Словари Данных.

Смотрите также

|

Похожие темы

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