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

Simulink® словарь данных постоянно хранит данные модели, включая MATLAB® переменные, объекты данных и типы данных. Основные сведения о словарях данных см. в разделе «Что такое словарь данных?».

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

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

Примечание

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

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

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

  3. В редакторе Simulink, на вкладке Modeling, в разделе Design, нажмите Link to Data Dictionary.

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

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

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

  7. Щелкните Migrate в ответ на сообщение о копировании ссылочных переменных.

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

  9. Нажмите OK.

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

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

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

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

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

  3. Откройте верхнюю часть, sldemo_mdlref_datamngt.

  4. В редакторе Simulink, на вкладке Modeling, в разделе Design, нажмите Link to Data Dictionary.

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

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

  7. Щелкните Change all models в ответ на сообщение о связывании ссылок на модели, которые еще не используют словарь.

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

  9. Щелкните Migrate в ответ на сообщение о копировании ссылочных переменных.

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

  11. Нажмите OK.

Факторы перед миграцией на словарь данных

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

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

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

load myData

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

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

Проверяйте скрипты

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

Если при помощи указателя сделать явные ссылки на базовое рабочее пространство 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 игнорирует информацию класса памяти заданную в диалоговом окне Параметр модели Строения.

  • Если вы используете интерфейс 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 блоками

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

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

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

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

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

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

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

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

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

  • Оценка выражений, которые включают переменные Simulink или типы данных, хранящиеся в словаре данных, может не поддерживаться.

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

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

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

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

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

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

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

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

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

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

      • assignin

      • exist

      • evalin

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

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

  • При экспорте данных из словаря (см. «Импорт и экспорт данных словаря») Simulink игнорирует базовые данные базового рабочего пространства.

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

Миграция сложной иерархии модели с разделяемыми данными

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

См. также

|

Похожие темы