Чтобы оптимизировать интегрирование Кода С++, сгенерированного из приложений Simulink®, компоненты и подсистемы с внешним кодом C or C++, конфигурируют индивидуально настраиваемый интерфейс класса C++. Когда вы генерируете Код С++ из модели, модель появляется как класс, элементы данных появляются как члены класса, и функции модели появляются как методы класса в сгенерированном коде. Конфигурирование интерфейса класса C++ позволяет вам настроить следующие аспекты сгенерированного Кода С++:
Информация о классе — Имя класса и пространство имен
Информация о члене класса — доступ к Члену класса и видимость
Информация о методе класса — имена Метода класса и аргументы
Индивидуально настраиваемый интерфейс класса C++ позволяет сгенерированным классам соответствовать определенным стандартам кода или интерфейсным требованиям так, чтобы сгенерированный код мог скомпилировать и объединяться в более крупные архитектуры с минимальной индивидуальной настройкой постгенерации.
Интерактивный рабочий процесс обеспечивает быструю, интуитивную, и полную настройку индивидуально настраиваемого интерфейса класса C++ при помощи инструментов, доступных непосредственно от вкладки C++ Code. От вкладки можно нажать Code Interface и получить доступ к диалоговому окну настройки Class Name & Namespace и редактору Отображений Кода (с Property Inspector), чтобы сконфигурировать интерфейс.
В интерактивном режиме сконфигурировать индивидуально настраиваемый интерфейс C++:
Откройте среду для конфигурирования индивидуально настраиваемого интерфейса класса C++:
Откройте приложение Embedded Coder®. В галерее Apps нажмите Embedded Coder.
Установите язык на C++. На вкладке C++ Code нажмите Output и выберите Embedded C++ Code.

Установите параметры конфигурации модели. Чтобы открыть диалоговое окно Configuration Parameters, на вкладке C++ Code, нажимают Settings и выбирают C/C++ Code generation settings. Эти параметры конфигурируют поведение генерации кода всей модели. Чтобы сконфигурировать параметры, характерные для генерации индивидуально настраиваемого интерфейса класса C++, можно установить эти параметры (расположенный на панели Interface):

| Параметр конфигурации | Описание |
|---|---|
| Code interface packaging | Выбирает выходной язык для сгенерированного кода. Для получения дополнительной информации смотрите, что интерфейс Code группирует. |
| Multi-instance code error diagnostic | Задает уровень серьезности для диагностики, отображенной, когда модель нарушает требования для генерации кода мультиэкземпляра. Для получения дополнительной информации смотрите диагностику ошибки в коде Мультиэкземпляра. |
| Remove error status field in real-time model data structure | Задает, не использовать ли ошибочное поле состояния от сгенерированной структуры данных модели реального времени |
| Include model types in model class | Задает, чтобы включать определения типа модели в пространстве имен класса модели. Для получения дополнительной информации смотрите, Включают типы модели в класс модели. |
Интерфейсные параметры, которые связаны, но реже используются, появляются под Advanced parameters.
| Параметр конфигурации | Описание |
|---|---|
| Terminate function required | Задает, сгенерировать ли |
| Combine signal/state structures | Задает, объединить ли глобальные блоки-сигналы и глобальные данные состояния в одну структуру данных в сгенерированном коде. Для получения дополнительной информации смотрите, что Объединение предупреждает/утверждает о структурах. |
| Generate destructor | Задает, сгенерировать ли деструктор для класса модели C++. Для получения дополнительной информации смотрите, Генерируют деструктор. |
| Use dynamic memory allocation for model block instantiation | Задает выделение памяти для иерархий модели. Для получения дополнительной информации, seeUse динамическое выделение памяти для инстанцирования блока модели. |
Сконфигурируйте имя класса и пространство имен. Когда вы генерируете Код С++ из модели, та модель появляется как класс в сгенерированном коде. Чтобы упростить интегрирование и выполнить код и интерфейсные требования, можно настроить сгенерированное имя класса. Опционально, можно определить объем сгенерированного кода и предотвратить столкновения символа в рамках проекта путем определения пространства имен для сгенерированного класса. В смоделированных системах, созданных как иерархия модели, можно задать различное пространство имен для каждой модели в иерархии.
Сгенерированный интерфейс класса C++, объявленный в заголовочном файле модели, включает индивидуально настраиваемое имя и пространство имен:
// File: rtwdemo_cpp_workflow.h
namespace CustomizedNamespace
{
class customized_ModelClass {
// public data and function members
public:
// private data and function members
private:
};
}
Сконфигурировать имя класса и пространство имен для индивидуально настраиваемого интерфейса класса C++:
На вкладке C++ Code нажмите Code Interface и выберите Class Name & Namespace.

Чтобы сконфигурировать имя класса, отредактируйте поле C++ Class Name.
Чтобы сконфигурировать пространство имен класса, отредактируйте поле C++ Class Namespace.
Нажмите OK. Валидация выполняется в интерактивном режиме с полевыми предупреждениями, которые предупреждают вас, если вы вводите недопустимое имя или пространство имен.
Сконфигурируйте видимость и доступ членов класса. Когда вы генерируете Код С++ из модели, элементы данных Simulink появляются как члены класса в сгенерированном коде. Чтобы настроить инкапсуляцию данных о классе, чтобы соответствовать стандартам кода, безопасности или требованиям к производительности, можно настроить видимость и доступ сгенерированных членов класса. Элементы данных Simulink могут быть сгруппированы в эти категории моделирования элементов:
| Категория элемента модели | Описание |
|---|---|
| Inports | Порты ввода данных корневого уровня модели, такие как Inport и блоки In Bus Element. Для получения дополнительной информации смотрите Inport. |
| Выходные порты | Порты вывода данных корневого уровня модели, такие как Outport и блоки Out Bus Element. Для получения дополнительной информации смотрите Выходной порт. |
| Аргументы параметра модели | Переменные рабочей области, которые появляются как экземпляр (нестатические) элементы данных класса. |
| Параметры модели | Переменные рабочей области, которые совместно используются через экземпляры класса модели, которые сгенерированы как статические элементы данных класса. |
| Сигналы, состояния и внутренние данные | Элементы данных, которые являются внутренними к модели, такими как выходные сигналы блока, дискретные состояния блока, хранилища данных и сигналы пересечения нулем. |
Для каждой категории элемента модели можно сконфигурировать видимость данных, чтобы управлять модификатором доступа (спецификатор доступа) сгенерированных членов класса. Каждая опция и ее удар на сгенерированный интерфейс класса C++, объявленный в заголовочном файле модели, обрисованы в общих чертах:
| Опции видимости данных | Описание |
|---|---|
| общественность | Если вы конфигурируете элементы данных как
File: rtwdemo_cpp_workflow.h
namespace CustomizedNamespace
{
class customized_ModelClass {
public:
// example inport
ExtU rtU;
// example outport
ExtY rtY;
// example block signals and states
DW rtDW;
private:
…
};
}
|
| защищенный | Если вы конфигурируете элементы данных как File: rtwdemo_cpp_workflow.h
// Class declaration for model example_model
namespace CustomizedNamespace
{
class customized_ModelClass {
public:
protected:
// example inport
ExtU rtU;
// example outport
ExtY rtY;
// example block signals and states
DW rtDW;
private:
…
};
}
|
| частный | Если вы конфигурируете элементы как File: rtwdemo_cpp_workflow.h
namespace CustomizedNamespace
{
class customized_ModelClass {
public:
private:
// example inport
ExtU rtU;
// example outport
ExtY rtY;
// example block signals and states
DW rtDW;
};
}
|
| Отдельные аргументы (Только аргументы параметра модели) | Если вы конфигурируете элементы данных как File: rtwdemo_cpp_workflow.h
namespace CustomizedNamespace
{
class customized_ModelClass {
public:
// model step function
void step1(real_T rty_engineState,
const real_T modelParameterArgument);
private:
…
};
}
|
После того, как вы устанавливаете видимость данных категории элемента модели, можно сконфигурировать метод доступа модели, чтобы определить, как методы для получения и установки сгенерированы для элементов данных. Это управления конфигурацией, как код приложения может просмотреть и изменить данные о члене класса. Каждая опция и ее удар на сгенерированный интерфейс класса C++, объявленный в заголовочном файле модели, обрисованы в общих чертах:
| Опции метода доступа члена | Описание |
|---|---|
| Метод | Если вы конфигурируете импорт как File: rtwdemo_cpp_workflow.h
namespace CustomizedNamespace
{
class customized_ModelClass {
public:
// example inport
void setInport(real_T localArgInput);
// example outport
real_T getOutport() const;
// example of model parameter arguments configured with
// ‘DataAccess’ ‘Direct'
real_T const & getInstP() const;
// example of model parameter arguments configured with
// ‘DataAccess’ ‘Pointer’
// real_T const * getInstP() const;
// example Block parameters get and set methods
const rtwdemo_cppclass_workflowModelClass::rtwdemo_cppclass_workflow_P &
getBlockParameters() const;
void setBlockParameters(const rtwdemo_cppclass_workflow_P
*prtwdemo_cppclass_workflowrtrtP);
// example Block states get and set methods
const rtwdemo_cppclass_workflowModelClass::rtwdemo_cppclass_workflow_DW &
getDWork() const;
void setDWork(const rtwdemo_cppclass_workflow_DW
*prtwdemo_cppclass_workflowrtDW);
private:
…
};
}
|
| Встроенный метод | Если вы конфигурируете импорт как File: rtwdemo_cpp_workflow.h
namespace CustomizedNamespace
{
class customized_ModelClass {
public:
// example inport set method
void setkeyState(real_T localArgInput)
{
rtU.keyState = localArgInput;
}
// example outport get method
const real_T* getengineState() const
{
return rtY.engineState;
}
// example Block parameters get and set method
const rtwdemo_cppclass_workflowModelClass::rtwdemo_cppclass_workflow_P &
getBlockParameters() const
{
return rtwdemo_cppclass_workflowrtrtP;
}
void setBlockParameters(const rtwdemo_cppclass_workflow_P
*prtwdemo_cppclass_workflowrtrtP)
{
rtwdemo_cppclass_workflowrtrtP = *prtwdemo_cppclass_workflowrtrtP;
}
// example Block states get and set methods
const rtwdemo_cppclass_workflowModelClass::rtwdemo_cppclass_workflow_DW &
getDWork() const
{
return rtwdemo_cppclass_workflowrtDW;
}
void setDWork(const rtwdemo_cppclass_workflow_DW
*prtwdemo_cppclass_workflowrtDW)
{
rtwdemo_cppclass_workflowrtDW = *prtwdemo_cppclass_workflowrtDW;
}
private:
…
};
}
|
| Основанный на структуре метод | Если вы конфигурируете импорт как File: rtwdemo_cpp_workflow.h
namespace CustomizedNamespace
{
class customized_ModelClass {
// public data and function members
public:
// example inport
void setExternalInputs(const ExtU_demoMethodScheduledModel_T
* pExtU_demoMethodScheduledModel_T);
// example outport
const myNamespace::myModelClass::ExtY_demoMethodScheduledModel_T
& getExternalOutputs() const;
// Other model element categories may not be configured as ‘Structure-based method’
private:
…
};
}
|
| Встроенный основанный на структуре метод | Если вы конфигурируете импорт как File: rtwdemo_cpp_workflow.h
namespace CustomizedNamespace
{
class customized_ModelClass {
public:
// example inport
void setExternalInputs(const ExtU_demoMethodScheduledModel_T
* pExtU_demoMethodScheduledModel_T)
{
demoMethodScheduledModelWithR_U = *pExtU_demoMethodScheduledModel_T;
}
// example outport
const myNamespace::myModelClass::ExtY_demoMethodScheduledModel_T
& getExternalOutputs() const
{
return demoMethodScheduledModelWithR_Y;
}
// Other model element categories may not be configured as ‘Inlined structure-based method’
private:
…
};
}
|
| 'none' | Если вы конфигурируете доступ категории элемента модели как File: rtwdemo_cpp_workflow.h
// External inputs (root inport signals with default storage)
struct ExtU {
real_T keyState; // '<Root>/keyState'
};
// External outputs (root outports fed by signals with default storage)
struct ExtY {
real_T engineState[3]; // '<Root>/engineState'
real_T cycleTime; // '<Root>/cycleTime'
};
namespace CustomizedNamespace
{
class customized_ModelClass {
public:
// External inputs
ExtU rtU;
// External outputs
ExtY rtY;
private:
…
};
}
|
Для каждой категории элемента модели обрисованы в общих чертах допустимая видимость данных и комбинации метода доступа члена:
| Категория элемента модели | Видимость данных | Метод доступа члена |
|---|---|---|
| Inports | частный | Метод Встроенный метод Основанный на структуре метод Встроенный основанный на структуре метод |
| общественность | 'none' Метод Встроенный метод Основанный на структуре метод Встроенный основанный на структуре метод | |
| Выходные порты | частный | Метод Встроенный метод Основанный на структуре метод Встроенный основанный на структуре метод |
| общественность | 'none' Метод Встроенный метод Основанный на структуре метод Встроенный основанный на структуре метод | |
| Аргументы параметра модели | Отдельные аргументы | 'none' |
| частный | Метод Встроенный метод | |
| Параметры модели | частный | 'none' Метод Встроенный метод |
| общественность | 'none' Метод Встроенный метод | |
| Сигналы, состояния и внутренние данные | частный | 'none' Метод Встроенный метод |
| общественность | 'none' Метод Встроенный метод |
Сконфигурировать члены класса индивидуально настраиваемого интерфейса класса C++:
Откройте редактор Отображений Кода. На вкладке C++ Code нажмите Code Interface и выберите Code Mappings.
Откройте панель Data. В редакторе Отображений Кода кликните по вкладке Data.

Сконфигурируйте видимость. Чтобы сконфигурировать видимость категории элементов данных Simulink в сгенерированном коде, из столбца Data Visibility, выбирают спецификатор доступа из данных опций. Опции варьируются в зависимости от Model Element Category.
Сконфигурируйте доступ. Сконфигурировать доступ категории элементов данных Simulink в сгенерированном коде, из столбца Member Access Method, выбор, как сгенерировать методы для получения и установки из данных опций. Опции варьируются в зависимости от Model Element Category и выбранного Data Visibility.
Сконфигурируйте имена метода класса и аргументы. Когда вы генерируете Код С++ из модели, функции модели появляются как методы класса в сгенерированном коде. Чтобы объединяться с внешним кодом или интерфейсными требованиями, можно настроить имя сгенерированных методов класса. Кроме того, для периодических функций тарифной ставки и Функций Simulink, можно сконфигурировать имя, порядок и идентификатор сгенерированных аргументов.
Сгенерированные методы класса упоминаются как методы точки входа и являются местоположениями в коде, где передача программного управления (выполнение) происходит. Методы точки входа варьируются в зависимости от типа модели Simulink и могут быть сгруппированы в следующие типы:
| Тип модели | Тип функции модели | Описание | Имя функции модели | Ожидаемое имя метода |
|---|---|---|---|---|
| Модели экспорта функций | Экспортируемая функция | Экспортируемая функция для подсистемы. | ExportedFunction:, где имя блока Inport вызова функции в модели | или (если задано) |
| Функция Simulink | Экспортируемая функция для блока Simulink Function. | Simulink Function: где имя блока Simulink Function в модели | для глобального блока Simulink Function или для ограниченного по объему блока Simulink Function | |
| Экспорт функций или основанные на уровне модели | Инициализируйте функцию | Код инициализации для модели. В начале кода приложения вызовите функцию однажды. Не используйте эту функцию, чтобы сбросить структуру данных модели реального времени ( | Initialize | |
| Функция раздела | Для раздела модели, выхода и кода обновления. Параметр конфигурации модели Single output/update function выбран (значение по умолчанию). | Partition:, где раздел, который был создан явным образом из блока в модели и показан в Редакторе Расписания Simulink® (например, P1) | , где однозначно определяет функцию, сгенерированную в течение одного из периодов расчета модели | |
| Периодическая многозадачная функция | Для блоков в основанной на уровне модели, сконфигурированной для многозадачности, выхода и кода обновления. Генератор кода производит функцию в течение каждого периода расчета. Параметр конфигурации модели Single output/update function выбран (значение по умолчанию). | Periodic: где аннотация, которая соответствует периоду шага расчета для периодического или непрерывного уровня многозадачной модели (например, D1) | , где однозначно определяет функцию, сгенерированную в течение одного из периодов расчета модели | |
| Периодическая однозадачная функция | Для блоков в основанной на уровне модели, сконфигурированной для однозадачности, выхода и кода обновления. Параметр конфигурации модели Single output/update function выбран (значение по умолчанию). | Periodic | | |
| Функция сброса | Если модель включает блок Reset Function, сгенерированный код сброса. Чтобы сбросить условия или утвердить, вызовите функцию от кода приложения. | Reset: где имя функции сброса в модели | | |
| Оконечная функция | Код для того, чтобы выключить систему. Для основанных на ERT моделей можно подавить генерацию этой функции путем очистки параметра конфигурации модели Terminate function required (набор по умолчанию). | Terminate | |
Сгенерированный интерфейс класса C++, объявленный в заголовочном файле модели, включает имя функции и индивидуальные настройки аргумента в сгенерированных методах точки входа:
File: rtwdemo_cpp_workflow.h
namespace CustomizedNamespace
{
class customized_ModelClass {
public:
// model initialize function- customized name
void customized_initialize();
// model step function- customized name & arguments
void customized_step(customArg1, const* customArg2);
// model terminate function- customized name
void customized_terminate();
// Constructor
customized_ModelClass();
// Destructor
~customized_ModelClass();
private:
…
};
}
Откройте редактор Отображений Кода. На вкладке C++ Code нажмите Code Interface и выберите Code Mappings.
Откройте панель Functions. В редакторе Отображений Кода кликните по вкладке Functions. Чтобы просмотреть полный список функций точки входа для вашей модели, нажмите кнопку Update Diagram.

Сконфигурируйте имена методов.
Чтобы сконфигурировать имя метода точки входа в сгенерированном коде, из столбца Method Name, нажатия кнопки и непосредственно редактируют электронную таблицу. Можно ввести пользовательское имя, или можно использовать параметры формата идентификатора, чтобы управлять динамически сгенерированным именем. Для получения дополнительной информации о параметрах формата идентификатора, смотрите Управление форматом Идентификатора.
Проверьте имя в столбце Method Preview.
Сконфигурируйте аргументы метода. Для периодических функций тарифной ставки и Функций Simulink, можно сконфигурировать имя, порядок и идентификаторы аргументов метода.
Сконфигурировать аргументы периодической функции тарифной ставки:
Откройте диалоговое окно настройки Интерфейса Ступенчатой функции. Из редактора Отображений Кода, на вкладке Functions, в столбце Method Preview, кликают по гиперссылке предварительного просмотра метода периодической функции тарифной ставки:

В диалоговом окне выберите Configure arguments for Step function prototype и нажмите Get default. Это действие запускает представление аргументов метода.

Чтобы изменить порядок аргументов, перетащите строки аргумента в средстве просмотра.
Чтобы изменить идентификатор, в столбце C++ Type Qualifier, выбирают соответствующий идентификатор из выпадающего списка:
| Опция идентификатора | Предварительный просмотр |
|---|---|
| Значение (Только Inports) | myPeriodicFunction (argInport) |
| Ссылка const (Только Inports) | myPeriodicFunction (const & argInport) |
| Указатель на Const | myPeriodicFunction (const * argInport) |
| Указатель | myPeriodicFunction (* argInport) |
| Указатель const на const | myPeriodicFunction (const * const argInport) |
Чтобы изменить название аргумента, в столбце C++ Identifier Name, нажатии кнопки и непосредственно редактируют имя. Можно ввести пользовательское имя, или можно использовать параметры формата идентификатора, чтобы управлять динамически сгенерированным именем. Для получения дополнительной информации о параметрах формата идентификатора, смотрите Управление форматом Идентификатора.
Если вы вводите то же имя для аргумента импорта и аргумента выходного порта, импорт и выходной порт появляются как один параметр в сгенерированном методе. Например, если вы задаете импорт как argInport и аргумент выходного порта как argOutport, сгенерированный метод был бы:
myStepFunction(argInport, argOutport);
Если вы задаете аргумент импорта как argIO и аргумент выходного порта как argIO, сгенерированный метод был бы:
myStepFunction(argIO);
Чтобы проверить выборы аргументов, нажмите Validate.
Чтобы применить изменения и выйти из диалогового окна, нажмите OK.
Сконфигурировать аргументы Функции Simulink:
Откройте Функцию Simulink Интерфейсное диалоговое окно настройки. Из редактора Отображений Кода, на вкладке Functions, в столбце Method Preview, кликают по гиперссылке предварительного просмотра метода Функции Simulink:

Чтобы изменить возвращаемый аргумент, выберите опцию возвращаемого аргумента от C/C++ return argument выпадающий список.
Чтобы изменить порядок аргументов, перетащите строки аргумента в средстве просмотра.
Чтобы изменить идентификатор, в столбце C++ Type Qualifier, выбирают идентификатор из выпадающего списка:
| Опция идентификатора | Предварительный просмотр |
|---|---|
| 'auto' | mySimulinkFunction (argInport) |
| Const_reference | mySimulinkFunction (const & argInport) |
| Указатель на Const | mySimulinkFunction (const * argInport) |
| Указатель | mySimulinkFunction (* argInport) |
| Указатель const на const | mySimulinkFunction (const * const argInport) |
Чтобы изменить название аргумента, в столбце C++ Identifier name, нажатии кнопки и непосредственно редактируют имя. Можно ввести пользовательское имя, или можно использовать параметры формата идентификатора, чтобы управлять динамически сгенерированным именем. Для получения дополнительной информации о параметрах формата идентификатора, смотрите Управление форматом Идентификатора.
Чтобы проверить изменения в Аргументах функции Simulink, рассмотрите поле Simulink function prototype, чтобы просмотреть ожидаемый прототип метода.
Чтобы применить изменения и выйти из диалогового окна, нажмите OK.
Сгенерируйте индивидуально настраиваемый интерфейс класса C++ путем генерации кода из модели. Чтобы проверить ваши настройки интерфейса класса C++, создайте модель и просмотрите сгенерированный класс, член класса и представления метода класса.
Сгенерируйте код. Чтобы сгенерировать интерфейс класса C++, на вкладке C++ Code, нажимают Build.
Просмотрите код. Чтобы просмотреть сгенерированный код, на вкладке нажимают View Code. Сгенерированный код появляется около модели в рабочем пространстве модели.

Выполнить итерации. Если сгенерированный интерфейс не удовлетворяет требования кода, вносит корректировки настройки, пока требованиям не удовлетворяют.
Если представление сгенерированного кода не удовлетворяет ваши требования, реконфигурировало интерфейс и генерирует код снова, пока требованиям генерации кода не удовлетворяют. Для руководства при понимании сгенерированного кода смотрите, Анализируют Интерфейс Сгенерированного кода.
Специфичная для экземпляра Поддержка Параметра — можно использовать аргументы параметра модели, чтобы сконфигурировать переменные рабочей области, которые были заданы в качестве аргументов. Можно сконфигурировать эти аргументы как члены парламента, не занимающие официального поста класса или в качестве отдельных аргументов, заданных вне класса. Чтобы сконфигурировать в классе, можно установить видимость данных на частный и сконфигурировать генерацию методов для получения и установки. Опционально, можно сконфигурировать значения члена класса, как задано в классе (в Property Inspector, установить Data Access на Direct) или переданный ссылкой через конструктора класса (в Property Inspector, набор Data Access к Pointer). Установка доступа к данным поддерживается для сборок топ-модели. Для сборок образца модели код сгенерирован как ссылки в классе модели. Чтобы сконфигурировать специфичные для экземпляра параметры вне класса, установите видимость данных на отдельные аргументы.
Специфичные для экземпляра ограничения параметра включают:
Переменные MATLAB®, отмеченные как аргументы модели, не могут быть сконфигурированными как частные члены класса.
Аргументы параметра модели не поддерживаются сборками щелчка правой кнопкой.
Интерфейсный стиль аргументов Code Generation Behavior — The I/O спецификации метода шага поддерживает односкоростные модели и многоскоростные однозадачные модели. Многоскоростные многозадачные модели не поддерживаются. Кроме того, интерфейс инкапсуляции C++ не является значением по умолчанию, значение проигнорировано для параметра Pass fixed-size scalar root inputs by value for code generation.
Факторы Stateflow® — Если у вас есть лицензия Stateflow для диаграммы Stateflow, которая находится в корневой модели, сконфигурированной, чтобы использовать I/O arguments step method функциональная спецификация, и это использует корневое значение импорта модели или вызывает подсистему, которая использует корневое значение импорта модели, сделайте одно из следующих, чтобы сгенерировать код:
В диаграмме Stateflow снимите флажок Execute (enter) Chart At Initialization.
Вставьте блок Simulink Signal Conversion сразу после корневого импорта. В диалоговом окне параметров блоков Преобразования Сигнала выберите Exclude этот блок из 'Оптимизации' сокращения блока.
Факторы Simscape™ — Если корневое значение импорта модели соединяется с блоком Simscape, вставьте блок Simulink Signal Conversion между корневым импортом и блок преобразования Simscape. В диалоговом окне параметров блоков Преобразования Сигнала выберите Exclude этот блок из 'Оптимизации' сокращения блока.
Факторы Модели, на которые ссылаются — При создавании модели, на которую ссылаются, которая сконфигурирована, чтобы сгенерировать интерфейс класса C++:
Не используйте интерфейс класса C++ в случаях, когда модель, на которую ссылаются, не сможет иметь объединенной функции выхода/обновления. Случаи включают модель, которая имеет время непрерывной выборки или сохраняет состояния.
Не используйте виртуальные шины в качестве вводов или выводов к модели, на которую ссылаются, когда модель, на которую ссылаются будет, использовать метод шага аргументов I/O. Когда крест сигналов шины сослался контуры, модели, или используют невиртуальные шины или используют метод шага По умолчанию.