Чтобы создать и сконфигурировать входные порты, метод setup
должен сначала задать количество портов S-входного-параметра-функции, с помощью свойства NumInputPorts
объекта периода выполнения. Затем, если все входные порты наследовали свои функциональные свойства (тип данных, размерности, сложность, и режим выборки) от их входных сигналов, включают следующую строку в метод setup
:
block.SetPreCompInpPortInfoToDynamic;
Затем для каждого входного порта метод setup
может задать
Размерности входного порта, с помощью
.block.InputPort(n).Dimensions
Чтобы индивидуально указать, что размерности входного порта динамически измерены, присвойте значение -1
к размерностям. В этом случае можно реализовать метод SetInputPortDimensions
, чтобы установить размерности во время распространения сигнала.
Имеет ли входной порт прямое сквозное соединение, с помощью
.block.InputPort(n).DirectFeedthrough
Порт имеет прямое сквозное соединение, если вход используется в функциях Outputs
, чтобы вычислить или выходные параметры или следующий хит шага расчета. Прямой проходной флаг для каждого входного порта может быть установлен или в 1=yes
или в 0=no
. Установка прямого проходного флага к 0
говорит механизму Simulink®, что u
не используется, чтобы вычислить выходные параметры или следующий хит шага расчета. Нарушение этого приводит к непредсказуемым результатам.
Тип данных входного порта, с помощью
. Смотрите объяснение свойства DatatypeID на странице с описанием объекта данных block.InputPort(n).DatatypeID
Simulink.BlockData
для списка допустимых идентификаторов типа данных.
Если вы хотите, чтобы тип данных порта зависел от типа данных порта, с которым это соединяется, задайте тип данных как -1
. В этом случае можно реализовать метод SetInputPortDataType
, чтобы установить тип данных во время распространения сигнала.
Числовой тип входного порта, если порт принимает сигналы с комплексным знаком, с помощью
.block.InputPort(n).Complexity
Если вы хотите, чтобы числовой тип порта зависел от числового типа порта, с которым это соединяется, задайте числовой тип как 'Inherited'
. В этом случае можно реализовать метод SetInputPortComplexSignal
, чтобы установить числовой тип во время распространения сигнала.
Для примера, который конфигурирует S-функцию Level 2 MATLAB® с несколькими портами ввода и вывода, откройте модель sldemo_msfcn_lms
и осмотрите S-функцию adapt_lms.m
.
Чтобы создать выходные порты для Уровня 2 S-функции MATLAB, метод setup
должен сначала задать количество выходных портов S-функции, с помощью свойства NumOutputPorts
объекта периода выполнения. Затем, если все выходные порты наследовали свои функциональные свойства (тип данных, размерности, сложность, и режим выборки), включают следующую строку в метод setup
:
block.SetPreCompOutPortInfoToDynamic;
Сконфигурируйте выходные порты точно, как вы конфигурируете входные порты. Смотрите Входные порты Создания для Уровня 2 S-функции MATLAB для списка свойств, которые можно задать для каждого выходного порта, заменив OutputPort
InputPort
в каждом вызове объекта периода выполнения.
Скалярное расширение входных параметров относится концептуально к процессу расширения скалярных входных сигналов к тем же размерностям как широкие входные сигналы, соединенные с другими портами S-входного-параметра-функции. Это сделано путем установки каждого элемента расширенного сигнала к значению скалярного входа.
S-функция MEX C метод mdlInitializeSizes
включает скалярное расширение входных параметров путем установки опции SS_OPTION_ALLOW_INPUT_SCALAR_EXPANSION
, использования ssSetOptions
.
Если вы разрабатываете замаскированные многопортовые Блоки s-function, количество которых портов отличается на основе некоторого параметра, и хотят разместить их в Библиотеку Simulink, необходимо указать, что маска изменяет внешний вид блока. Для этого выполните команду
set_param(blockname,'MaskSelfModifiable','on')
в подсказке команды MATLAB прежде, чем сохранить библиотеку, где blockname
является полным путем к блоку. Отказ указать, что маска изменяет внешний вид средних по блокам, что экземпляр блока в модели возвращается к количеству портов в библиотеке каждый раз, когда вы загружаете модель или обновляете ссылку библиотеки.
Уровень 2 S-функция MATLAB | Функция MATLAB | S-функция | Разработчик S-функции