C Function

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

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

  • C Function block

Описание

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

Можно также использовать блок C Function, чтобы вызвать подмножество Математических Библиотечных функций C. Смотрите Вызов 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, которая не может быть смешана с новым, включают, рассматривают добавление включать и Функционального блока C в модели библиотеки и используют ссылку на блок в основной модели. Для получения дополнительной информации смотрите, Создают Пользовательскую Библиотеку.

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

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

  • Непосредственно вызов некоторых библиотечных функций C от блока C Function не поддерживается. Чтобы видеть список Математических Библиотечных функций C, которые можно вызвать непосредственно, смотрите Вызов 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 задает атрибуты символов в коде С. Необходимо ввести атрибуты каждого символа в таблице.

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

  • Осциллограф Осциллограф символа. Можно изменить осциллограф символа в любое время. Следующие осциллографы доступны:

    • Input — Вводимый символ с блоком C Function.

    • Output — Выведите символ с блоком C Function.

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

    • Parameter — Задайте символ в качестве параметра. Название параметра задано Label свойство символа.

    • Persistent — Задайте символ как персистентные данные.

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

    • Constant — Задайте символ как постоянный размер значения использования или числовые выражения.

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

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

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

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

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

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

Типы данных

Boolean[a] | bus[a] | double[a] | enumerated[a] | integer[a] | single[a]

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

no

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

yes

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

no

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

no

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

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

Введенный в R2020a