Словарь данных 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.
Чтобы открыть словарь, в Редакторе Simulink, кликают по значку данных модели в левом нижнем углу, затем щелкают по ссылке 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 игнорирует информацию класса памяти, указанную в диалоговом окне 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
объект (который не может сохранить словарь данных) или структура с полями, идентичными объекту timeseries, процесс миграции, не импортирует переменную. Затем когда вы пытаетесь обновить схему или симулировать модель, блок From Workspace не может найти переменную и выдает ошибку. В таком случае можно сконфигурировать блок, чтобы относиться к переменной базового рабочего пространства при помощи evalin
функция. Смотрите Использование со Словарем Данных.
Simulink не может автоматически переместить переменные, используемые только неактивными различными моделями в словарь данных.
Вы не можете импортировать определенные виды данных проектирования, такие как meta
объекты класса и timeseries
объекты в раздел Design Data словаря данных.
Simulink не позволяет неявное разрешение сигнала для модели, соединенной со словарем данных. Чтобы использовать словарь данных, установите параметр конфигурации модели Signal resolution на Explicit only
или None
.
Если иерархия модели - ссылки уже соединяется со словарем данных, можно защитить модель, на которую ссылаются, которая является частью иерархии. Однако, если вы переместите иерархию модели - ссылки, которая включает защищенную модель, симуляция перестанет работать.
Другими словами, переместите модель, чтобы использовать словарь данных прежде, чем защитить его.
Можно продолжить хранить разделяемые данные в базовом рабочем пространстве и хранить данные модели специфичные в словаре данных:
Включение доступа к базовому рабочему пространству для модели.
Включение доступа к базовому рабочему пространству из словаря данных.
Чтобы включить доступ к базовому рабочему пространству для модели, в диалоговом окне 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 | Ссылочные защищенные модели от третьих лиц