На диалоговом окне Configuration Parameters, набор интерфейс Code Generation> Interface Code, упаковочный (Simulink Coder) параметр к C++ class
для генерации класса C++, взаимодействуют через интерфейс к типовому кодексу. Сгенерированный интерфейс инкапсулирует требуемые данные модели в атрибуты класса C++ и образцовые функции точки входа в методы класса C++. Преимущества инкапсуляции класса C++ включают:
Большее управление доступом к данным модели
Способность создать несколько экземпляров образцовых классов
Более легкое интегрирование типового кодекса в среды программирования на C++
Инкапсуляция класса C++ также работает на сборки щелчка правой кнопкой невиртуальных подсистем. (Для получения информации о требованиях, которые применяются, смотрите, Генерируют Интерфейс Класса C++ к Невиртуальному Коду Подсистемы.)
Сгенерировать инкапсулировавший код класса C++ из основанной на GRT модели:
Установите параметр диалогового окна Configuration Parameters Code Generation> Language к C++
. Этот выбор также включает интерфейс класса C++ кода, группирующий для модели.
На Code Generation> панель Interface, проверьте, что параметр Code interface packaging (Simulink Coder) устанавливается на C++ class
.
Исследуйте установку Multi-instance code error diagnostic (Simulink Coder). Оставьте параметр в его значении по умолчанию Error
, если вы не должны изменять уровень серьезности для диагностики, отображенной, когда модель нарушает требования для генерации кода мультиэкземпляра.
Сгенерируйте код для модели.
Исследуйте код класса модели C++ в сгенерированных файлах
и model.h
. Например, следующая выборка кода из файла H, сгенерированного для модели model.cpp
rtwdemo_secondOrderSystem
в качестве примера, показывает объявление класса C++ для модели.
/* Class declaration for model rtwdemo_secondOrderSystem */ class rtwdemo_secondOrderSystemModelClass { /* public data and function members */ public: /* External outputs */ ExtY_rtwdemo_secondOrderSyste_T rtwdemo_secondOrderSystem_Y; /* Model entry point functions */ /* model initialize function */ void initialize(); /* model step function */ void step(); /* model terminate function */ void terminate(); /* Constructor */ rtwdemo_secondOrderSystemModelClass(); /* Destructor */ ~rtwdemo_secondOrderSystemModelClass(); /* Real-Time Model get method */ RT_MODEL_rtwdemo_secondOrderS_T * getRTM(); ... };
Для получения дополнительной информации о генерации и вызывании образцовых функций точки входа, смотрите, Конфигурируют Генерацию кода для Образцовых Функций Точки входа (Simulink Coder).
Если у вас есть лицензия Embedded Coder®, и вы выбрали цель ERT для своей модели, используйте дополнительный Code Generation> параметры панели Interface, чтобы настроить сгенерированный интерфейс класса C++.
Можно сгенерировать интерфейсы класса C++ для сборок щелчка правой кнопкой невиртуальных подсистем в моделях Simulink®, если следующие требования удовлетворяются:
Модель сконфигурирована для языка C++
и упаковки интерфейса C++ class
кода.
Подсистема конвертируема к блоку Model с помощью функционального Simulink.SubSystem.convertToModelReference
. Для образцовых требований преобразования, на которые ссылаются смотрите страницу с описанием Simulink Simulink.SubSystem.convertToModelReference
.
Чтобы сконфигурировать интерфейсы класса C++ для подсистемы, которая удовлетворяет требования:
Откройте содержание модели и выберите блок подсистемы.
Щелкните правой кнопкой по подсистеме и выберите C/C++ Code> Build This Subsystem.
Когда сборка подсистемы завершится, исследуйте интерфейсы класса C++ в сгенерированных файлах и отчете генерации кода HTML. Для получения дополнительной информации о генерации и вызове образцовых методов точки входа, смотрите, Конфигурируют Генерацию кода для Образцовых Функций Точки входа (Simulink Coder).
Если у вас есть лицензия Embedded Coder, и вы выбрали цель ERT для своей модели, можно использовать команду MATLAB® RTW.configSubsystemBuild
, чтобы настроить сгенерированный интерфейс класса C++ к коду подсистемы.
Среди интерфейсов обмена данными, доступных на панели Interface диалогового окна Configuration Parameters, только, API-интерфейс C поддерживается для генерации кода C++ class
. Если вы выбираете External mode или ASAP2 interface, генерация кода перестала работать с ошибкой валидации.
Если корневое значение импорта модели соединяется с блоком преобразования Simscape™, необходимо вставить блок Simulink Signal Conversion между корневым импортом и блок преобразования Simscape. На диалоговом окне параметров блоков Преобразования Simulink Signal выберите Exclude this block from 'Block reduction' optimization.
Вы не можете использовать интерфейс класса C++ в случаях, когда модель, на которую ссылаются, не может иметь объединенной функции вывода/обновления. Случаи включают модель это
Имеет время непрерывной выборки
Сохраняет состояния