exponenta event banner

Сравнение функциональных возможностей пользовательских блоков

При создании пользовательского блока необходимо учитывать следующее:

В этой таблице показано, как каждый пользовательский тип блока решает эти три проблемы.

Соображения по моделированию

Пользовательский тип блокаДинамика состояния моделиПроизводительность моделирования Создание кода
Интерпретированная функция MATLABНет Менее быстрыйНе поддерживается
Level-2 S-функция MATLABДаМенее быстрыйТребуется файл TLC
Функция MATLABНетБыстроПоддерживается с исключениями
Система MATLABДаБыстроПоддерживается с исключениями
ДаБыстроТребуется файл TLC или поддержка нелинейной S-функции
Вызывающий абонент CНетБыстроПоддержанный
Функция CДаБыстроПоддержанный
ДаБыстроПоддержанный
Функция симулятораДаБыстроПоддержанный
ДаБыстроПоддержанный

При детальном проектировании пользовательских блоков необходимо учитывать следующее:

Поведение состояния модели

Необходимо смоделировать поведение состояния для блока, который требует некоторых или всех своих предыдущих выходов для вычисления своих текущих выходов. Дополнительные сведения см. в разделе Переменные состояния.

Пользовательский тип блокаПримечания
Интерпретированная функция MATLAB, вызывающий абонент CНе позволяет моделировать поведение состояния.
Функция MATLAB, функция CПозволяет моделировать дискретное состояние с помощью persistent переменные.
Level-2 Функция MATLAB ® SПозволяет моделировать как непрерывное, так и дискретное состояние с помощью ContStates или Dwork методы объекта времени выполнения в сочетании с методами блочного обратного вызова. Для списка поддержанных методов посмотрите, что Методы Отзыва Уровня 2 MATLAB S-Function в Пишут Уровню 2 MATLAB S-Functions.
Система MATLABПозволяет моделировать поведение дискретного состояния с помощью DiscreteState свойства объекта System в сочетании с методами блочного обратного вызова. Этот блок использует методы System object™ для методов обратного вызова: mdlOutputs (stepImpl, outputImpl), mdlUpdate (updateImpl), mdlInitializeConditions (resetImpl), mdlStart (setupImpl), mdlTerminate (releaseImpl). Дополнительные сведения см. в разделе Что такое системные объекты?.
C MEX S-функция, построитель S-функцийПозволяет моделировать как непрерывное, так и дискретное поведение в сочетании с методами блочного обратного вызова. Дополнительные сведения см. в разделе Методы обратного вызова для S-функций C MEX
Функция симулятораВзаимодействует непосредственно с двигателем. Поведение состояния можно моделировать с помощью соответствующих блоков из непрерывной и дискретной библиотек блоков Simulink. Когда несколько вызовов этой функции поступают от разных вызывающих абонентов, значения состояния также являются постоянными между этими вызовами. Дополнительные сведения см. в разделе Вызов функционального блока Simulink из нескольких узлов.
ПодсистемаВзаимодействует непосредственно с двигателем. Поведение состояния можно моделировать с помощью соответствующих блоков из непрерывной и дискретной библиотек блоков Simulink.

Производительность моделирования

Для большинства приложений все пользовательские типы блоков обеспечивают удовлетворительную производительность моделирования. Используйте профилировщик Simulink для получения фактической индикации производительности. Дополнительные сведения см. в разделе Как приложение Profiler захватывает данные о производительности.

Двумя категориями индикации производительности являются стоимость интерфейса и стоимость алгоритма. Стоимость интерфейса - это время, необходимое для перемещения данных из модуля Simulink в блок. Стоимость алгоритма - это время, необходимое для выполнения алгоритма, реализуемого блоком.

Пользовательский тип блокаПримечания
Интерпретированная функция MATLABИмеет более низкую производительность из-за интерфейса, но имеет ту же стоимость алгоритма, что и функция MATLAB.
Когда данные блока (такие как входы и выходы) получают доступ или возвращаются из блока интерпретируемой функции MATLAB, модуль Simulink упаковывает эти данные в массивы MATLAB. Эта упаковка занимает дополнительное время и вызывает временное увеличение памяти во время связи. При передаче больших объемов данных через этот интерфейс, например кадров или массивов, производительность может быть значительно медленной.
После преобразования данных модуль выполнения MATLAB выполняет алгоритм. В результате стоимость алгоритма такая же, как для функции MATLAB.
Level-2 S-функция MATLABНесет те же затраты на алгоритм, что и блок интерпретированной функции MATLAB, но с несколько более высокой стоимостью интерфейса. Поскольку S-функции MATLAB могут обрабатывать несколько входов и выходов, упаковка сложнее, чем для блока интерпретируемой функции MATLAB. Кроме того, механизм Simulink вызывает механизм выполнения MATLAB для каждого реализуемого блочного метода, тогда как блок интерпретируемой функции MATLAB вызывает механизм выполнения MATLAB только для Outputs способ.
Функция MATLABВыполняет моделирование посредством генерации кода и несет ту же стоимость интерфейса, что и другие встроенные блоки Simulink.
Стоимость алгоритма этого блока труднее анализировать из-за реализации блока. В среднем функция для этого блока и функция MATLAB работают примерно с одинаковой скоростью.
Если функциональный блок MATLAB имеет код, который использует coder.extrinsic для вызова механизма выполнения MATLAB он несет все расходы, которые несет блок S-функции MATLAB или интерпретируемый функциональный блок MATLAB. Вызов модуля выполнения MATLAB из функционального блока MATLAB приводит к появлению предупреждения, предотвращающего непреднамеренное выполнение этого действия.
Для снижения стоимости алгоритма можно отключить отладку для всех функциональных блоков MATLAB.
Система MATLABВ интерпретируемом режиме выполнения производительность аналогична производительности Level-2 MATLAB S-функции, поскольку модель моделирует блок с использованием механизма выполнения MATLAB. В режиме генерации кода производительность аналогична производительности функции MATLAB, поскольку модель моделирует блок с использованием сгенерированного кода. Для получения дополнительной информации см. запись MATLAB Function в этой таблице.
Вызывающий абонент C, функция CМоделирование модели в первый раз с может быть медленнее из-за синтаксического анализа и построения пользовательского кода. Чтобы ускорить моделирование после первой компиляции, в разделе Параметры конфигурации (Configuration parameters) выберите Более быстрые сборки (Faster Builds) для более быстрой компиляции и выберите Более быстрые выполнения (Faster Runs) для более быстрого моделирования.
C MEX S-функцияИмитирует через скомпилированный код и несет ту же стоимость интерфейса, что и встроенные блоки Simulink. Стоимость алгоритма зависит от сложности S-функции.
Построитель S-функцийЭтот блок создает S-функцию только из заданных спецификаций и кода C. Этот блок можно также использовать в качестве оболочки для созданной S-функции в моделях. Стоимость алгоритма этого блока по сравнению с C MEX S-Function возникает только из обертки.
Функция симулятора, подсистемаЕсли блок включен в библиотеку, он не содержит затрат на интерфейс или алгоритм сверх тех, которые обычно возникают, если блок существует в модели как обычная подсистема.
Производительность пропорциональна сложности алгоритма, реализуемого в подсистеме. Если подсистема содержится в библиотеке, некоторые затраты возникают, когда Simulink загружает все выгруженные библиотеки при первом обновлении или подготовке диаграммы к моделированию. Если все блоки библиотеки, на которые имеются ссылки, остаются неизменными, Simulink не загружает библиотеку повторно. Компиляция модели выполняется быстрее, чем если бы модель не использовала библиотеки.

Создание кода

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

Пользовательский тип блокаПримечания
Интерпретированная функция MATLABНе поддерживает создание кода.
Вызывающий абонент C, функция CПоддерживает создание кода.
Level-2 S-функция MATLABГенерирует код только при реализации алгоритма с помощью функции TLC. В ускоренном и внешнем моделировании можно выбрать выполнение S-функции в интерпретирующем режиме путем обратного вызова механизма выполнения MATLAB без реализации алгоритма в TLC. Если S-функция MATLAB имеет значение SimViewingDevice, продукт Simulink Coder автоматически пропускает блок во время генерации кода.
Функция MATLAB, система MATLABПоддерживает создание кода. Однако, если ваш блок вызывает модуль выполнения MATLAB, он будет построен с продуктом Simulink Coder только в том случае, если вызовы модуля выполнения MATLAB не влияют на выходные данные блока. При этом условии продукт Simulink Coder пропускает эти вызовы из сгенерированного кода C. Эта функция позволяет оставлять код визуализации на месте даже при создании встроенного кода.
C MEX S-функция, построитель S-функций

Оба варианта поддерживают генерацию кода.

  • Для неинлинговых S-функций продукт Simulink Coder использует функцию C MEX во время генерации кода.

  • В случае C MEX S-Functions, если необходимо встроить S-функцию или создать оболочку для рукописного кода, необходимо записать файл TLC для S-функции.

  • В случае S-Function Builder можно выбрать опцию Создать оболочку TLC для автоматического создания файла TLC.

Для получения дополнительной информации см. S-Функции и создание кода (Simulink Coder).

Функция симулятораПоддерживает создание кода.
ПодсистемаПоддерживает генерацию кода, пока блоки, содержащиеся в подсистеме, поддерживают генерацию кода. Дополнительные сведения см. в разделе Управление созданием функций для подсистем (встроенный кодер)

Несколько портов ввода и вывода

Эти типы пользовательских блоков поддерживают несколько портов ввода и вывода.

Пользовательский тип блокаПримечания
Интерпретированная функция MATLABПоддерживает только один входной и один выходной порт.
Функция MATLABПоддерживает несколько портов ввода и вывода, включая сигналы шины. Для получения дополнительной информации см. раздел Как структура входов и выходов интерфейса с сигналами шины.
Система MATLABПоддерживает несколько портов ввода и вывода, включая сигналы шины. Кроме того, можно изменить количество портов ввода и вывода на основе свойств системных объектов с помощью getNumInputs и getNumOutputs методы.
Вызывающий абонент C, функция CПоддерживает несколько портов ввода и вывода, включая сигналы шины.
Level-2 S-функция MATLAB, S-функция C MEX, построитель S-функцийПоддерживает несколько портов ввода и вывода. Кроме того, можно изменить количество портов ввода и вывода на основе пользовательских параметров. C MEX S-Function и S-Function Builder поддерживают сигналы шины.
Функция симулятораПоддерживает несколько портов ввода и вывода, включая сигналы шины.
ПодсистемаПоддерживает несколько портов ввода и вывода, включая сигналы шины. Кроме того, можно изменить количество портов ввода и вывода на основе пользовательских параметров. Дополнительные сведения см. в разделе Самодифицируемые связанные подсистемы.

Скорость обновления диаграммы Simulink

Simulink обновляет схему перед каждым моделированием и по запросу пользователя. Каждый блок вносит некоторые издержки в процесс обновления диаграммы.

Пользовательский тип блокаПримечания
Интерпретированная функция MATLABНизкая стоимость обновления диаграммы.
Функция MATLAB, вызывающий абонент C, функция CМоделирование выполняется посредством генерации кода, поэтому эти блоки могут занимать значительное время при первом обновлении. Однако, поскольку генерация кода является инкрементной, Simulink не обновляет блок повторно, если блок и связанные с ним сигналы не изменились.
Система MATLABБыстрее, чем функция MATLAB, так как не создается код для обновления диаграммы. Поскольку генерация кода является инкрементной, Simulink не обновляет блок повторно, если блок и связанные с ним сигналы не изменились.
C MEX S-функция, Level-2 MATLAB S-функцияНесет больше затрат, чем другие блоки Simulink, только если переопределяет методы, выполняемые при обновлении диаграммы. Если эти методы становятся сложными, они могут внести значительный вклад в время, необходимое для обновления диаграммы. Список методов, выполняемых при обновлении диаграммы, см. в представлении процесса в разделе Взаимодействие Simulink Engine с C S-функциями. При обновлении диаграммы Simulink вызывает все соответствующие методы на этапе инициализации модели до, но не включая, mdlStart.
Функция симулятора, подсистемаСкорость пропорциональна сложности алгоритма, реализуемого в подсистеме. Если подсистема содержится в библиотеке, некоторые затраты возникают, когда Simulink загружает все выгруженные библиотеки при первом обновлении или подготовке диаграммы к моделированию. Если все блоки библиотеки, на которые имеются ссылки, остаются неизменными, Simulink не загружает библиотеку повторно. Компиляция модели выполняется быстрее, чем если модель не использует библиотеки.

Методы обратного вызова

Блоки Simulink взаимодействуют с механизмом Simulink посредством методов блочного обратного вызова, которые полностью задают поведение блоков (кроме блока Simulink Function). Каждый пользовательский тип блока позволяет реализовать различный набор методов обратного вызова. Сведения о взаимодействии блоков с механизмом Simulink см. в разделе Взаимодействие модуля Simulink с функциями C S. В этой таблице в качестве эквивалентов используются имена S-Function Callback Methods.

Пользовательский тип блокаПримечания
Интерпретируемая функция MATLAB, функция MATLAB, вызывающий абонент CВсе создают mdlOutputs способ вычисления значения выходных сигналов, заданного значением входных сигналов. Нельзя реализовать другие методы обратного вызова, используя один из этих блоков, и, следовательно, нельзя моделировать поведение состояния.
Функция CПозволяет реализовать методы запуска, вывода и завершения обратного вызова. Позволяет моделировать дискретные состояния с постоянными данными.
Level-2 S-функция MATLABПозволяет реализовать большее подмножество методов обратного вызова, включая методы, которые можно использовать для моделирования непрерывных и дискретных состояний. Для списка поддержанных методов посмотрите, что Методы Отзыва Уровня 2 MATLAB S-Function в Пишут Уровню 2 MATLAB S-Functions.
Система MATLABИспользует методы объекта System для методов обратного вызова: mdlOutputs (stepImpl, outputImpl), mdlUpdate (updateImpl), mdlInitializeConditions (resetImpl), mdlStart (setupImpl), mdlTerminate (releaseImpl). Дополнительные сведения см. в разделе Взаимодействие Simulink Engine с методами системных объектов
C MEX S-функцияПозволяет реализовать полный набор методов обратного вызова.
Построитель S-функцийПозволяет реализовать mdlOutputs, mdlDerivatives и mdlUpdate.
Функция симулятораУпаковывается как автономная функция. Любой вызывающий абонент этой функции становится частью одного из методов обратного вызова в зависимости от местоположения вызывающего абонента.
ПодсистемаВзаимодействует непосредственно с двигателем. Поведение состояний можно моделировать с помощью соответствующих блоков из библиотек блоков Simulink непрерывного и дискретного типа.

Сравнение S-функций MATLAB с функциями MATLAB для генерации кода

S-функции MATLAB и MATLAB для генерации кода имеют некоторые фундаментальные различия.

  • Продукт Simulink Coder может генерировать код как для S-функций MATLAB, так и для функций MATLAB для генерации кода. Однако для генерации кода для S-функций MATLAB требуется файл компилятора целевого языка (TLC). Функции MATLAB для генерации кода не требуют файла TLC.

  • S-функции MATLAB могут использовать любую функцию MATLAB, тогда как функции MATLAB для генерации кода являются подмножеством языка MATLAB. Список поддерживаемых функций для генерации кода см. в разделе Функции и объекты, поддерживаемые для генерации кода C/C + +.

  • S-функции MATLAB могут моделировать дискретную и непрерывную динамику состояния, тогда как функции MATLAB для генерации кода не могут моделировать динамику состояния.

Расширение функциональных возможностей пользовательских блоков

Функциональные возможности любого пользовательского блока можно расширить с помощью обратных вызовов и графики MATLAB.

Блокирующие обратные вызовы выполняют пользовательские действия в определенных точках моделирования. Например, обратный вызов может загрузить данные в рабочую область MATLAB перед моделированием или создать график данных моделирования в конце моделирования. Можно назначить обратные вызовы блоков любому из пользовательских типов блоков. Список доступных обратных вызовов и дополнительные сведения об их использовании см. в разделе Указание блоковых обратных вызовов.

App Designer, графическая среда разработки пользовательского интерфейса MATLAB, предоставляет инструменты для простого создания пользовательских пользовательских интерфейсов. Дополнительные сведения об использовании App Designer см. в разделе Создание приложений.

См. также

| | | | | | | | |

Связанные темы