C Function

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

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

Описание

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

Поддержки блока 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.

Количество входных параметров и их имен определяется определениями в вашем внешнем коде С и определениями символов в таблице 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.

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

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

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

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

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

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

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

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

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

Типы данных

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

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

No

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

Yes

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

No

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

No

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

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

Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.

Введенный в R2020a