exponenta event banner

Настройка интерфейса класса C++ для моделей Export-Function

В этом примере показано, как настроить интерфейс класса C++ для модели export-function. Export-function modeling позволяет создавать код для инициируемых событиями функций, которые могут быть интегрированы с внешней средой или планировщиком. Функции определяются с помощью блоков Function-Call Subsystem, function-call Model, Simulink Function и S-Function. В этом примере показано, как настроить создаваемое имя класса, пространство имен, члены класса и методы класса для примерной модели. Этот пример, rtwdemo_cppclass_expfcnпредоставляет набор функций, которые можно настроить в типичной модели «экспорт-функция».

Цели и требования к интерфейсу

Основной целью настройки сгенерированного кода C++ из модели export-function является возможность настройки управляемого событиями поведения. В этом примере целью является обновление имени и пространства имен класса до более значимых значений, настройка функций экспорта, а также упрощение и инкапсуляция оставшихся данных и функций в интерфейсе.

  • Для лучшего отражения управляемого событиями поведения в модели обновите имя класса до triggered_events.

  • Чтобы предотвратить конфликты с другими символами в проекте и указать, что созданный код из Simulink, обновите пространство имен класса до sl.

  • Чтобы упростить и инкапсулировать данные, установите для элементов модели значение private с помощью метода get/set.

  • Чтобы настроить функции, настройте имена функций экспорта.

  • Чтобы сделать другие имена точек входа более значимыми, обновите имена методов инициализации и завершения.

Интерактивный пример

Настройка имени класса модели и пространства имен

1. На вкладке C++ Code щелкните Code Interface и выберите Class Name & Namespace.

2. Чтобы настроить имя класса, в поле C++ Class Name обновите имя до triggered_events.

3. Чтобы настроить пространство имен класса, в поле C++ Class Namespace обновите имя до sl.

4. Нажмите кнопку ОК.

Настройка элементов данных модели в качестве элементов класса

1. Откройте редактор сопоставлений кода. На вкладке Код C++ щелкните Интерфейс кода и выберите Сопоставления кода.

2. Настройте видимость данных. Для категорий элементов модели:

  • Установка для портов ввода и вывода значения private и Method.

  • Задайте для параметров модели значение private и Method.

  • Задайте для аргументов параметра Model значение private и Method.

  • Установка для сигналов, состояний и внутренних данных значения private и Method.

Настройка функций модели как методов классов

1. Откройте панель Функции (Functions). В редакторе сопоставлений кодов перейдите на вкладку Функции.

2. Настройте имена функций экспорта.

  • Для функции экспорта: Export Function: event 1, в столбце «Имя метода» щелкните и отредактируйте электронную таблицу, чтобы обновить имя до subsystemEvent1.

  • Для функции экспорта: Export Function: event 2, в столбце «Имя метода» щелкните и отредактируйте электронную таблицу, чтобы обновить имя до subsystemEvent2.

3. Настройте имя функции Initialize. В столбце «Имя метода» щелкните и отредактируйте электронную таблицу, чтобы изменить имя на initIntegrator.

4. Сконфигурируйте имя функции завершения. В столбце «Имя метода» щелкните и отредактируйте электронную таблицу, чтобы изменить имя на terminateReadIntegrator.

5. Проверьте прототипы методов для всех функций точки входа в столбце «Просмотр метода».

Создание интерфейса

1. Создать код. Чтобы создать интерфейс класса C++, на вкладке C++ Code нажмите кнопку Build.

2. Просмотреть код. Чтобы просмотреть созданный код, на вкладке щелкните Просмотр кода. Созданный код появляется рядом с моделью в рабочем пространстве модели.

Пример программы

Программная настройка интерфейса класса C++ для rtwdemo_cppclass_expfcn используйте этот рабочий процесс:

Открыть пример модели

model ='rtwdemo_cppclass_expfcn';
open_system(model);
% Get the C++ mapping object
cm = coder.mapping.api.get(model);

Настройка имени класса модели и пространства имен

% Configure the C++ class name
setClassName(cm,'event_triggered');
% Configure the enclosing namespace
setClassNamespace(cm,'sl');

Настройка элементов данных модели в качестве элементов класса

% Configure the inports and outports for the model
setData(cm, 'Inports', 'DataVisibility', 'private');
setData(cm, 'Outports', 'DataVisibility', 'private');
setData(cm, 'Inports', 'MemberAccessMethod', 'Method');
setData(cm, 'Outports', 'MemberAccessMethod', 'Method');

% Configure the model parameters
% static model parameters (shared across all instances)
setData(cm, 'ModelParameters','DataVisibility','private');
setData(cm,'ModelParameters', 'MemberAccessMethod','Method');

% Configure the model parameter agruments
setData(cm, 'ModelParameterArguments', 'DataVisibility', 'private');
setData(cm, 'ModelParameterArguments', 'MemberAccessMethod', 'Method');

% Configure the internal data
setData(cm, 'InternalData', 'DataVisibility', 'private');
setData(cm, 'InternalData', 'MemberAccessMethod', 'Method');

Настройка функций модели как методов классов

% To configure the export functions, use the find function to
% retrieve all the export functions for the model
exported_functions = find(cm, 'ExportedFunctions');

% Configure the Exported Function names
setFunction(cm, exported_functions{1}, 'MethodName', 'subsystemEvent1');
setFunction(cm, exported_functions{2}, 'MethodName', 'subsystemEvent2');

% Configure the initialize and terminate function names
setFunction(cm,'Initialize','MethodName', 'initIntegrator');
setFunction(cm,'Terminate', 'MethodName', 'terminateReadIntegrator');

Создание интерфейса

Создайте модель приложения для создания интерфейса класса C++.

См. также

|

Связанные темы