Словарь данных Simulink® постоянно хранит данные модели включая переменные MATLAB®, объекты данных и типы данных. Для основной информации о словарях данных смотрите то, Что Словарь Данных?.
Этот пример показывает, как соединить единственную автономную модель с единственным словарем данных.
Simulink не импортирует данные моделирования, такие как объекты Timeseries в словарь данных.
Откройте модель f14
, которая загружает данные проектирования в базовое рабочее пространство.
Сохраните копию модели к вашей текущей папке. Откройте копию.
В Редакторе Simulink нажмите File> Model Properties> Link to Data Dictionary.
В диалоговом окне Model Properties Модель набора относится к к Словарю Данных, и нажмите New, чтобы создать словарь данных.
Назовите словарь данных, сохраните его и нажмите Apply.
Нажмите путь к Add, если вы видите сообщение, чтобы добавить местоположение словаря к пути MATLAB.
Нажмите ОК в ответ на сообщение о миграции переменных, на которые ссылаются.
Нажмите кнопку Да в ответ на сообщение об удалении импортированных элементов от базового рабочего пространства.
Нажмите ОК в диалоговом окне Model Properties.
Уведомление появляется в Редакторе Simulink, сообщая, что ваша модель теперь соединяется со словарем данных.
В Редакторе Simulink кликните по значку словаря данных в левом нижнем углу, чтобы открыть словарь. Чтобы осмотреть содержимое словаря, в Образцовой панели Иерархии модели Проводника, выбирают узел под узлом словаря.
Этот пример показывает, как соединить родительскую модель и все ее модели, на которые ссылаются, к единственному словарю данных.
Откройте модель в качестве примера sldemo_mdlref_datamngt
, который ссылается на образцовый sldemo_mdlref_counter_datamngt
.
Сохраните копии моделей к вашей текущей папке.
Откройте топ-модель, sldemo_mdlref_datamngt
.
В Редакторе Simulink нажмите File> Model Properties> Link to Data Dictionary.
В диалоговом окне Model Properties Модель набора относится к к Словарю Данных, и нажмите New, чтобы создать словарь данных.
Назовите словарь данных, сохраните его и нажмите Apply.
Нажмите ОК в ответ на сообщение о миграции переменных, на которые ссылаются.
Нажмите кнопку Да в ответ на сообщение об удалении импортированных элементов от базового рабочего пространства.
Нажмите ОК в ответ на сообщение о миграции перечислимых типов.
Когда вы соединяете модель со словарем данных, можно принять решение переместить данные от базового рабочего пространства в словарь. Если вы принимаете решение переместить данные, примите эти факторы во внимание.
Можно использовать образцовые обратные вызовы, такие как обратный вызов 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
.
Когда вы используете ссылку модели, чтобы повредить большую систему моделей в меньшие компоненты и субкомпоненты, можно создать словари данных, чтобы выделять данные проектирования. Данные проектирования являются набором переменных рабочей области что использование моделей, чтобы задать блочные параметры и характеристики сигнала.
Модели в иерархии модели - ссылки обычно осуществляют обмен данными. Владение данных, количество совместно используемых переменных и сложность вашего совместного использования стратегии могут влиять на способ, которым вы используете словари. Для получения дополнительной информации смотрите, Определяют, Где Сохранить Переменные и Объекты для Моделей 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
Состояние
Variant
Если модель содержит блок From Workspace, который относится к переменной в базовом рабочем пространстве, можно переместить модель на словарь данных. Однако процесс миграции принимает различные меры в зависимости от природы переменной, к которой относится блок:
Если значение переменной не является объектом timeseries
, процесс миграции импортирует переменную к разделу Design Data словаря данных. Блок может все еще относиться к переменной.
Если значение переменной является объектом timeseries
(который словарь данных не может сохранить), процесс миграции не импортирует переменную. Затем когда вы пытаетесь обновить схему или моделировать модель, блок From Workspace не может найти переменную и выдает ошибку. В таком случае можно сконфигурировать блок, чтобы относиться к переменной базового рабочего пространства при помощи функции evalin
. Смотрите Использование со Словарем Данных.
Simulink не может автоматически переместить переменные, используемые только неактивными различными моделями в словарь данных.
Вы не можете импортировать определенные виды данных проектирования, такие как объекты класса meta
и объекты timeseries
в раздел Design Data словаря данных.
Simulink не позволяет неявное разрешение сигнала для модели, соединенной со словарем данных. Чтобы использовать словарь данных, установите образцовое разрешение Сигнала параметра конфигурации Explicit only
или None
.
Если иерархия модели - ссылки уже соединяется со словарем данных, можно защитить модель, на которую ссылаются, которая является частью иерархии. Однако, если вы переместите иерархию модели - ссылки, которая включает защищенную модель, моделирование перестанет работать.
Другими словами, переместите модель, чтобы использовать словарь данных прежде, чем защитить его.
По умолчанию соединение модели к словарю препятствует тому, чтобы модель использовала переменные и объекты в базовом рабочем пространстве. Когда многоуровневые модели зависят от совместно используемой переменной или объекта в базовом рабочем пространстве, это ограничение может сделать миграцию оспаривания моделей.
Опционально, можно сконфигурировать словарь, чтобы предоставить моделям доступ к базовому рабочему пространству. Затем можно сохранить разделяемые данные в базовом рабочем пространстве и хранить образцово-специфичные данные в словаре. Чтобы сконфигурировать словарь таким образом, выберите один из этих методов:
Когда вы соединяете модель с новым словарем в диалоговом окне Link Model to Data Dictionary, ясный Перемещают переменные, на которые ссылаются, от базового рабочего пространства. После того, как вы закончите соединять модель, Simulink выбирает доступ к свойству Allow словаря к базовому рабочему пространству.
Для существующего словаря, в Образцовом Проводнике, выбирают, предоставляют доступ к базовому рабочему пространству.
Когда вы выбираете, предоставляют доступ к базовому рабочему пространству для словаря, эти ограничения и разветвления применяются:
Установка может оказать значительное влияние на другие модели и словари. Словари, которые ссылаются на целевой словарь (см., что Словарь Ссылается), и все словари предка также предоставляют моделям доступ к базовому рабочему пространству.
В целом, для иерархии моделей, на которые ссылаются, Simulink требует, чтобы вы установили соответствующую, неповрежденную иерархию словарей, на которые ссылаются (см. Данные Раздела для Иерархии Модели - ссылки Используя Словари Данных). Выбор предоставляет доступ к базовому рабочему пространству для словаря низкоуровневой модели, или для важного, широко разделяемого словаря может значительно повлиять на целую иерархию модели.
Например, если словарь посреди иерархии задает переменную под названием myVar
, и базовое рабочее пространство задает различную переменную с тем же именем, по умолчанию, имена переменных не конфликтуют. Однако, когда вы выбираете, предоставляют доступ к базовому рабочему пространству в низкоуровневом словаре, имена переменных начинают конфликтовать, генерируя Диагностические ошибки Средства просмотра.
В целом вы не можете взаимодействовать с данными базового рабочего пространства через словарь.
Когда вы осматриваете содержимое словаря в Образцовом Проводнике, вы не видите данные базового рабочего пространства. Чтобы взаимодействовать с данными базового рабочего пространства, в панели Иерархии модели, выбирают узел Базового рабочего пространства.
С программируемым интерфейсом словаря данных (см., Хранят Данные в Словаре Программно), чтобы взаимодействовать с данными базового рабочего пространства, можно использовать только эти функции с объектом Simulink.data.dictionary.Section
:
assignin
существовать
evalin
Рассмотрите использование функций, таких как Simulink.data.assigninGlobal
вместо этого. Смотрите Переход к Использованию Словаря Данных.
Функции отслеживания изменений, такие как способность просмотреть и вернуться изменения в словарных статьях (см. Представление и Отмену изменений к Словарным статьям), не применяются к данным базового рабочего пространства.
Когда вы экспортируете данные из словаря (см. Импорт и Экспортируйте Данные Словаря), Simulink игнорирует данные базового рабочего пространства.
Simulink обрабатывает базовое рабочее пространство и словарь как единое пространство имен. Вы не можете задать две переменные с тем же именем, один в базовом рабочем пространстве и один в словаре.
Для примеров, включая тот, который показывает, как использовать, Предоставляют доступ к базовому рабочему пространству, чтобы включить инкрементную миграцию, видеть Данные Раздела для Иерархии Модели - ссылки Используя Словари Данных.
Из рабочей области | Ссылочные защищенные модели от третьих лиц