В этом примере показано, как подклассифицировать Simulink® классы данных.
Использование MATLAB® синтаксис класса для создания класса данных в пакете. При необходимости присвойте свойства классу данных и определите классы памяти.
Просмотрите +SimulinkDemos
пакет классов данных в папке
(откройте).matlabroot
/ toolbox/simulink/simdemos/dataclasses
Этот пакет содержит предопределенные классы данных.
Скопируйте папку в место, где необходимо задать классы данных.
Переименуйте папку +mypkg
и добавить родительскую папку в путь MATLAB.
Измените определения классов данных.
Создайте папку пакета +mypkg
и добавить родительскую папку в путь MATLAB.
Создайте папки классов @Parameter
и @Signal
внутри +mypkg
.
Примечание
Simulink требует, чтобы классы данных были определены внутри +Package/@Class
папки.
В @Parameter
папка, создайте файл MATLAB Parameter.m
и откройте его для редактирования.
Задайте класс данных, который является подклассом Simulink.Parameter
использование синтаксиса класса MATLAB.
classdef Parameter < Simulink.Parameter end % classdef
Как использовать пользовательское имя класса кроме Parameter
или Signal
, назовите папки классов с помощью пользовательского имени. Например, чтобы задать класс mypkg.myParameter
:
Определите класс данных как подкласс Simulink.Parameter
или Simulink.Signal
.
classdef myParameter < Simulink.Parameter end % classdef
В определении класса назовите метод конструктора следующим myParameter
или mySignal
.
Назовите папку класса, которая содержит определение класса, следующим @myParameter
или @mySignal
.
The properties
и end
ключевые слова заключают блок определения свойства.
classdef Parameter < Simulink.Parameter properties % Unconstrained property type Prop1 = []; end properties(PropertyType = 'logical scalar') Prop2 = false; end properties(PropertyType = 'char') Prop3 = ''; end properties(PropertyType = 'char',... AllowedValues = {'red'; 'green'; 'blue'}) Prop4 = 'red'; end end % classdef
Если вы добавляете свойства к подклассу Simulink.Parameter
, Simulink.Signal
, или Simulink.CustomStorageClassAttributes
можно задать следующие типы свойств.
Тип свойства | Синтаксис |
---|---|
Двойной номер | properties(PropertyType = 'double scalar') |
int32 число | properties(PropertyType = 'int32 scalar') |
Логический номер | properties(PropertyType = 'logical scalar') |
Вектор символов (char) | properties(PropertyType = 'char') |
Вектор символов с ограниченным набором допустимых значений | properties(PropertyType = 'char', AllowedValues = {'a', 'b', 'c'}) |
Если вы используете валидацию свойств MATLAB (см. «Валидация значений свойств») вместо PropertyType
свойства отображаются как поле редактирования в диалоговом окне свойств класса. Если вы используете PropertyType
и AllowedValues
, затем диалоговое окно свойств отображений:
Флажок для логических скалярных свойств.
Раскрывающееся меню для векторов символов и AllowedValues
.
Можно добавить конструктор в класс данных для выполнения операций инициализации при создании экземпляра класса. Добавленный конструктор не может потребовать входного параметра.
В этом примере конструктор инициализирует значение объекта obj
на основе необязательного входного параметра.
classdef Parameter < Simulink.Parameter methods function obj = Parameter(optionalValue) if (nargin == 1) obj.Value = optionalValue; end end end % methods end % classdef
Используйте setupCoderInfo
метод для конфигурирования CoderInfo
объект вашего класса. Затем создайте вызов к useLocalCustomStorageClasses
и откройте Custom Storage Class Designer.
В конструкторе в вашем классе данных вызовите useLocalCustomStorageClasses
способ.
classdef Parameter < Simulink.Parameter methods function setupCoderInfo(obj) useLocalCustomStorageClasses(obj, 'mypkg'); obj.CoderInfo.StorageClass = 'Custom'; end end % methods end % classdef
Откройте Custom Storage Class Designer для пакета.
cscdesigner('mypkg')
Задайте классы памяти.
Создайте файл MATLAB myCustomAttribs.m
и откройте его для редактирования. Сохраните этот файл в +mypkg/@myCustomAttribs
папка, где +mypkg
- папка, содержащая @Parameter
и @Signal
папки.
Задайте подкласс Simulink.CustomStorageClassAttributes
использование синтаксиса класса MATLAB. Например, рассмотрим класс памяти, который определяет данные с помощью исходного идентификатора, но также предоставляет альтернативное имя для данных в сгенерированном коде.
classdef myCustomAttribs < Simulink.CustomStorageClassAttributes properties(PropertyType = 'char') AlternateName = ''; end end % classdef
Переопределите реализацию по умолчанию isAddressable
метод для определения, является ли класс памяти доступным для записи.
classdef myCustomAttribs < Simulink.CustomStorageClassAttributes properties(PropertyType = 'logical scalar') IsAlternateNameInstanceSpecific = true; end methods function retVal = isAddressable(hObj, hCSCDefn, hData) retVal = false; end end % methods end % classdef
Переопределите реализацию по умолчанию getInstanceSpecificProps
способ.
Для примеров смотрите CSCTypeAttributes_FlatStructure.m
в папке
(открыто) и matlabroot
\ toolbox\simulink\simulink\dataclasses\+ Simulink\@ CSCTypeAttributes _ FlatStructureCSCTypeAttributes_Unstructed.m
в папке
(откройте).matlabroot
\ toolbox\simulink\simulink\dataclasses\+ mpt\@ CSCTypeAttributes _ Unstructed
Примечание
Это необязательный шаг. По умолчанию все пользовательские атрибуты зависят от экземпляра и могут изменяться для каждого объекта данных. Однако можно ограничить свойства, разрешенные для конкретного экземпляра.
Переопределите реализацию по умолчанию getIdentifiersForInstance
метод для определения идентификаторов для объектов класса данных.
Примечание
В своей реализации по умолчанию этот метод запрашивает имя или идентификатор объекта данных и использует этот идентификатор в сгенерированном коде. Переопределяя этот метод, можно управлять идентификатором объектов данных в сгенерированном коде.
classdef myCustomAttribs < Simulink.CustomStorageClassAttributes properties(PropertyType = 'char') GetFunction = ''; SetFunction = ''; end methods function retVal = getIdentifiersForInstance(hCSCAttrib,... hCSCDefn, hData, identifier) retVal = struct('GetFunction',... hData.CoderInfo.CustomAttributes.GetFunction, ... 'SetFunction', hData.CoderInfo.CustomAttributes.SetFunction); end% end % methods end % classdef
При использовании сгруппированных классов памяти переопределите реализацию по умолчанию getIdentifiersForGroup
метод для определения идентификатора группы в сгенерированном коде.
Для получения примера см. CSCTypeAttributes_FlatStructure.m
в папке
(откройте).matlabroot
\ toolbox\simulink\simulink\dataclasses\+ Simulink\@ CSCTypeAttributes _ FlatStructure