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

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

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

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

Можно настроить свойства и методы объектов данных путем определения подклассов встроенных классов данных. Дополнительные сведения о создании пакета классов данных см. в разделе Определение классов данных.

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

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

package.class

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

  • class - имя класса.

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

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

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

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

Использование объектов параметров

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

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

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

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

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

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

    The 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. В диалоговом окне «Создание новых данных» установите Value равным Simulink.Signal. Используйте выпадающий список Location, чтобы выбрать рабочую область для хранения объекта (значение по умолчанию Base Workspace). Нажмите Create.

    The 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. В диалоговом окне «Создание новых данных» установите Value равным Simulink.Signal. Используйте выпадающий список Location, чтобы выбрать рабочую область для хранения объекта (значение по умолчанию Base Workspace). Нажмите Create.

    The 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, чтобы отобразить некоторые или все свойства объекта на панели Содержимое (Contents) (см. Model Explorer). Чтобы изменить свойство, щелкните его значение на панели «Содержимое» или «Диалоговое окно». Значение заменяется элементом управления, который позволяет изменять значение.

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

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

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

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

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

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

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® лицензия, можно задать классы памяти и разделы памяти в пакете. Дополнительные сведения о создании пакета классов данных см. в разделе Определение классов данных.

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

Предположим, что вы задаете пакет класса данных 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;

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

Когда вы открываете диалоговое окно Свойства, диалоговое окно блока или 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 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 в каждом диалоговом окне Свойств сигнала» и 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 Source и Variant Sink. Мастер предлагает объекты только для элементов данных, связанных с активными блоками.

    • Сигналы и состояния, когда вы устанавливаете параметр конфигурации модели 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 содержит образец A, назначенный переменной 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 или классом value. Конструктор класса handle возвращает указатель на образец, который он создает, если класс образца является классом handle; в противном случае возвращается сам образец (см. Указатель Versus Значения Классов).

Указатели от значения

Классы 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 путем изменения любой переменной, которая ссылается на него, например, продолжая предыдущий пример,

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

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

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

Чтобы сконфигурировать данные сигнала, используйте редактор Code Mappings или API отображений кода, чтобы добавить сигнал к отображениям кода модели и задать свойства класса памяти и класса памяти. Для получения Simulink Coder™ смотрите Configure Signal Data for C Code Generation (Simulink Coder). Для Embedded Coder смотрите Configure Signal Data for Генерация Кода C (Embedded Coder).

Создание устойчивых объектов данных

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

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

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

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

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

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

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

См. также

| | | |

Похожие темы