Объекты данных

Можно создать объекты данных для задания значений, диапазонов, типов данных, настраиваемости и других характеристик сигналов, состояний и блочных параметров. Вы используете имена объектов в диалоговых окнах Simulink®, чтобы задать сигнал, состояние и характеристики параметра. Объекты существуют в рабочей области, такой как базовое рабочее пространство, рабочее пространство модели или словарь данных Simulink. Объекты данных позволяют вам вносить изменения всей модели в сигнал, состояние и характеристики параметра путем изменения только значений объектов рабочей области.

Вы создаете объекты данных как экземпляры классов данных. Структуры памяти под названием data class packages содержат определения классов данных. Встроенный пакет Simulink задает два класса данных, Simulink.Signal и Simulink.Parameter, то, что можно использовать, чтобы создать объекты данных. Чтобы хранить данные об интерполяционной таблице для совместного использования между блоками интерполяционной таблицы (такими как n-D Lookup Table), можно использовать Simulink.LookupTable и Simulink.Breakpoint классы.

Чтобы решить, использовать ли объекты данных для конфигурации сигналов, включая блоки Inport и Outport, смотрите Атрибуты Дизайна Хранилища Сигналов и состояний.

Можно настроить свойства объекта данных и методы путем определения подклассов встроенных классов данных. Для получения дополнительной информации о создании пакета класса данных, смотрите, Задают Классы Данных.

Соглашения о присвоении имен класса данных

Simulink использует запись через точку, чтобы назвать классы данных:

package.class

  • пакет является именем пакета, который содержит определение класса.

  • класс является именем класса.

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

Класс и имена пакета являются чувствительными к регистру. Например, вы не можете использовать MYPACKAGE.MYCLASS и mypackage.myclass взаимозаменяемо относиться к тому же классу.

Используйте объекты данных в моделях Simulink

Чтобы задать настройки симуляции и генерации кода для сигналов, параметров блоков и состояний путем изменения переменных в рабочей области или словаре данных, используйте объекты данных. Сопоставьте объекты с сигналами, параметрами и состояниями в диаграмме модели.

Используйте объекты параметра

Можно использовать объекты параметра, вместо числовых переменных MATLAB®, чтобы задать значения для параметров блоков. Например, чтобы создать и использовать Simulink.Parameter возразите названному myParam задавать параметр Gain блока Gain:

  1. В модели, на вкладке Modeling, под Design, click Property Inspector.

  2. В модели кликните по целевому блоку Gain. Property Inspector показывает свойства и параметры блока.

  3. Установите значение параметра Gain к myParam.

  4. Рядом со значением параметров кликните по кнопке действий и выберите Create.

  5. В диалоговом окне Create New Data, набор Value к Simulink.Parameter(15.23) и нажмите Create.

    Simulink.Parameter объект, myParam, появляется в базовом рабочем пространстве. Диалоговое окно свойства показывает что объектно-ориентированная память значение параметров 15.23 в свойстве Value.

  6. Используйте диалоговое окно свойства, чтобы задать другие характеристики для параметров блоков путем корректировки свойств объектов. Например, чтобы задать минимальные и максимальные значения параметр может взять, использовать свойства Minimum и Maximum.

В процессе моделирования параметр Gain теперь использует значение 15.23.

Совместно использовать данные об интерполяционной таблице при помощи Simulink.LookupTable и Simulink.Breakpoint объекты, смотрите Пакет Разделяемые Данные о Точке останова и Таблице для Интерполяционных таблиц.

Используйте объекты сигнала

Можно сопоставить сигнальную линию или состояние блока, такое как состояние блока Unit Delay, с объектом сигнала.

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

  1. В модели, на вкладке Modeling, нажимают Model Data Editor.

  2. В Model Data Editor выберите вкладку Signals.

  3. В модели выберите целевой сигнал. Model Data Editor подсвечивает строку, которая соответствует сигналу.

  4. В Model Data Editor, в столбце Name, дают сигналу имя, такое как mySig.

  5. Нажмите кнопку рядом с именем сигнала. Выберите Create and Resolve.

  6. В диалоговом окне Create New Data, набор Value к Simulink.Signal. Используйте Location выпадающий список, чтобы выбрать рабочую область, чтобы хранить объект (значением по умолчанию является Base Workspace). Нажмите Create.

    Simulink.Signal объект mySig появляется в целевой рабочей области. Simulink выбирает свойство Signal name must resolve to Simulink signal object сигнала, которое обеспечивает сигнал в модели, чтобы использовать свойства что объектно-ориентированная память сигнала. Чтобы изучить, как управлять путем, которые сигнализируют о решимости имен сигнализировать об объектах, смотрите Разрешение Символа.

    Диалоговое окно свойства нового объекта открывается.

  7. Используйте диалоговое окно свойства, чтобы задать характеристики сигнала. Нажмите OK.

Сконфигурировать программно сигнал:

% Create the signal object.
mySig = Simulink.Signal;
mySig.DataType = 'boolean';

% Get a handle to the block port that creates the
% target signal.
portHandles = get_param('myModel/myBlock','portHandles');
outportHandle = portHandles.Outport;

% Specify the programmatic port parameter 'Name'.
set_param(outportHandle,'Name','mySig')

% Set the port parameter 'MustResolveToSignalObject'.
set_param(outportHandle,'MustResolveToSignalObject','on')

Чтобы сконфигурировать программно блок Outport корневого уровня, необходимо использовать немного отличающийся метод:

% Create the signal object.
mySig = Simulink.Signal;
mySig.DataType = 'boolean';

% Specify the programmatic block parameter 'SignalName'.
set_param('myModel/myOutport','SignalName','mySig')

% Set the block parameter 'MustResolveToSignalObject'.
set_param('myModel/myOutport','MustResolveToSignalObject','on')

Для состояний.  Можно использовать объект сигнала, чтобы управлять характеристиками состояния блока, такими как характеристика блока Discrete-Time Integrator.

  1. В модели, на вкладке Modeling, нажимают Model Data Editor.

  2. В Model Data Editor выберите вкладку States.

  3. В модели выберите блок, который питает целевое состояние. Model Data Editor подсвечивает строку, которая соответствует состоянию.

  4. В Model Data Editor, в столбце Name, дают состоянию имя, такое как myState.

  5. Нажмите кнопку рядом с именем состояния. Выберите Create and Resolve.

  6. В диалоговом окне Create New Data, набор Value к Simulink.Signal. Используйте Location выпадающий список, чтобы выбрать рабочую область, чтобы хранить объект (значением по умолчанию является Base Workspace). Нажмите Create.

    Simulink.Signal объект myState появляется в целевой рабочей области. Simulink выбирает параметры блоков State name must resolve to Simulink signal object, который обеспечивает состояние в модели, чтобы использовать свойства что объектно-ориентированная память сигнала. Чтобы изучить, как управлять путем, которые утверждают, имена разрешают сигнализировать об объектах, видеть Разрешение Символа.

    Диалоговое окно свойства нового объекта открывается.

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

Сконфигурировать программно состояние:

% Create the signal object.
myState = Simulink.Signal;
myState.DataType = 'int16';

% Set the state name in the block.
set_param('myModel/myBlock','StateName','myState')

% Set the port parameter 'StateMustResolveToSignalObject'.
set_param('myModel/myBlock','StateMustResolveToSignalObject','on')

Свойства объекта данных

Чтобы управлять параметром и характеристиками сигнала с помощью объектов данных, вы задаете значения для свойств объекта данных. Например, параметр и объекты данных сигнала имеют DataType свойство, которое определяет тип данных целевых параметров блоков или сигнала. Определения классов данных определяют имена, типы значения, значения по умолчанию и допустимые диапазоны значений свойств объекта данных.

Можно использовать или Model Explorer или команды MATLAB, чтобы изменить свойства объекта данных.

Для списка свойств объектов сигнала смотрите Simulink.Signal. Для списка свойств объекта параметра смотрите Simulink.Parameter.

Используйте Model Explorer, чтобы изменить свойства объекта

Чтобы использовать Model Explorer, чтобы изменить свойства объекта, выберите рабочую область, которая содержит объект в панели Иерархии модели Model Explorer. Затем выберите объект в панели Содержимого Model Explorer.

Model Explorer отображает диалоговое окно свойства объекта в своей Диалоговой панели (если панель отображается).

Можно сконфигурировать Model Explorer, чтобы отобразить некоторых или все свойства объекта в панели Содержимого (см. Model Explorer). Чтобы отредактировать свойство, кликните по его значению в Содержимом или Диалоговой панели. Значение заменяется управлением, которое позволяет вам изменять значение.

Используйте Команды MATLAB, чтобы изменить свойства объекта

Можно также использовать команды MATLAB, чтобы получить и установить свойства объекта данных. Используйте следующую запись через точку в командах MATLAB и программах, чтобы получить и установить свойства объекта данных:

value = obj.property;
obj.property = value;

где obj переменная, что ссылки или объект, если это - экземпляр класса значения или указателя на объект, если объект является экземпляром класса Handle (см. Указатель По сравнению с Классами Значения), PROPERTY имя свойства и VALUE значение свойства. Например, следующий код MATLAB создает объект псевдонима типа данных (т.е. экземпляр Simulink.AliasType) и устанавливает его базовый тип на uint8:

gain = Simulink.AliasType;
gain.BaseType = 'uint8';

Можно использовать запись через точку рекурсивно, чтобы получить и установить свойства объектов, которые являются значениями свойств другого объекта, e.g.,

gain.CoderInfo.StorageClass = 'ExportedGlobal';

Создайте объекты данных из встроенного пакета класса данных Simulink

Встроенный пакет Simulink задает два класса объекта данных Simulink.Parameter и Simulink.Signal. Можно создать эти объекты данных с помощью пользовательского интерфейса или программно.

Создайте объекты данных

  1. В панели Model Hierarchy Model Explorer выберите рабочую область, чтобы содержать объекты данных. Например, нажмите Base Workspace.

  2. На панели инструментов кликните по стреле рядом с Add Parameter или Add Signal . Из выпадающего списка выберите Simulink Parameter или Simulink Signal.

    Параметр или объект сигнала появляются в базовом рабочем пространстве. Именем по умолчанию для новых объектов параметра является Param. Именем по умолчанию для новых объектов сигнала является Sig.

  3. Чтобы создать больше объектов, нажмите Add Parameter или Add Signal.

Создать Simulink.LookupTable и Simulink.Breakpoint объекты, на панели инструментов Model Explorer, используют кнопку.

Программно создайте объекты данных

% Create a Simulink.Parameter object named myParam whose value is 15.23.
myParam = Simulink.Parameter(15.23);

% Create a Simulink.Signal object named mySig.
mySig = Simulink.Signal;

Преобразуйте числовую переменную в объект параметра

Можно преобразовать числовую переменную в Simulink.Parameter объект можно следующим образом.

/* Define numeric variable in base workspace
myVar = 5; 
/* Create data object and assign variable value
myObject = Simulink.Parameter(myVar); 

Создайте объекты данных из другого пакета класса данных

Можно создать собственный пакет, чтобы задать пользовательские классы объекта данных тот подкласс Simulink.Parameter и Simulink.Signal. Можно использовать этот метод, чтобы добавить собственные свойства и методы к объектам данных. Если у вас есть лицензия Embedded Coder®, можно задать разделы storage classes и memory в пакете. Для получения дополнительной информации о создании пакета класса данных, смотрите, Задают Классы Данных.

Создайте объекты данных из другого пакета

Предположим, что вы задаете пакет класса данных под названием myPackage. Прежде чем можно будет создать объекты данных из пакета, необходимо включать папку, содержащую папку пакета на пути MATLAB.

  1. В панели Model Hierarchy Model Explorer выберите рабочую область, чтобы содержать объекты данных. Например, нажмите Base Workspace.

  2. Кликните по стреле рядом с Add Parameter или Add Signal и выберите Customize class lists.

  3. В диалоговом окне установите флажок рядом с классом, который вы хотите. Например, установите флажки рядом с myPackage.Parameter и myPackage.Signal. Нажмите OK.

  4. Кликните по стреле рядом с Add Parameter или Add Signal. Выберите класс для объекта данных, который вы хотите создать. Например, выберите myPackage Parameter или myPackage Signal.

    Параметр или объект сигнала появляются в базовом рабочем пространстве. Именем по умолчанию для новых объектов параметра является Param. Именем по умолчанию для новых объектов сигнала является Sig.

  5. Создать больше объектов данных из пакета myPackage, нажмите Add Parameter или Add Signal снова.

Программно создайте объекты данных из другого пакета

Предположим, что вы задаете пакет класса данных под названием myPackage. Прежде чем можно будет создать объекты данных из пакета, необходимо включать папку, содержащую папку пакета на пути MATLAB.

% Create a myPackage.Parameter object named 
% myParam whose value is 15.23.
myParam = myPackage.Parameter(15.23);

% Create a myPackage.Signal object named mySig.
mySig = myPackage.Signal;

Создайте объекты данных непосредственно из диалоговых окон

Когда вы открываете диалоговое окно Signal Properties, диалоговое окно блока или Property Inspector (на вкладке Modeling, под Design, нажмите Property Inspector), можно эффективно создать сигнал или объект данных параметра в словаре данных или рабочей области.

Создайте объект параметра из диалогового окна блока

  1. В числовых параметрах блоков в диалоговом окне задайте имя, которое вы хотите для объекта данных. Например, задайте имя myParam.

  2. Нажмите кнопку рядом со значением параметров блоков. Выберите Create.

  3. В диалоговом окне Create New Data задайте Value как Simulink.Parameter.

    В качестве альтернативы можно задать имя класса данных, который вы создали, такие как myPackage.Parameter. Можно также использовать выпадающий список, чтобы выбрать из списка доступных классов объекта данных.

  4. Задайте Location как Base Workspace и нажмите Create.

    Можно использовать опцию Location, чтобы выбрать рабочую область, чтобы содержать новый объект данных. Если модель соединена со словарем данных, можно принять решение создать объект данных в словаре.

  5. В диалоговом окне, которое открывается, сконфигурируйте свойства объекта данных. Задайте числовое значение для параметра в поле Value. Нажмите OK.

    Объект параметра myParam появляется в базовом рабочем пространстве.

  6. В диалоговом окне параметров блоков нажмите OK.

Создайте объект сигнала из диалогового окна свойств сигнала

  1. В поле Signal name задайте имя сигнала, такое как mySig. Нажмите Apply.

  2. Нажмите кнопку рядом со значением Signal name. Выберите Create and Resolve.

  3. В диалоговом окне Create New Data задайте Value как Simulink.Signal.

    В качестве альтернативы можно задать имя класса данных, который вы создали, такие как myPackage.Signal. Кроме того, из выпадающего списка можно выбрать класс объекта данных, который существует на пути MATLAB.

  4. Задайте Location как Base Workspace и нажмите Create.

    Можно использовать опцию Location, чтобы выбрать рабочую область, чтобы содержать новый объект данных. Если модель соединена со словарем данных, можно принять решение создать объект данных в словаре.

  5. В диалоговом окне, которое открывается, сконфигурируйте свойства объекта данных и нажмите OK.

    Объект mySig сигнала появляется в базовом рабочем пространстве. В диалоговом окне Signal Properties выбрано свойство Signal name must resolve to Simulink signal object.

Создайте объекты данных для модели Используя мастер объекта данных

Чтобы создать объекты данных, которые представляют сигналы, параметры и состояния в модели, можно использовать Мастер Объекта данных. Мастер находит данные в модели, которые не имеют соответствующих объектов данных.

На основе технических требований в модели мастер создает объекты и присваивает эти характеристики:

  • Сигнал, параметр или имя состояния.

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

  • Тип данных. Для объектов сигнала, включает типы псевдонима, такие как Sumlink.AliasType и Simulink.NumericType.

  1. В Редакторе Simulink, на вкладке Modeling, под Design, нажимают Data Object Wizard.

  2. В поле Model name введите имя модели, которую вы хотите искать.

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

  3. Под Find options установите флажки рядом с типами объекта данных, которые вы хотите создать. Таблица описывает опции.

    ОпцияОписание
    Root inputs Названные сигналы от корневого уровня блоки Inport.
    Root outputsНазванные сигналы от корневого уровня блоки Outport.
    States

    Состояния сопоставили с этими дискретными блоками:

    Discrete Filter
    Discrete State-Space
    Discrete-Time Integrator
    Discrete Transfer Fcn
    Discrete Zero-Pole
    Memory
    Discrete-Time PID Controller
    Discrete-Time PID Controller (2DOF)
    Unit Delay
    Data storesХранилища данных. Для получения дополнительной информации о хранилищах данных, смотрите Хранилища Локальных и Глобальных данных.
    Block outputsНазванные сигналы, источники которых являются блоками некорневого уровня.
    Parameters
    • Числовые параметры, например, параметры в этих блоках:

      Constant
      Gain
      Relay
    • Данные Stateflow® с набором Scope к Parameter.

    Alias typesЗаменяющие имена типа данных, которые вы задаете в Configuration Parameters> Code Generation> Data Type Replacement. Если у вас есть лицензия Embedded Coder, Мастер Объекта данных создает Simulink.AliasType объекты для этих заменяющих имен типа данных. Для получения дополнительной информации о замене типа данных, смотрите Параметры конфигурации Модели: Замена Типа данных Генерации кода (Embedded Coder)
  4. Нажмите Find.

    Таблица объекта данных показывает предложенные объекты.

  5. (Необязательно), Чтобы создать объекты из класса данных кроме классов по умолчанию, установите флажок рядом с объектами, класс которых вы хотите изменить. Чтобы выбрать все объекты, нажмите Select All. Нажмите Change Class. В диалоговом окне, которое открывается, выберите классы при помощи выпадающих списков рядом с Parameter и Signal.

    Если классы, которые вы хотите, не появляются в выпадающем списке, выберите Customize class lists. В диалоговом окне, которое открывается, установите флажок рядом с классами, которые вы хотите и нажимаете OK.

    Изменить параметр по умолчанию и классы сигнала что использование мастера, чтобы предложить объекты:

    • На панели Model Hierarchy Model Explorer выберите рабочую область. Например, выберите Base Workspace.

    • На панели инструментов кликните по стреле рядом с Add Parameter или Add Signal .

    • Из выпадающего списка выберите класс, который вы хотите, чтобы мастер использовал. Например, выберите myPackage Parameter или myPackage Signal.

      Параметр или объект сигнала появляются в выбранной рабочей области. Именем по умолчанию для новых объектов параметра является Param. Именем по умолчанию для новых объектов сигнала является Sig.

      Следующий раз, когда вы используете Мастер Объекта данных, мастер, предлагает объекты с помощью параметра или класса сигнала, который вы выбрали в Model Explorer.

  6. Установите флажок рядом с предложенными объектами, которые вы хотите создать. Чтобы выбрать все предложенные объекты, нажмите Select All.

  7. Нажмите Create.

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

    Мастер изменяет настройки в вашей модели в зависимости от параметра конфигурации Configuration Parameters> Diagnostics> Data Validity> Signal resolution.

    • Если вы устанавливаете параметр на Explicit only, мастер обеспечивает соответствующие сигналы и состояния в вашей модели, чтобы решить к новым объектам сигнала. Мастер выбирает опцию Signal name must resolve to Simulink signal object в каждом диалоговом окне Signal Properties и State name must resolve to Simulink signal object в каждом диалоговом окне блока.

    • Если вы устанавливаете параметр на Explicit and implicit или Explicit and warn implicit, мастер не изменяет настройки Signal name must resolve to Simulink signal object или State name must resolve to Simulink signal object ни для каких сигналов или состояний.

    Рассмотрите выключение неявного объектного разрешения сигнала для вашей модели при помощи функции disableimplicitsignalresolution. Для получения дополнительной информации смотрите Явное и Неявное Разрешение Символа.

Поиск и устранение проблем мастера объекта данных

  • Мастер Объекта данных компилирует модели для генерации кода для того, чтобы предложить создание объектов сигнала. Из-за этого мастер не может использоваться для моделей, которые не допустимы для генерации кода.

  • Мастер Объекта данных не предлагает создание объектов данных для этих сущностей в модели:

    • Несколько отдельных сигналов, которые имеют то же имя.

    • Сигнал с тем же именем как переменная используется в параметрах блоков.

    • Сигнал, который испытывает недостаток в одном непрерывном исходном блоке.

    • Сигнал, исходный блок которого комментируется или комментируется через.

    • Элементы данных, которые представляются неактивные блоками Variant Sink и Variant Source. Мастер предлагает объекты только для элементов данных, которые сопоставлены с активными блоками.

    • Сигналы и состояния, когда вы устанавливаете параметр конфигурации модели Signal resolution на None.

Создайте объекты данных из внешнего источника данных программно

В этом примере показано, как создать объекты данных на основе внешнего источника данных (такие как файл Microsoft® Excel®) при помощи скрипта.

  1. Создайте новый файл скрипта MATLAB.

  2. Поместите информацию в файл, который описывает данные во внешнем файле, который вы хотите преобразовать в объекты данных. Например, следующая информация создает два Simulink объекты данных с обозначенными свойствами. Первое для параметра, и второе для сигнала:

    % Parameters
    ParCon = Simulink.Parameter;
    ParCon.CoderInfo.StorageClass = 'Custom'
    ParCon.CoderInfo.CustomStorageClass ='Const';
    ParCon.Value = 3;
    % Signals
    SigGlb = Simulink.Signal;
    SigGlb.DataType = 'int8';

  3. Запустите файл скрипта. Объекты данных появляются в рабочем пространстве MATLAB.

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

Можно использовать эти функции, чтобы взаимодействовать с файлами, которые являются внешними к MATLAB:

  • xmlread

  • xmlwrite

  • xlsread

  • xlswrite

  • csvread

  • csvwrite

  • dlmread

  • dlmwrite

Методы объекта данных

Классы данных задают функции, вызываемые методы, для создания и управления объектами, которые они задают. Класс может задать любой из следующих видов методов.

Динамические методы

Динамический метод является методом, идентичность которого зависит от своего имени и класса объекта, заданного неявно или явным образом в качестве ее первого аргумента. Можно использовать или функциональную или запись через точку, чтобы задать этот объект, который должен быть экземпляром класса, который задает метод или экземпляр подкласса класса, который задает метод. Например, предположите класс A задает метод под названием setName это присваивает имя к экземпляру A. Далее, предположите, что рабочее пространство MATLAB содержит экземпляр присвоенного к переменной obj. Затем можно использовать любой из следующих операторов, чтобы присвоить имя 'foo' к obj:

obj.setName('foo');
setName(obj, 'foo');

Класс может задать набор методов, имеющих то же имя как метод, заданный одним из его суперклассов. В этом случае метод, заданный подклассом, заменяет поведение метода, заданного родительским классом. Simulink определяет, какой метод вызвать во времени выполнения от класса объекта, который вы задаете в качестве его первого или неявного аргумента. Следовательно, термин динамический метод.

Примечание

Большинство методов Объекта данных Simulink является динамическими методами. Если документация для метода не задает в противном случае, можно принять, что метод является динамическим методом.

Статические методы

Статический метод является методом, идентичность которого зависит только от своего имени и следовательно не может измениться во времени выполнения. Чтобы вызвать статический метод, используйте его полностью определенное имя, которое включает имя класса, который задает сопровождаемый под названием сам метод. Например, Simulink.ModelAdvisor класс задает статический метод под названием getModelAdvisor. Полностью определенным именем этого статического метода является Simulink.ModelAdvisor.getModelAdvisor. Следующий пример иллюстрирует вызов статического метода.

ma = Simulink.ModelAdvisor.getModelAdvisor('vdp');

Конструкторы

Каждый класс данных задает метод для создания экземпляров того класса. Имя метода совпадает с именем класса. Например, имя Simulink.Parameter конструктор класса Simulink.Parameter. Конструкторы, заданные классами данных Simulink, не берут аргументов.

Значение, возвращенное конструктором, зависит от того, является ли его класс классом Handle или классом значения. Конструктор для класса Handle возвращает указатель на экземпляр, который это создает, если класс экземпляра является классом Handle; в противном случае это возвращает сам экземпляр (см. Указатель По сравнению с Классами Значения).

Обработайте по сравнению с классами значения

Классы Simulink, включая классы объекта данных, попадают в две категории: классы значения и классы Handle.

О классах значения

Конструктор для класса значения (см. Конструкторов) возвращает экземпляр класса, и экземпляр постоянно сопоставлен с переменной MATLAB, которой это первоначально присвоено. Переприсвоение или передача переменной к функции заставляют MATLAB создавать и присваивать или передавать копию исходного объекта.

Например, Simulink.NumericType класс значения. Выполнение следующих операторов

x = Simulink.NumericType;
y = x;

создает два экземпляра класса Simulink.NumericType в рабочей области, одном присвоенном к переменной x и другой к y.

О Классах Handle

Конструктор для класса Handle возвращает объект указателя. Указатель может быть присвоен нескольким переменным или передан функциям, не заставляя копию исходного объекта быть созданным. Например, Simulink.Parameter класс является классом Handle. Выполнение

x = Simulink.Parameter;
y = x;

создает только один экземпляр Simulink.Parameter класс в рабочем пространстве MATLAB. X и Y переменных оба относятся к экземпляру через его указатель.

Программа может изменить экземпляр класса Handle путем изменения любой переменной, которая ссылается на нее, e.g., продолжая предыдущий пример,

x.Description = 'input gain';
y.Description
ans =
input gain

Большинство классов Объекта данных Simulink является классами значения. Исключения включают Simulink.Signal и Simulink.Parameter класс.

Чтобы определить, является ли значение переменной объектом (класс значения) или указатель на объект, смотрите, Определяют, Является ли Объектом Указатель.

Скопируйте объекты указателя

Используйте метод копии объекта указателя создать копии экземпляров того объекта. Например, ConfigSet объект указателя, который представляет наборы конфигурации модели. Следующий код создает копию активной конфигурации модели текущей модели и присоединяет ее к модели, когда альтернативная настройка связала с разработкой моделей.

activeConfig = getActiveConfigSet(gcs);
develConfig = copy(activeConfig);
develConfig.Name = 'develConfig';
attachConfigSet(gcs, develConfig);

Сравните объекты данных

Объекты данных Simulink предоставляют метод, названный isequal, это определяет, равны ли значения свойства объекта. Этот метод сравнивает значения свойств одного объекта с теми, которые принадлежат другому объекту, и возвращает true (1) если все значения являются тем же самым или ложью (0) в противном случае. Например, следующий код инстанцирует двух объектов сигнала (A и B) и задает значения для конкретных свойств.

A = Simulink.Signal;
B = Simulink.Signal;
A.DataType = 'int8';
B.DataType = 'int8';
A.InitialValue = '1.5';
B.InitialValue = '1.5';

Позже, используйте isequal метод, чтобы проверить, что свойства объектов A и B равны.

result = isequal(A,B)
result =

     1

Разрешите конфликты в настройке объектов сигнала для генерации кода

Если сигнал задан в диалоговом окне Signal Properties, и объект сигнала того же имени задан при помощи командной строки или в Model Explorer, потенциал существует для неоднозначности, когда механизм Simulink пытается разрешить символ, представляющий имя сигнала. Один способ разрешить неоднозначность состоит в том, чтобы указать что твердость сигнала к Simulink.Signal объект данных. Выберите опцию Signal name must resolve to Simulink signal object в диалоговом окне Signal Properties.

Чтобы сконфигурировать данные сигнала, используйте API отображений редактора или кода Отображений Кода, чтобы добавить сигнал в отображения типового кодекса и установить свойства класса памяти и класс памяти. Для Simulink Coder™ смотрите, Конфигурируют Данные сигнала для генерации кода C (Simulink Coder). Для Embedded Coder смотрите, Конфигурируют Данные сигнала для генерации кода C (Embedded Coder).

Создайте персистентные объекты данных

Чтобы сохранить объекты данных так, чтобы они сохранились, когда вы закрываете MATLAB, вы можете:

  • Храните объекты в словаре данных или рабочем пространстве модели. Чтобы решить, где постоянно сохранить данные модели, смотрите, Определяют, Где Сохранить Переменные и Объекты для Моделей Simulink.

  • Используйте save команда, чтобы сохранить объекты данных в MAT-файле и load команда, чтобы восстановить их к базовому рабочему пространству MATLAB в том же самом или более позднем сеансе. Сконфигурируйте модель, чтобы загрузить объекты из MAT-файла или файла скрипта, когда модель загрузит.

Чтобы загрузить объекты данных из файла, когда вы загружаете модель, запишите скрипт, который создает объекты и конфигурирует их свойства. В качестве альтернативы сохраните объекты в MAT-файле. Затем используйте или скрипт или команду загрузки как PreLoadFcn стандартная программа коллбэка для модели, которая использует объекты. Предположим, что вы сохраняете объекты данных в файле с именем data_objects.mat, и модель, к которой они применяются, открыта и активна. В командной строке, входя:

set_param(gcs, 'PreLoadFcn', 'load data_objects');

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

Определения классов сохраненных объектов должны существовать на пути MATLAB для них, чтобы быть восстановленными. Если класс сохраненного объекта приобретает новое имущество после того, как объект сохранен, Simulink добавляет новые свойства в восстановленную версию объекта. Если класс утрачивает имущества после того, как объект сохранен, только свойства, которые остаются, восстанавливаются.

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

| | | |

Похожие темы