Получите информацию во время выполнения об Уровне 2 MATLAB S-function block
Этот класс позволяет S-функции Level 2 MATLAB® или другой программе MATLAB получать информацию из программного обеспечения Simulink® и предоставлять информацию программному обеспечению Simulink об Уровне 2 MATLAB S-Function block. Программное обеспечение Simulink создает случай этого класса для каждого Уровня 2 MATLAB S-Function block в модели. Программное обеспечение Simulink передает объект методам обратного вызова Level-2 S-функций MATLAB при обновлении или моделировании модели, позволяя методам обратного вызова получать и предоставлять информацию, связанную с блоками, программному обеспечению Simulink. Для получения дополнительной информации см. раздел Запись Level-2 S-функций MATLAB.
Вы можете также использовать случаи этого класса в программах MATLAB, чтобы получить информацию об Уровне 2 MATLAB S-Function blocks во время моделирования. Дополнительные сведения см. в разделе Доступ к данным блоков во время моделирования.
Шаблон S-функции Level-2 MATLAB matlabroot/toolbox/simulink/blocks/msfuntmpl.m показывает, как использовать ряд следующих методов.
Ничего
Имя | Описание |
|---|---|
позвольте Уровню 2 MATLAB S-function использовать многомерные сигналы. | |
Указывает, какие параметры диалогового окна S-функции можно настроить. | |
Время следующего совпадения выборки для переменных временных S-функций выборки. |
Имя | Описание |
|---|---|
Зарегистрируйте диалоговые параметры этого блока в качестве параметров времени выполнения. | |
Обновить параметры времени выполнения этого блока. | |
Определите, является ли текущая стадия моделирования постоянной временной стадией выборки. | |
Определите, является ли текущий временной шаг моделирования основным временным шагом. | |
Определите, является ли текущее время моделирования временем, в течение которого задача, обрабатываемая этим блоком, активна. | |
Определите, является ли текущее время моделирования временем, в течение которого активны несколько задач, обрабатываемых этим блоком. | |
Зарегистрируйте метод обратного вызова для этого блока. | |
Регистрация типа данных с фиксированной точкой с двоичным масштабированием только для точки. | |
Зарегистрируйте тип данных с фиксированной точкой с масштабированием [Уклон], заданным в терминах дробного уклона, фиксированной степени и смещения. | |
Зарегистрируйте тип данных с масштабированием [Уклон]. | |
Укажите, следует ли использовать TLC-файл этого блока для создания цели моделирования для модели, которая его использует. | |
Задать наследование предварительно скомпилированных атрибутов входных портов этого блока. | |
Задать наследование предварительно скомпилированных атрибутов выходных портов этого блока. | |
Задайте значения по умолчанию для предварительно скомпилированных атрибутов портов этого блока. | |
Укажите, является ли блок средством просмотра. | |
Запись сведений о пользовательских параметрах в файл Simulink Coder™. |
Разрешить Level-2 S-функции MATLAB использовать многомерные сигналы. Необходимо установить AllowSignalsWithMoreThan2D свойство в setup способ.
Булев
RW
Указывает, является ли параметр диалогового окна S-функции настраиваемым. Настраиваемые параметры регистрируются как параметры времени выполнения при вызове метода AutoRegRuntivePrms. Обратите внимание, что 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-функции. Например, если описанная выше модель содержала C-MEX S-функцию со скоростями выборки 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 для C-Mex S-функций).
При использовании IsSpecialSampleHit , более медленное время выборки должно быть целым числом, кратным более быстрому времени выборки.
Зарегистрируйте метод блочного обратного вызова.
RegBlockMethod(methName, methHandle);
methNameИмя регистрируемого метода.
methHandleДескриптор функции MATLAB регистрируемого метода обратного вызова.
Регистрирует метод блочного обратного вызова, указанный methName и methHandle. Используйте этот метод в setup функция Level-2 MATLAB S-функции для указания методов блочного обратного вызова, реализуемых S-функцией.
Регистрация типа данных с фиксированной точкой с двоичным масштабированием только для точки.
dtID = RegisterDataTypeFxpBinaryPoint(isSigned, wordLength, fractionalLength, obeyDataTypeOverride);
isSignedtrue если тип данных подписан.
false если тип данных не подписан.
wordLengthОбщее количество битов в типе данных, включая любой бит знака.
fractionalLengthЧисло битов в типе данных справа от двоичной точки.
obeyDataTypeOverridetrue указывает на необходимость соблюдения параметра «Переопределение типа данных» для подсистемы. В зависимости от значения параметра «Переопределение типа данных» результирующий тип данных может быть Double, Single, ScaledDoubleили тип данных с фиксированной точкой, указанный другими аргументами функции.
false указывает, что параметр «Переопределение типа данных» должен игнорироваться.
Этот метод регистрирует тип данных с фиксированной точкой с помощью программного обеспечения Simulink и возвращает идентификатор типа данных. Идентификатор типа данных может использоваться для указания типов данных портов ввода и вывода, параметров времени выполнения и состояний DWork. Он также может использоваться со всеми стандартными методами доступа типа данных, определенными для экземпляров этого класса, такими как DatataseSize.
Используйте эту функцию, если требуется зарегистрировать тип данных с фиксированной точкой с двоичным масштабированием только для точки. Кроме того, можно использовать одну из других функций регистрации с фиксированной точкой:
Используйте RegisterDataTypeFxpFSl.FixexpBias для регистрации типа данных с масштабированием [Уклон] путем указания длины слова, дробного уклона, фиксированной степени и смещения.
Используйте RegisterDataTypeFxpSlopesBias для регистрации типа данных с масштабированием [Уклон смещения].
Если зарегистрированный тип данных не является одним из встроенных типов данных Simulink, то выдается лицензия Fixed-Point Designer™.
Регистрация типа данных с фиксированной точкой с масштабированием [Уклон], указанным в терминах дробного уклона, фиксированной степени и смещения
dtID = RegisterDataTypeFxpFSlopeFixexpBias(isSigned, wordLength, fractionalSlope, fixedexponent, bias, obeyDataTypeOverride);
isSignedtrue если тип данных подписан.
false если тип данных не подписан.
wordLengthОбщее количество битов в типе данных, включая любой бит знака.
fractionalSlopeДробный наклон типа данных.
fixedexponentэкспонента наклона типа данных.
biasСмещение масштабирования типа данных.
obeyDataTypeOverridetrue указывает на необходимость соблюдения параметра «Переопределение типа данных» для подсистемы. В зависимости от значения параметра «Переопределение типа данных» результирующий тип данных может быть True Doubles, True Singles, ScaledDoubleили тип данных с фиксированной точкой, указанный другими аргументами функции.
false указывает, что параметр «Переопределение типа данных» должен игнорироваться.
Этот метод регистрирует тип данных с фиксированной точкой с помощью программного обеспечения Simulink и возвращает идентификатор типа данных. Идентификатор типа данных может использоваться для указания типов данных портов ввода и вывода, параметров времени выполнения и состояний DWork. Он также может использоваться со всеми стандартными методами доступа типа данных, определенными для экземпляров этого класса, такими как DatataseSize.
Эта функция используется для регистрации типа данных с фиксированной точкой путем указания длины слова, дробного наклона, фиксированной степени и смещения. Кроме того, можно использовать одну из других функций регистрации с фиксированной точкой:
Используйте RegisterDataTypeFxpBinurePoint для регистрации типа данных с двоичным масштабированием только для точек.
Используйте RegisterDataTypeFxpSlopesBias для регистрации типа данных с масштабированием [Уклон смещения].
Если зарегистрированный тип данных не является одним из встроенных типов данных Simulink, лицензия Fixed-Point Designer извлекается.
Зарегистрируйте тип данных с масштабированием [Уклон].
dtID = RegisterDataTypeFxpSlopeBias(isSigned, wordLength, totalSlope, bias, obeyDataTypeOverride);
isSignedtrue если тип данных подписан.
false если тип данных не подписан.
wordLengthОбщее количество битов в типе данных, включая любой бит знака.
totalSlopeОбщий наклон масштабирования типа данных.
biasСмещение масштабирования типа данных.
obeyDataTypeOverridetrue указывает на необходимость соблюдения параметра «Переопределение типа данных» для подсистемы. В зависимости от значения параметра «Переопределение типа данных» результирующий тип данных может быть True Doubles, True Singles, ScaledDoubleили тип данных с фиксированной точкой, указанный другими аргументами функции.
false указывает, что параметр «Переопределение типа данных» должен игнорироваться.
Этот метод регистрирует тип данных с фиксированной точкой с помощью программного обеспечения Simulink и возвращает идентификатор типа данных. Идентификатор типа данных может использоваться для указания типов данных портов ввода и вывода, параметров времени выполнения и состояний DWork. Он также может использоваться со всеми стандартными методами доступа типа данных, определенными для экземпляров этого класса, такими как DatataseSize.
Эта функция используется для регистрации типа данных с фиксированной точкой с масштабированием [Уклон]. Кроме того, можно использовать одну из других функций регистрации с фиксированной точкой:
Используйте RegisterDataTypeFxpBinurePoint для регистрации типа данных с двоичным масштабированием только для точек.
Используйте RegisterDataTypeFxpFSl.FixexpBias для регистрации типа данных, указав длину слова, дробный наклон, фиксированную степень и смещение
Если зарегистрированный тип данных не является одним из встроенных типов данных Simulink, лицензия Fixed-Point Designer извлекается.
Укажите, следует ли использовать TLC-файл блока для создания кода для режима Accelerator программного обеспечения Simulink.
SetAccelRunOnTLC(bVal);
bValМожет быть 'true' (используйте файл TLC) или 'false' (запустить блок в интерпретируемом режиме).
Укажите, должен ли блок использовать свой файл TLC для создания кода, запускаемого с ускорителем. Если этот параметр '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' (не является зрителем).
Укажите, является ли блок средством просмотра/областью действия. Если этот флаг указан, то блок будет использоваться только во время моделирования и автоматически блокируется в сгенерированном коде.
Укажите, поддерживает ли подсистема для каждой подсистемы S-функцию внутри нее.
SupportsMultipleExecInstances(bVal);
bValМожет быть 'true' (поддерживается S-функция) или 'false' (S-функция не поддерживается).
Укажите, может ли S-функция работать в каждой подсистеме.
Запишите пользовательский параметр в информационный файл 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 например.