Задайте шаги расчета S-функции

О шагах расчета

Можно задать поведение S-функций шаг расчета mdlInitializeSampleTimes. Ваша S-функция может наследовать свои скорости от блоков, которые управляют ею или определяют свои собственные скорости.

Можно задать скорости S-функций (т.е. шаги расчета) как

  • Основанные на блоках шаги расчета

  • Основанные на порте шаги расчета

  • Гибридные блоковые и портовые шаги расчета

С основанными на блоках шагами расчета, S-функция задает набор рабочих скоростей для блока в целом во время фазы инициализации симуляции. С шагами расчета на основе портов S-функция задает шаг расчета для каждого входного и выходного порта индивидуально во время инициализации. Во время фазы симуляции с основанными на блоках шагами расчета S-функция обрабатывает все входы и выходы каждый раз, когда происходит попадание выборки для блока. В отличие от этого, с шагами расчета на основе портов блок обрабатывает конкретный порт только, когда для этого порта происходит попадание выборки.

Для примера рассмотрим две скорости дискретизации, 0,5 и 0,25 секунды, соответственно:

  • В блочном методе выбор 0,5 и 0,25 предписывает блоку выполнять входы и выходы с шагом 0,25 секунды.

  • В методе, основанном на порте, установка входного порта 0,5 и выходного порта 0,25 заставляет блок обрабатывать входы на 2 Гц и выходы на 4 Гц.

Вы должны использовать основанные на портах шаги расчета, если ваше приложение требует неравных частот дискретизации для входа и выхода или если вы не хотите, чтобы накладные расходы были связаны с запущенными входными и выходными портами с самой высокой частотой дискретизации вашего блока.

В некоторых приложениях блоку S-Function может потребоваться работать внутри с одной или несколькими скоростями дискретизации во время ввода или вывода сигналов с другими скоростями. Гибридный метод определения частот дискретизации на основе блоков и портов позволяет создавать такие блоки.

В типичных приложениях вы задаете только один основанный на блоках шаг расчета. Расширенные 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];

    The setup метод не должен задавать время расчета для блока при использовании основанного на порте шагов расчета.

  • Обеспечивайте SetInputPortSampleTime и SetOutputPortSampleTime методы, даже если ваша S-функция не наследует основанные на порте шаги расчета.

Определение наследованного шага расчета для порта

В Level-2 S-функции MATLAB используйте значение [-1 0] для SampleTime свойство каждого порта, чтобы указать, что порт наследует свой шаг расчета.

Определение постоянного шага расчета (Inf) для порта

Если ваша S-функция использует основанные на портах шаги расчета, она может задать время расчета Inf на любом из его портов. Основанный на порте шаг расчета Inf означает, что сигнал, входящий или выходящий из порта, остается постоянным.

В Level-2 S-функции MATLAB используйте этот код, чтобы задать шаг расчета Inf для порта:

block.OutputPort(1).SampleTime = [inf 0];
block.SetAllowConstantSampleTime(true);

Конфигурирование шагов расчета на основе портов для использования в триггируемых подсистемах

Level-2 MATLAB S-функции с основанными на портах шагами расчета не могут быть помещены в триггируемую подсистему. Вы должны изменить свою S-функцию, чтобы использовать основанные на блоках шаги расчета, если вам нужно включить его в триггируемую подсистему.

Гибридные блоковые и портовые Шаги расчета

Level-2 S-функции MATLAB поддерживают основанные на портах шаги расчета, но не поддерживают гибридные шаги расчета на основе блоков. Смотрите шаги расчета на основе портов для получения дополнительной информации

Мультирациональные блоки s-function

В Level-2 S-функции MATLAB используйте IsSampleHit метод, чтобы определить, является ли текущее время симуляции таким, в котором активна задача, обрабатываемая этим блоком.

Если вы записываете TLC код, чтобы сгенерировать inlined код из S-функции, и если TLC код содержит Outputs функция, вы должны изменить код TLC, если все эти условия верны:

  • Порт выхода имеет постоянное значение. Он использует или наследует шаг расчета Inf.

  • S-функция является многоскоростной S-функцией.

В этом случае код TLC должен сгенерировать код для порта выхода с постоянными значениями при помощи функции OutputsForTID вместо функции Outputs. Для получения дополнительной информации смотрите Задание Постоянного Шага Расчета (Inf) для Порта.

Синхронизация многократных блоков s-function

Если задачи, выполняемые с различными скоростями, должны совместно использовать данные, необходимо убедиться, что данные, сгенерированные одной задачей, действительны при доступе к другой задаче, выполняемой с другой скоростью.

Предположим, для примера, что ваша модель имеет вход порт, работающий с одной скоростью (с индексом шага расчета 0) и выход порт, работающий с более низкой скоростью (с шагом расчета индексом 1). Кроме того, предположим, что вы хотите, чтобы выходной порт выводил значение на текущий момент на вход. Обратите внимание, что более высокоскоростные задачи всегда выполняются перед более медленными задачами. Таким образом, вход задача всегда запускается перед задачей выхода, гарантируя, что действительные данные всегда присутствуют в выходе порту.

В Level-2 S-функции MATLAB используйте IsSpecialSampleHit метод, чтобы определить, является ли текущее время симуляции таким, при котором несколько задач, реализованных этим блоком, активны.

См. также

| | |

Похожие темы