C Function

Интегрирование и вызов внешнего кода С из модели Simulink

  • Библиотека:
  • Simulink/Пользовательские функции

  • C Function block

Описание

Блок C Function интегрирует и вызывает внешний код С из Simulink® модель. Этот блок используется для определения внешнего кода и настройки интегрирования кода путем предварительной обработки или постобработки данных. В сложение можно задать настроенный код для симуляции и Генерации кода C. Можно вызвать функции, определенные в коде, условно, и можно также вызвать несколько функций в одном блоке. Используя этот блок, можно инициализировать постоянные данные блока и передать его во внешнюю функцию.

Можно также использовать C Function блок, чтобы вызвать подмножество функций C Math Library. Дополнительные сведения см. в разделе Вызова функций библиотеки C из блока C Function.

Блок C Function поддерживает инициализацию персистентных данных и вызов внешних функций из диалогового окна блока. Блок C Function поддерживает только инициализацию и завершение стойких данных; блок не поддерживает обновление данных во время симуляции. Чтобы смоделировать динамическую систему с непрерывными состояниями, используйте S-Function блок. Дополнительные сведения о S-функциях см. в разделе «Что такое S-функция?».

Определите исходный код и вспомогательные файлы, которые будут вызываться блоком C Function на панели Simulation Target параметров конфигурации.

Ограничения

Следующие функции Simulink несовместимы с блоком C Function.

  • Функции Simulink Coverage™

    Измеряется только покрытие выполнения.

  • Simulink Code Inspector™

  • Simulink Design Verifier™

  • Функции Simulink Test™

    - Тестовая обвязка

  • Использование блока C Function в Simulink Report Generator™

В сложение следующие ограничения применяются к исходному коду, на который ссылается блок C Function.

  • Ключевое слово C static не поддерживается.

    Чтобы кэшировать значения через временные шаги, задайте символ как Persistent в Symbols таблице диалогового окна блока.

  • Файлы не могут быть включены в скрипт.

    Внешние функции должны быть заданы в панели Simulation Target диалогового окна Параметров конфигурации.

    Если у вас есть существующие включения, определенные в панели Simulation Target, которые не могут быть смешаны с новым включением, рассмотрите добавление блока include и C Function в модель библиотеки и используйте ссылку на блок в основной модели. Для получения дополнительной информации см. раздел «Создание пользовательской библиотеки».

  • Указатели разных типов не могут быть назначены друг другу. Типы указателей должны совпадать при вызове внешних функций.

  • Код не может взять адрес константы.

  • Прямой вызов некоторых функций библиотеки C из блока C Function не поддерживается. Для просмотра списка функций библиотеки C Math Library, которые можно вызвать непосредственно, смотрите Вызов Функции библиотеки C из блока C Function Чтобы вызвать другие функции библиотеки C, создайте функцию-оболочку, которая вызывает функцию библиотеки C.

Порты

Вход

расширить все

Вход в блок C Function.

Количество входов и их имен определяется определениями во внешнем коде С и определениями символов в Symbols таблице в диалоговом окне параметров блоков.

Вход порта совпадает с именем входного символа, если вы не измените его, изменив поле Label в Symbols таблице диалогового окна блоков.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | enumerated | bus

Выход

расширить все

Выход из блока C Function.

Количество выходов и их имен определяется определениями во внешнем коде С и определениями символов в Symbols таблице в диалоговом окне параметров блоков.

Метка выходного порта совпадает с именем выходного символа, если вы не измените его, изменив поле Label в Symbols таблице диалогового окна параметров блоков.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | enumerated | bus

Параметры

расширить все

Задает код, который C Function блок выполняет во время симуляции. Например, можно вызвать функцию из внешнего кода С, заданного на панели Simulation Target, внести изменения в результаты и выполнить операции, чтобы передать результаты другим блокам.

Задает код инициализации блока C Function. Этот код выполняется один раз в начале симуляции. Для примера можно инициализировать постоянные данные.

Задает код очистки, который запускается блоком C Function при завершении модели. Этот код выполняется один раз в конце симуляции. Для примера используйте этот код, чтобы освободить память, кэшированную на постоянных символах, заданных как пустые указатели.

Таблица Symbols задает атрибуты символов в коде С Необходимо ввести атрибуты каждого символа в таблицу.

  • Name - имя символа в исходном коде.

  • Scope - Возможности символа. Вы можете изменить возможности символа в любое время. Доступны следующие возможности:

    • Input - Входной символ в блок C Function.

    • Output - Выход символа в блок C Function.

    • InputOutput - Задайте символ как вход и выход в блок C Function.

    • Parameter - Задайте символ как параметр. Имя параметра определяется Label свойство символа.

    • Persistent - Определите символ как постоянные данные.

      Вы можете задать пустой указатель с помощью Persistent возможности. Пустой указатель - это указатель, который может хранить данные любого типа, которые вы создаете или выделяете.

    • Constant - Определите символ как константу, используя размер значения или числовые выражения.

  • Label - Метка символа. Для символов с заданной возможностями Input или Outputэта метка отображается как имя порта на блоке. Для символов с заданной возможностями Parameter, эта метка является меткой, которая появляется в маске параметров блоков. Если возможности Constant, метка является постоянным выражением. Вы не можете задать метку для Persistent символы.

  • Type - Тип данных символа. Выберите тип данных из выпадающего списка или укажите пользовательский тип данных.

    Как использовать пользовательский тип, такой как Simulink.Bus, Simulink Enum или Simulink.AliasType который не имеет определения внешнего заголовка, сопоставленного с блоком C Function, задайте соответствующий тип в таблице Symbol.

  • Size - Размер данных о символе. Блок C Function поддерживает только скаляры и векторы; матрицы и массивы с более высоким измерением не поддерживаются. Можно использовать выражение size, чтобы задать размер выхода или использования -1 чтобы наследовать размер.

  • Port - Для входных и выходных символов, Port указывает индекс порта на блоке данных о символе. Для символов параметров, Port указывает порядок отображения символа в маске параметров блоков.

Характеристики блоков

Типы данных

Булев[a] | шина[a] | double[a] | перечисленные[a] | целое число[a] | сингл[a]

Прямое сквозное соединение

no

Многомерные сигналы

yes

Сигналы переменного размера

no

Обнаружение пересечения нулем

no

[a] Фактический тип данных или поддержка возможностей зависит от реализации блоков.

Расширенные возможности

.
Введенный в R2020a