Получите информацию о Блоке Level-2 MATLAB S-function во время выполнения
Этот класс позволяет использовать Level-2 MATLAB® S-функция или другая программа MATLAB для получения информации от Simulink® программное обеспечение и предоставление информации программному обеспечению Simulink о Блок Level-2 MATLAB S-function. Программа Simulink создает образец этого класса для каждого Блок Level-2 MATLAB S-function в модели. Программное обеспечение Simulink передает объект в методы коллбэка Level-2 MATLAB S-функций, когда он обновляет или имитирует модель, позволяя методам коллбэка получать и предоставлять информацию, связанную с блоками, программному обеспечению Simulink. Смотрите Запись Level-2 MATLAB S-Functions для получения дополнительной информации.
Можно также использовать образцы этого класса в программах MATLAB, чтобы получить информацию о Блоки Level-2 MATLAB S-function во время симуляции. Для получения дополнительной информации смотрите Access Block Data во время симуляции.
Шаблон Level-2 S-функции MATLAB matlabroot
/toolbox/simulink/blocks/msfuntmpl.m
показывает, как использовать несколько следующих методов.
Ничего
Имя | Описание |
---|---|
включите Level-2 S-функцию MATLAB для использования многомерных сигналов. | |
Определяет, какие из диалоговых параметров S-функции являются настраиваемыми. | |
Время следующего попадания выборки для переменного шага расчета S-функций. |
Имя | Описание |
---|---|
Зарегистрируйте параметры диалогового окна этого блока как параметры во время выполнения. | |
Обновите параметры во время выполнения этого блока. | |
Определите, является ли текущий этап симуляции постоянным этапом шага расчета. | |
Определите, является ли текущий временной шаг симуляции основным временным шагом. | |
Определите, является ли текущее время симуляции временем, в котором активна задача, обрабатываемая этим блоком. | |
Определите, является ли текущее время симуляции таким, при котором несколько задач, обрабатываемых этим блоком, активны. | |
Зарегистрируйте метод коллбэка для этого блока. | |
Зарегистрируйте тип данных с фиксированной точкой с двоичным масштабированием только для точки. | |
Регистрируйте тип данных с фиксированной точкой с масштабированием [Slope Bias], заданным с точки зрения дробного наклона, фиксированной экспоненты и смещения. | |
Зарегистрируйте тип данных с масштабированием [Смещение уклона]. | |
Укажите, использовать ли файл этого блока, чтобы сгенерировать цель симуляции для модели, которая его использует. | |
Установите предварительно скомпилированные атрибуты входных портов этого блока, которые будут унаследованы. | |
Установите предварительно скомпилированные атрибуты выходных портов этого блока, которые будут унаследованы. | |
Установите предварительно скомпилированные атрибуты портов этого блока на значения по умолчанию. | |
Укажите, является ли блок средством просмотра. | |
Запись информации о пользовательских параметрах в файл Simulink Coder™. |
Разрешите Level-2 S-функциям MATLAB использовать многомерные сигналы. Вы должны задать AllowSignalsWithMoreThan2D
свойство в setup
способ.
Булев
RW
Определяет, является ли диалоговый параметр S-функции настраиваемым. Настраиваемые параметры регистрируются как параметры во время выполнения при вызове метода AutoRegRuntimePrms. Обратите внимание, что SimOnlyTunable
параметры не регистрируются как параметры во время выполнения. Например, следующие линии инициализируют три диалоговых параметра, где первый настраивается, второй в не настраивается, а третий настраивается только во время симуляции.
block.NumDialogPrms = 3; block.DialogPrmsTunable = {'Tunable','Nontunable','SimOnlyTunable'};
массив
RW
Время следующего попадания выборки для переменных S-функций шаг расчета.
дважды
RW
Зарегистрируйте настраиваемые параметры диалогового окна блока как параметры во время выполнения.
AutoRegRuntimePrms;
Использование в PostPropagationSetup
метод, чтобы зарегистрировать настраиваемые параметры диалогового окна этого блока как параметры во время выполнения.
Обновите параметры во время выполнения блока.
AutoUpdateRuntimePrms;
Автоматическое обновление значений параметров во время выполнения во время вызова ProcessParameters
.
Смотрите S-функцию matlabroot
/toolbox/simulink/simdemos/simfeatures/adapt_lms.m
в модели Simulink sldemo_msfcn_lms
например, пример.
Определите, находится ли это в стадии постоянного шага расчета симуляции.
bVal = IsDoingConstantOutput;
Возвраты true, если это постоянная ступень шага расчета симуляции, т.е. стадия в начале симуляции, где программное обеспечение Simulink вычисляет значения выходов блоков, которые не могут измениться во время симуляции (см. «Постоянный Шаг расчета»). Используйте этот метод в Outputs
метод S-функции с основанными на портах шагами расчета, чтобы избежать ненужных вычислений выходов портов, которые имеют постоянный шаг расчета, т.е. [inf, 0]
.
function Outputs(block) . . if block.IsDoingConstantOutput ts = block.OutputPort(1).SampleTime; if ts(1) == Inf %% Compute port's output. end end . . %% end of Outputs
Дополнительные сведения см. в разделе «Определение шагов расчета на основе портов».
Определите, является ли текущий временной шаг основным или незначительным временным шагом.
bVal = IsMajorTimeStep;
Определите, является ли текущее время симуляции временем, в котором активна задача, обрабатываемая этим блоком.
bVal = IsSampleHit(stIdx);
stIdx
Глобальный индекс запрашиваемого шага расчета.
Использование в Outputs
или Update
блокировать методы, когда S-функция MATLAB имеет несколько шагов расчета, чтобы определить, произошло ли попадание выборки в stIdx
. Индекс шага расчета stIdx
- глобальный индекс для модели Simulink. Например, рассмотрим модель, которая содержит три частоты дискретизации 0,1, 0,2 и 0,5 и блок S-функции MATLAB, который содержит две скорости 0,2 и 0,5. В S-функции MATLAB, block.IsSampleHit(0)
возвращает true для скорости 0.1, а не для скорости 0.2.
Этот метод блока похож на ssIsSampleHit
однако для S-функций C-MeX ssIsSampleHit
возвращает значения, основанные только на шагах расчета, содержащихся в S-функции. Для примера, если описанная выше модель содержала S-функцию C-MeX со скоростями дискретизации 0,2 и 0,5, ssIsSampleHit(S,0,tid)
возвращает true
для скорости 0,2.
Используйте основанные на портах шаги расчета, чтобы избежать использования глобального индекса расчета для многоскоростных систем (см Simulink.BlockPortData
).
Определите, является ли текущее время симуляции таким, при котором несколько задач, реализованных этим блоком, активны.
bVal = IsSpecialSampleHit(stIdx1,stIdx1);
stIdx1
Индекс шага расчета первой запрашиваемой задачи.
stIdx2
Индекс шага расчета второй запрашиваемой задачи.
Использование в Outputs
или Update
блочные методы для обеспечения валидности данных, совместно используемых несколькими задачами, выполняемыми с различными скоростями. Возвраты true, если выборка столкновение произошла в stIdx1
и выборка столкновение также произошла в stIdx2
в этом же временном шаге (аналогично ssIsSpecialSampleHit
для S-функций C-Mex).
При использовании IsSpecialSampleHit
макрос, более медленный шаг расчета должно быть целым числом, кратным более быстрому шагу расчета.
Зарегистрируйте метод блока коллбэка.
RegBlockMethod(methName, methHandle);
methName
Имя метода, подлежащего регистрации.
methHandle
Указатель на функцию MATLAB коллбэка метода, который будет зарегистрирован.
Регистрирует блок коллбэка метод, заданный methName
и methHandle
. Используйте этот метод в setup
функция Level-2 S-функции MATLAB для определения методов коллбэка блоков, которые реализует S-функция.
Зарегистрируйте тип данных с фиксированной точкой с двоичным масштабированием только для точки.
dtID = RegisterDataTypeFxpBinaryPoint(isSigned, wordLength, fractionalLength, obeyDataTypeOverride);
isSigned
true
если тип данных подписан.
false
если тип данных не подписан.
wordLength
Общее количество битов в типе данных, включая любой бит знака.
fractionalLength
Количество бит в типе данных справа от двоичной точки.
obeyDataTypeOverride
true
указывает, что необходимо соблюдать параметр «Переопределение типа данных» для подсистемы. В зависимости от значения переопределения типа данных, полученный тип данных может быть Double
, Single
, ScaledDouble
или тип данных с фиксированной точкой, заданный другими аргументами функции.
false
указывает, что параметр «Переопределение типа данных» следует игнорировать.
Этот метод регистрирует тип данных с фиксированной точкой в программном обеспечении Simulink и возвращает идентификатор типа данных. Идентификатор типа данных может использоваться, чтобы задать типы данных входов и выходных портов, параметры выполнения и состояния DWork. Он также может использоваться со всеми стандартными методами доступа к типам данных, определенными для образцов этого класса, такими как DatypeSize.
Используйте эту функцию, если вы хотите зарегистрировать тип данных с фиксированной точкой с двоичным масштабированием только для точки. Кроме того, можно использовать одну из других функций регистрации с фиксированной точкой:
Используйте RegisterDataTypeFxpFSlopeFixexpBias, чтобы зарегистрировать тип данных с масштабированием [Смещение уклона] путем определения размера слова, дробного наклона, фиксированной экспоненты и смещения.
Используйте RegisterDataTypeFxpSlopeBias, чтобы зарегистрировать тип данных с масштабированием [Смещение уклона].
Если зарегистрированный тип данных не является одним из встроенных типов данных Simulink, выдается лицензия Fixed-Point Designer™.
Регистрируйте тип данных с фиксированной точкой с масштабированием [Slope Bias], заданным с точки зрения дробного наклона, фиксированной экспоненты и смещения
dtID = RegisterDataTypeFxpFSlopeFixexpBias(isSigned, wordLength, fractionalSlope, fixedexponent, bias, obeyDataTypeOverride);
isSigned
true
если тип данных подписан.
false
если тип данных не подписан.
wordLength
Общее количество битов в типе данных, включая любой бит знака.
fractionalSlope
Дробный уклон типа данных.
fixedexponent
экспонента наклона типа данных.
bias
Смещение масштабирования типа данных.
obeyDataTypeOverride
true
указывает, что необходимо соблюдать параметр «Переопределение типа данных» для подсистемы. В зависимости от значения переопределения типа данных, полученный тип данных может быть True Doubles
, True Singles
, ScaledDouble
или тип данных с фиксированной точкой, заданный другими аргументами функции.
false
указывает, что параметр «Переопределение типа данных» следует игнорировать.
Этот метод регистрирует тип данных с фиксированной точкой в программном обеспечении Simulink и возвращает идентификатор типа данных. Идентификатор типа данных может использоваться, чтобы задать типы данных входов и выходных портов, параметры выполнения и состояния DWork. Он также может использоваться со всеми стандартными методами доступа к типам данных, определенными для образцов этого класса, такими как DatypeSize.
Используйте эту функцию, если вы хотите зарегистрировать тип данных с фиксированной точкой, задав размер слова, дробный наклон, фиксированную экспоненту и смещение. Кроме того, можно использовать одну из других функций регистрации с фиксированной точкой:
Используйте RegisterDataTypeFxpBinaryPoint, чтобы зарегистрировать тип данных с двоичным масштабированием только по точке.
Используйте RegisterDataTypeFxpSlopeBias, чтобы зарегистрировать тип данных с масштабированием [Смещение уклона].
Если зарегистрированный тип данных не является одним из встроенных типов данных Simulink, выдается лицензия Fixed-Point Designer.
Зарегистрируйте тип данных с масштабированием [Смещение уклона].
dtID = RegisterDataTypeFxpSlopeBias(isSigned, wordLength, totalSlope, bias, obeyDataTypeOverride);
isSigned
true
если тип данных подписан.
false
если тип данных не подписан.
wordLength
Общее количество битов в типе данных, включая любой бит знака.
totalSlope
Общий наклон масштабирования типа данных.
bias
Смещение масштабирования типа данных.
obeyDataTypeOverride
true
указывает, что необходимо соблюдать параметр «Переопределение типа данных» для подсистемы. В зависимости от значения переопределения типа данных, полученный тип данных может быть True Doubles
, True Singles
, ScaledDouble
или тип данных с фиксированной точкой, заданный другими аргументами функции.
false
указывает, что параметр «Переопределение типа данных» следует игнорировать.
Этот метод регистрирует тип данных с фиксированной точкой в программном обеспечении Simulink и возвращает идентификатор типа данных. Идентификатор типа данных может использоваться, чтобы задать типы данных входов и выходных портов, параметры выполнения и состояния DWork. Он также может использоваться со всеми стандартными методами доступа к типам данных, определенными для образцов этого класса, такими как DatypeSize.
Используйте эту функцию, если необходимо зарегистрировать тип данных с фиксированной точкой с масштабированием [Смещение уклона]. Кроме того, можно использовать одну из других функций регистрации с фиксированной точкой:
Используйте RegisterDataTypeFxpBinaryPoint, чтобы зарегистрировать тип данных с двоичным масштабированием только по точке.
Используйте RegisterDataTypeFxpFSlopeFixexpBias для регистрации типа данных путем определения размера слова, дробного наклона, фиксированной экспоненты и смещения
Если зарегистрированный тип данных не является одним из встроенных типов данных Simulink, выдается лицензия Fixed-Point Designer.
Укажите, использовать ли файл блока для генерации кода для режима Accelerator программного обеспечения Simulink.
SetAccelRunOnTLC(bVal);
bVal
Может быть 'true'
(используйте TLC-файл) или 'false'
(выполните блок в интерпретированном режиме).
Укажите, должен ли блок использовать свой файл TLC для генерации кода, который запускается с Accelerator. Если эта опция 'false'
блок запускается в интерпретированном режиме. Смотрите S-функцию msfcn_times_two.m
в модели Simulink msfcndemo_timestwo
например, пример.
Примечание
Режим JIT Accelerator по умолчанию не поддерживает вставку пользовательских функций TLC S-Functions. Для получения дополнительной информации см. раздел «Как работают режимы ускорения и управление выполнением S-функций».
Установите предварительно скомпилированные атрибуты входных портов этого блока, которые будут унаследованы.
SetPreCompInpPortInfoToDynamic;
Инициализируйте скомпилированную информацию (размерности, тип данных, сложность и режим дискретизации) входных портов этого блока, которые будут унаследованы. Смотрите S-функцию matlabroot
/toolbox/simulink/simdemos/simfeatures/adapt_lms.m
в модели Simulink sldemo_msfcn_lms
например, пример.
Установите предварительно скомпилированные атрибуты выходных портов этого блока, которые будут унаследованы.
SetPreCompOutPortInfoToDynamic;
Инициализируйте скомпилированную информацию (размерности, тип данных, сложность и режим дискретизации) выходных портов блока, которые будут унаследованы. Смотрите S-функцию matlabroot
/toolbox/simulink/simdemos/simfeatures/adapt_lms.m
в модели Simulink sldemo_msfcn_lms
например, пример.
Установите предварительно скомпилированные атрибуты портов этого блока на значения по умолчанию.
SetPreCompPortInfoToDefaults;
Инициализируйте скомпилированную информацию (размерности, тип данных, сложность и режим дискретизации) портов блока до значений по умолчанию. По умолчанию порт принимает действительный скалярный дискретизированный сигнал с типом данных double
.
Укажите, является ли этот блок средством просмотра.
SetSimViewingDevice(bVal);
bVal
Может быть 'true'
(является средством просмотра) или 'false'
(не является средством просмотра).
Укажите, является ли блок средством просмотра/областью видимости. Если этот флаг задан, блок будет использоваться только во время симуляции и автоматически упирается в сгенерированный код.
Укажите, поддерживает ли Подсистема For Each S-функцию внутри нее.
SupportsMultipleExecInstances(bVal);
bVal
Может быть 'true'
(S-функция поддерживается) или 'false'
(S-функция не поддерживается).
Задайте, может ли S-функция работать в рамках For Each Subsystem.
Запишите пользовательский параметр в информационный файл Simulink Coder, используемый для генерации кода.
WriteRTWParam(pType, pName, pVal)
pType
Тип записываемого параметра. Допустимые значения 'string'
и 'matrix'
.
pName
Имя записываемого параметра.
pVal
Значение параметра, который будет записан.
Использование в WriteRTW
метод S-функции MATLAB для записи пользовательских параметров. Эти параметры обычно являются настройками, используемыми для определения того, как код должен быть сгенерирован в файле TLC для S-функции. Смотрите S-функцию matlabroot
/toolbox/simulink/simdemos/simfeatures/adapt_lms.m
в модели Simulink sldemo_msfcn_lms
например, пример.