Вы можете указать поведение S-функций в образце времени в mdlInitializeSampleTimes. Ваша S-функция может наследовать скорости из блоков, которые управляют ею, или определять собственные скорости.
Можно указать коэффициенты S-функций (т.е. время выборки) как
Время выборки на основе блоков
Время выборки на основе порта
Время выборки на основе гибридных блоков и портов
С учетом времени выборки на основе блоков S-функция задает набор рабочих скоростей для блока в целом во время фазы инициализации моделирования. При использовании времени выборки на основе порта функция S-function определяет время выборки для каждого входного и выходного порта по отдельности во время инициализации. Во время фазы моделирования, с учетом времени выборки на основе блоков, S-функция обрабатывает все входы и выходы каждый раз, когда происходит попадание выборки для блока. В отличие от этого, с учетом времени выборки на основе порта блок обрабатывает конкретный порт только в том случае, если для этого порта происходит попадание пробы.
Например, рассмотрим две частоты дискретизации, 0,5 и 0,25 секунды соответственно:
В методе на основе блоков выбор 0.5 и 0.25 направляет блок на выполнение входов и выходов с шагом 0.25 секунды.
В способе на основе портов установка входного порта в 0.5, а выходного порта в 0.25 заставляет блок обрабатывать входные сигналы с частотой 2 Гц и выходные сигналы с частотой 4 Гц.
Следует использовать время выборки на основе портов, если приложение требует неодинаковой частоты выборки для выполнения ввода и вывода или если не требуется, чтобы служебные данные, связанные с функционированием портов ввода и вывода, имели наибольшую частоту выборки в блоке.
В некоторых приложениях S-функциональному блоку может потребоваться внутренняя работа с одной или несколькими скоростями дискретизации при вводе или выводе сигналов с другими скоростями. Гибридный блочно-портовый метод задания частоты дискретизации позволяет создавать такие блоки.
В типичных приложениях задается только одно время выборки на основе блоков. Расширенные S-функции могут требовать указания времени выборки на основе портов или нескольких блоков.
Level-2 Функции MATLAB ® S определяют время выборки на основе блоков в своихsetup способ. Использовать линию
block.SampleTimes = [sampleTime offsetTime];
для указания времени выборки. Использовать значение [-1 0] для указания наследуемого времени выборки. Полный список допустимых значений времени выборки см. в разделе Определение времени образца в программе Simulink ®.
Для использования времени выборки на основе порта в Level-2 MATLAB S-функции:
Укажите время выборки и смещения для каждого порта S-функции в setup способ. Например:
block.InputPort(1).SampleTime = [-1 0]; block.OutputPort(1).SampleTime = [-1 0];
setup метод не должен указывать время выборки для блока при использовании времени выборки на основе порта.
Обеспечить SetInputPortSampleTime и SetOutputPortSampleTime методы, даже если функция S не наследует время выборки на основе порта.
В Level-2 MATLAB S-функции используйте значение [-1 0] для SampleTime свойство каждого порта для указания того, что порт наследует время выборки.
Inf) для портаЕсли функция S использует время выборки на основе порта, она может установить время выборки, равное Inf на любом из его портов. Время выборки на основе порта Inf означает, что сигнал, входящий или выходящий из порта, остается постоянным.
В Level-2 MATLAB S-функции используйте этот код для указания времени выборки Inf для порта:
block.OutputPort(1).SampleTime = [inf 0]; block.SetAllowConstantSampleTime(true);
Level-2 S-функции MATLAB с отсчетом времени на основе портов не могут быть помещены в запускаемую подсистему. Если необходимо включить ее в запускаемую подсистему, необходимо изменить S-функцию, чтобы использовать время выборки на основе блоков.
Level-2 S-функции MATLAB поддерживают время выборки на основе портов, но не поддерживают гибридное время выборки на основе блоков. Для получения дополнительной информации см. Пример времени на основе портов
В Level-2 MATLAB S-функции используйте IsSampleHit способ определения, является ли текущее время моделирования временем, в течение которого задача, обрабатываемая этим блоком, активна.
При записи кода TLC для генерации встроенного кода из S-функции и если код TLC содержит Outputs необходимо изменить код TLC, если выполняются все эти условия:
Выходной порт имеет постоянное значение. Он использует или наследует время образца Inf.
S-функция является многоскоростной S-функцией.
В этом случае код TLC должен генерировать код для порта вывода с постоянным значением с помощью функции OutputsForTID вместо функции Outputs. Дополнительные сведения см. в разделе Указание постоянного времени выборки (INF) для порта.
Если задачи, выполняющиеся с различными скоростями, должны совместно использовать данные, необходимо убедиться, что данные, созданные одной задачей, являются действительными при доступе другой задачи, выполняемой с другой скоростью.
Предположим, например, что модель имеет входной порт, работающий с одной скоростью (с индексом времени выборки 0), и выходной порт, работающий с более низкой скоростью (с индексом времени выборки 1). Кроме того, предположим, что порт вывода должен выводить значение, текущее на входе. Обратите внимание, что задачи с более высокой скоростью всегда выполняются перед задачами с более низкой скоростью. Таким образом, задача ввода всегда выполняется перед задачей вывода, гарантируя, что действительные данные всегда присутствуют в порту вывода.
В Level-2 MATLAB S-функции используйте IsSpecialSampleHit способ определения, является ли текущее время моделирования временем, при котором активны несколько задач, реализуемых этим блоком.
Level-2 S-функция MATLAB | Функция MATLAB | S-функция | Построитель S-функций