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