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