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

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

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

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

Примечание

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

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

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

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

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

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

  6. Нажмите Migrate data.

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

  8. (Необязательно) очистите Enable access to base workspace.

  9. Нажмите OK.

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

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

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

  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. Нажмите Change all models в ответ на сообщение о соединении моделей, на которые ссылаются, которые уже не используют словарь.

  8. Нажмите Migrate data.

  9. Нажмите Migrate в ответ на сообщение о копировании переменных, на которые ссылаются.

  10. (Необязательно) очистите Enable access to base workspace.

  11. Нажмите OK.

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

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

Проверяйте на коллбэки загрузки данных

Можно использовать образцовые коллбэки, такие как коллбэк 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.

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

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

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

Дублирующиеся определения данных могут существовать в иерархии модели - ссылки при этих условиях:

  • Каждая модель в иерархии видит только одно определение.

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

Для получения дополнительной информации смотрите, Определяют, Где Сохранить Переменные и Объекты для Моделей 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

    • Status

    • Variant

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

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

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

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

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

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

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

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

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

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

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

Можно продолжить хранить разделяемые данные в базовом рабочем пространстве и хранить образцово-специфичные данные в словаре данных:

  • Включение доступа к базовому рабочему пространству для модели.

  • Включение доступа к базовому рабочему пространству из словаря данных.

Чтобы включить доступ к базовому рабочему пространству для модели, в диалоговом окне Model Properties, на вкладке Data, выбирают Enable access to base workspace. Для новой модели этот флажок устанавливается по умолчанию. Если модель не соединена со словарем данных, эта опция должна быть выбрана.

Можно также предоставить доступ к базовому рабочему пространству из словаря данных. Для существующего словаря, в Model Explorer, выбирают Enable access to base workspace.

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

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

    • Когда вы осматриваете содержимое словаря в Model Explorer, вы не видите данные о базовом рабочем пространстве. Чтобы взаимодействовать с данными о базовом рабочем пространстве, в панели Model Hierarchy, выбирают узел Base Workspace.

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

      • assignin

      • exist

      • evalin

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

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

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

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

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

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

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

|

Похожие темы