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

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

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

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

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

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

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

package.class

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

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

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

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

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

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

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

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

  1. В модели выберите View> Property Inspector.

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

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

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

  5. В диалоговом окне Create New Data, установленном Значении к Simulink.Parameter(15.23) и нажимают Create.

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

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

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

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

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

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

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

  1. В модели выберите View> Model Data Editor.

  2. В Редакторе Данных модели выберите вкладку Signals.

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

  4. В Редакторе Данных модели, в столбце Имени, дают сигналу имя, такое как mySig.

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

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

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

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

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

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

% 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. В модели выберите View> Model Data Editor.

  2. В Редакторе Данных модели выберите вкладку Штатов.

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

  4. В Редакторе Данных модели, в столбце Имени, дают состоянию имя, такое как myState.

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

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

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

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

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

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

% 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')

Data Object Properties

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

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

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

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

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

Образцовый Проводник отображает диалоговое окно свойства объекта в своей Диалоговой панели (если панель видима).

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

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

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

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

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

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

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

gain.CoderInfo.StorageClass = 'ExportedGlobal';

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

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

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

  1. В Образцовой панели Иерархии модели Проводника выберите рабочую область, чтобы содержать объекты данных. Например, нажмите Base Workspace.

  2. На панели инструментов щелкните, стрелка рядом с Добавляют Параметр или Добавляют Сигнал. Из выпадающего списка выберите 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. Можно использовать этот метод, чтобы добавить собственные свойства и методы к объектам данных. Если у вас есть Встроенная лицензия Coder®, можно задать разделы custom storage classes и memory в пакете. Для получения дополнительной информации о создании пакета класса данных, смотрите, Задают Классы Данных.

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

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

  1. В Образцовой панели Иерархии модели Проводника выберите рабочую область, чтобы содержать объекты данных. Например, нажмите Base Workspace.

  2. Щелкните стрелка рядом с Добавляют Параметр или Добавляют Сигнал и выбирают списки учащихся Customize.

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

  4. Щелкните стрелка рядом с Добавляют Параметр или Добавляют Сигнал. Выберите класс для объекта данных, который вы хотите создать. Например, выберите myPackage Параметр или Сигнал myPackage.

    Параметр или объект сигнала появляются в базовом рабочем пространстве. Именем по умолчанию для новых объектов параметра является 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, блочное диалоговое окно или Инспектор свойств (Представление> Инспектор свойств), можно эффективно создать сигнал или объект данных параметра в словаре данных или рабочей области.

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

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

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

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

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

  4. Задайте Местоположение как Base Workspace и нажмите Create.

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

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

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

  6. В блочном диалоговом окне параметра нажать ОК.

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

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

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

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

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

  4. Задайте Местоположение как Base Workspace и нажмите Create.

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

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

    Объект mySig сигнала появляется в базовом рабочем пространстве. В диалоговом окне Signal Properties имя Сигнала должно решить к свойству объекта Сигнала Simulink, выбран.

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

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

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

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

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

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

  1. В Редакторе Simulink выберите Code> Data Objects> Data Object Wizard.

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

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

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

    ОпцияОписание
    Корневые входные параметры Названные сигналы от корневого уровня блоки Inport.
    Корневые выходные параметрыНазванные сигналы от блоков Выходного порта корневого уровня.
    Состояния

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

    Дискретный фильтр
    Дискретное пространство состояний
    Интегратор дискретного времени
    Дискретная передача Fcn
    Дискретный нулевой полюсный
    Memory
    Контроллер ПИДа дискретного времени
    Контроллер ПИДа дискретного времени (2DOF)
    Единичная задержка
    Хранилища данныхХранилища данных. Для получения дополнительной информации о хранилищах данных, смотрите Хранилища Локальных и Глобальных данных.
    Блокируйте выходные параметрыНазванные сигналы, источники которых являются блоками некорневого уровня.
    Параметры
    • Числовые параметры, например параметры в этих блоках:

      Постоянный
      Усиление
      Реле
    • Данные Stateflow® с набором Осциллографа к Parameter.

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

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

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

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

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

    • На Образцовой панели Иерархии модели Проводника выберите рабочую область. Например, выберите Base Workspace.

    • На панели инструментов щелкните, стрелка рядом с Добавляют Параметр или Добавляют Сигнал.

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

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

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

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

  7. Нажмите Create.

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

    Мастер изменяет настройки в вашей модели в зависимости от Параметров конфигурации параметра конфигурации> Диагностика> Законность Данных> разрешение Сигнала.

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

    • Если вы устанавливаете параметр на Explicit and implicit или Explicit and warn implicit, мастер не изменяет настройки имени Сигнала, должен решить к объекту Сигнала Simulink, или имя состояния должно решить к объекту Сигнала Simulink для любых сигналов или состояний.

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

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

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

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

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

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

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

  • Элементы данных, которые представляются неактивные Различным Источником и Различными блоками Приемника. Мастер предлагает объекты только для элементов данных, которые сопоставлены с активными блоками.

  • Сигналы и состояния, когда вы устанавливаете образцовое разрешение Сигнала параметра конфигурации 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 workspace.

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

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

  • xmlread

  • xmlwrite

  • xlsread

  • xlswrite

  • csvread

  • csvwrite

  • dlmread

  • dlmwrite

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

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

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

Динамический метод является методом, идентичность которого зависит от своего имени и класса объекта, заданного неявно или явным образом в качестве ее первого аргумента. Можно использовать или функциональную или запись через точку, чтобы задать этот объект, который должен быть экземпляром класса, который задает метод или экземпляр подкласса класса, который задает метод. Например, предположите класс, A задает метод под названием setName, который присваивает имя к экземпляру A. Далее, предположите, что MATLAB workspace содержит экземпляр присвоенного к переменному 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 workspace. X и y переменных оба относится к экземпляру через его указатель.

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

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

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

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

Скопируйте Классы Handle

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

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

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

Объекты данных Simulink предоставляют метод, названный isequal, который определяет, равны ли значения свойства объекта. Этот метод сравнивает значения свойств одного объекта с теми, которые принадлежат другому объекту, и возвращается верный (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, и объект сигнала того же имени задан при помощи командной строки или в Образцовом Проводнике, потенциал существует для неоднозначности, когда механизм Simulink пытается разрешить символ, представляющий имя сигнала. Один способ разрешить неоднозначность состоит в том, чтобы указать что твердость сигнала к Объекту данных Simulink. Выбор имя Сигнала должен решить к опции объекта Сигнала Simulink в диалоговом окне Signal Properties. Вы не можете задать свойство Класса памяти на вкладке Code Generation в диалоговом окне Signal Properties.

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

Сигнал и сигнал возражают SinSig, у обоих есть класс памяти Model default. Поэтому SinSig решает к объекту SinSig сигнала.

Примечание

Правила для совместимости между блочными объектами состояний/сигнала идентичны данным для объектов сигналов/сигнала.

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

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

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

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

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

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

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

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

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

| | | |

Похожие темы

Была ли эта тема полезной?