Simulink® словарь данных постоянно хранит данные модели, включая MATLAB® переменные, объекты данных и типы данных. Основные сведения о словарях данных см. в разделе «Что такое словарь данных?».
В этом примере показано, как связать одну автономную модель с одним словарем данных.
Примечание
Simulink не импортирует в словарь данных данные моделирования, такие как объекты Timeseries.
Откройте f14
модель, которая загружает проектные данные в базовое рабочее пространство.
Сохраните копию модели в текущей папке. Откройте копию.
В редакторе Simulink, на вкладке Modeling, в разделе Design, нажмите Link to Data Dictionary.
В диалоговом окне Model Properties нажмите New, чтобы создать словарь данных.
Назовите словарь данных, сохраните его и нажмите Apply.
Нажмите Migrate data.
Щелкните Migrate в ответ на сообщение о копировании ссылочных переменных.
(Необязательно) Очистить Enable model access to base workspace.
Нажмите OK.
Чтобы открыть словарь, в Редактор, щелкните значок данных моделей в нижнем левом углу, затем щелкните External Data ссылку. Чтобы просмотреть содержимое словаря, на панели Model Hierarchy Model Explorer, под узлом External Data, разверните узел словаря.
В этом примере показано, как связать родительскую модель и все ее модели-ссылки с одним словарем данных.
Откройте пример модели sldemo_mdlref_datamngt
, который ссылается на модель sldemo_mdlref_counter_datamngt
.
Сохраните копии моделей в текущей папке.
Откройте верхнюю часть, sldemo_mdlref_datamngt
.
В редакторе Simulink, на вкладке Modeling, в разделе Design, нажмите Link to Data Dictionary.
В диалоговом окне Model Properties нажмите New, чтобы создать словарь данных.
Назовите словарь данных, сохраните его и нажмите Apply.
Щелкните Change all models в ответ на сообщение о связывании ссылок на модели, которые еще не используют словарь.
Нажмите Migrate data.
Щелкните Migrate в ответ на сообщение о копировании ссылочных переменных.
(Необязательно) Очистить Enable model access to base workspace.
Нажмите 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, который ссылается на переменную в базовом рабочем пространстве, можно перенести модель в словарь данных. Однако процесс миграции предпринимает различные действия в зависимости от характера переменной, к которой относится блок:
Если значение переменной не является 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 обрабатывает базовое рабочее пространство и словарь как единое пространство имен. Однако можно задать две переменные с таким же именем, одну в базовом рабочем пространстве и одну в словаре. В этом случае переменные должны быть идентичными, и используется переменная в словаре.
Для примера смотрите Данные разделов для иерархии Модели-ссылки с использованием словарей данных.
From Workspace | Ссылка на защищенные модели от третьих лиц