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

  • 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 обрабатывает базовое рабочее пространство и словарь как единое пространство имен. Однако можно задать две переменные с тем же именем, один в базовом рабочем пространстве и один в словаре. В этом случае переменные должны быть идентичными, и переменная в словаре используется.

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

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

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

Похожие темы