Можно вызвать внешний код С из модели Simulink® использование блока MATLAB Function. Выполните эти высокоуровневые шаги:
Начните с существующего кода С, состоящего из источника (.c) и заголовок (.h) файлы.
В блоке MATLAB Function введите код MATLAB®, который вызывает код С. Используйте coder.ceval функция. Чтобы передать данные ссылкой, используйте coder.ref, coder.rref, или coder.wref.
Задайте исходные и заголовочные файлы C для симуляции в панели Simulation Target диалогового окна Model Configuration Parameters. Включайте заголовочный файл с помощью двойных цитат, например, #include "program.h". Если необходимо получить доступ к исходным и заголовочным файлам C вне рабочей папки, перечислите путь в панели Simulation Target в текстовом поле Include Directories.
В качестве альтернативы используйте coder.cinclude и coder.updateBuildInfo функции, чтобы задать исходные и заголовочные файлы в рамках вашего кода MATLAB. Чтобы разработать интерфейс к внешнему коду, можно использовать coder.ExternalDependency класс. Чтобы видеть, какой рабочий процесс поддерживается, см. пользовательский код Импорта.
Протестируйте свою модель Simulink и гарантируйте, что она функционирует правильно.
Если у вас есть лицензия Simulink Coder™, можно сгенерировать код для целей с помощью этого метода. Чтобы использовать те же исходные и заголовочные файлы в генерации кода, нажмите Use the same custom code settings as Simulation Target в панели Code Generation > Custom Code. Можно также задать другой источник и заголовочные файлы.
К conditionalize ваш код, чтобы выполнить другие команды для симуляции и генерации кода, можно использовать coder.target функция.
coder.ceval в блоке MATLAB functionВ этом примере показано, как вызвать простую программу C doubleIt от блока MATLAB Function.
Создайте исходный файл doubleIt.c в вашей текущей рабочей папке.
#include "doubleIt.h"
double doubleIt(double u)
{
return(u*2.0);
}
Создайте заголовочный файл doubleIt.h в вашей текущей рабочей папке.
#ifndef MYFN #define MYFN double doubleIt(double u); #endif
Создайте новую модель Simulink. Сохраните его как myModel.
В Library Browser, от User-Defined Functions, добавляет блок MATLAB Function к модели и дважды кликает блок, чтобы открыть редактор.
Введите код, который вызывает doubleIt программа:
function y = callingDoubleIt(u) y = 0.0; y = coder.ceval('doubleIt',u);
Соедините блок Constant, имеющий значение 3.5 к входному порту блока MATLAB Function.
Соедините блок Display с выходным портом.

В диалоговом окне Model Configuration Parameters откройте панель Simulation Target.
В разделе Insert custom C code in generated выберите Header file из списка и введите #include "doubleIt.h" в текстовом поле Header file.
В разделе Additional build information выберите Source files из списка, введите doubleIt.c в текстовом поле Source files, и нажимают OK.

Запустите симуляцию. Значение 7 появляется в блоке Display.
Эта процедура применяется к симуляции только.
Simulink генерирует код для блоков MATLAB Function и Stateflow®, чтобы симулировать модель. Когда вы вызываете внешний код С с помощью блоков MATLAB Function или Stateflow, можно управлять определениями типа для импортированных шин и перечислений в симуляции модели.
Simulink может сгенерировать определения типа, или можно предоставить заголовочный файл, содержащий определения типа. Вы управляете этим поведением с помощью флажка Generate typedefs for imported bus and enumeration types в диалоговом окне Model Configuration Parameters.
Включать пользовательский заголовочный файл, задающий перечисление и типы шины:
Снимите флажок Generate typedefs for imported bus and enumeration types.
Перечислите заголовочный файл в панели Simulation Target в текстовом поле Header file.
Сконфигурировать Simulink, чтобы автоматически сгенерировать определения типа:
Установите флажок Generate typedefs for imported bus and enumeration types.
Не перечисляйте заголовочный файл, который соответствует шинам или перечислениям.
coder.BuildConfig | coder.ExternalDependency | coder.ceval | coder.cinclude | coder.ref | coder.rref | coder.target | coder.updateBuildInfo | coder.wref