Embedded Coder® сокращает усилия по конфигурированию интерфейсов данных и функций путем предоставления способа задать строения по умолчанию для категорий элементов данных и функций в модели. Применение строений по умолчанию может сэкономить время и уменьшить риск введения ошибок в код, особенно для больших моделей и моделей, из которых вы генерируете мультиобразец. После применения строений по умолчанию можно выборочно переопределить настройки по умолчанию для отдельных элементов данных и функций.
Настройте интерфейс данных rtwdemo_roll
модели путем конфигурирования функций
roll_control_step
кому:
Считайте входные данные от глобальных переменных, которые объявлены и определены во внешних файлах roll_input_data.h
и roll_input_data.c
.
Запишите выходные данные в глобальные переменные, которые объявляет генератор кода output_data.h
и определяет в output_data.c
.
Для внесения этих изменений в MATLAB® Командное окно, скопируйте эти файлы внешнего кода в текущую рабочую папку MATLAB.
copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','roll_input_data.c')); copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','roll_input_data.h')); copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','roll_heading_mode.c')); copyfile(fullfile(matlabroot,'toolbox','rtw','rtwdemos','roll_heading_mode.h'));
Изменения строения интерфейса данных зависят от доступности этих файлов для генерации кода и процесса сборки. Процесс сборки компилирует сгенерированный код с кодом, который находится в этих файлах.
Сконфигурируйте строения генерации кода по умолчанию для входных и выходных портов модели.
На вкладке C Code выберите Code Interface > Default Code Mappings.
Сконфигурируйте блоки Inport на корневом уровне модели, чтобы они появлялись в сгенерированном коде как отдельные глобальные переменные, заданные внешним кодом. В редакторе Отображения в разделе Inports and Outports выберите Inports категории. Установите класс памяти по умолчанию равным ImportFromFile
.
С помощью этой настройки сгенерированный код не задает глобальные переменные, которые представляют входные данные. Вместо этого #include
оператор включает заголовочный файл, который объявляет входные переменные. Имя файла заголовка задается с помощью Property Inspector.
В Property Inspector установите значение свойства HeaderFile roll_input_data.h
.
Чтобы увидеть, как extern
объявления во внешнем заголовочном файле roll_input_data.h
назовите входные переменные, в Командном Окне MATLAB откройте roll_input_data.h
находится в текущей рабочей папке.
extern boolean_T AP_Eng; extern real32_T HDG_Ref; extern real32_T Rate_FB; extern real32_T Phi; extern real32_T Psi; extern real32_T TAS; extern real32_T Turn_Knob;
Сконфигурируйте правило именования генерации кода для глобальных переменных. По умолчанию генератор кода называет глобальные переменные с помощью префикса rt
. Генератор кода для создания кода, который совпадает с объявлениями внешних переменных в roll_input_data.h
, сконфигурируйте соответственно правило именования генерации кода для глобальных переменных.
Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters). На панели инструментов, на вкладке C Code, нажмите Settings.
Перейдите к панели Code Generation > Identifiers.
Установите Global variables параметра в правило именования $N$M
(удалить rt
префикс). Лексема $N
представляет имя элемента данных в модели, например, имя блока Inport или Outport. Лексема $M
представляет текст управления именами, который вставляет генератор кода, при необходимости, чтобы избежать конфликтов имен с другими глобальными переменными в коде.
Применить изменение.
Сконфигурируйте блоки Outport на корневом уровне модели, чтобы они появлялись в сгенерированном коде как отдельные глобальные переменные. В редакторе Отображения, на вкладке Data Defaults, для категории Outports, установите Storage Class равным ExportToFile
.
Сгенерированный код объявляет и определяет выходные переменные в файлах заголовка и определения, которые вы задаете в Property Inspector.
В Property Inspector задайте имена для сгенерированных файлов заголовка и определения. Установите HeaderFile свойств в roll_output_data.h
и DefinitionFile свойств к roll_output_data.c
.
Сконфигурируйте генерацию кода для модели, чтобы включать внешние исходные файлы roll_input_data.c
и roll_heading_mode.c
. В диалоговом окне Configuration Parameters, набор Code Generation> Custom Code> Additional build information> Source files к roll_input_data.c roll_heading_mode.c
. Затем нажмите Apply и OK.
Сохраните модель. Перегенерируйте код, нажав Build.
Ошибка компилятора указывает, что переменная HDG_Mode
не объявляется. Эта переменная не объявлена в заголовочном файле roll_input_data.h
, который вы объявили заголовочным файлом по умолчанию для входных портов. Исправить эту ошибку можно в следующем разделе этого руководства.
Модель сконфигурирована, чтобы открыть отчет генерации кода после завершения генерации кода. Минимизируйте это окно отчета для исследования позже в этом руководстве.
Вы сконфигурировали Inport блоки, чтобы использовать внешний файл заголовка для объявления и определения входных переменных. В представлении кода подтвердите, что сгенерированный код включает этот внешний заголовочный файл путем поиска roll_input_data.h
.
Поиск корневого уровня Inport имени блока, HDG_Ref
. Когда вы вводите, выберите предложение поиска с зеленым V
значок. Это предложение поиска находит образцы HDG_Ref
используется как переменная в сгенерированном коде. Подтвердите, что HDG_Ref
определяется как отдельная глобальная переменная.
В модели rtwdemo_roll
, нажмите на Outport блок Ail_Cmd
. Наведите курсор на меню многоточия над блоком и нажатием кнопки Navigate To Code. Код Представления кода подсветок в rtwdemo_roll.c
который соответствует блоку. В коде наведите курсор на меню многоточия над переменным выходом Ail_Cmd
. Диалоговое окно трассируемости отображает определения переменных и элементы модели, которые соответствуют коду. Диалоговое окно подтверждает, что Ail_Cmd
определяется как отдельная глобальная переменная. Щелкните код определения, чтобы увидеть определение в output_data.c
.
Настройки, которые вы выбираете для категории в Data Defaults, применяются к элементам этой категории в модели. Чтобы переопределить настройки по умолчанию для отдельного элемента данных, используйте редактор Отображения.
Когда вы сгенерировали код после настройки параметров по умолчанию для inports и outports, ошибка компилятора указала, что переменная HDG_Mode
не объявляется. Можно исправить эту ошибку, переопределив строение по умолчанию для блока Inport HDG_Mode
.
В редакторе Отображения на вкладке Inports выберите source HDG_Mode
.
Установите Storage Class значение ImportFromFile
.
В Property Inspector установите Identifier равным HDG_Mode
и Header File к roll_heading_mode.h
.
На основе этих настроек генератор кода импортирует объявление для внешней переменной HDG_Mode
из файла заголовка roll_heading_mode.h
.
extern boolean_T HDG_Mode;
Сохраните модель и перегенерируйте код.
Минимизируйте окно отчета генерации кода для исследования позже в этом руководстве.
В представлении кода выполните поиск roll_heading_mode.h
и подтвердите, что он включен в сгенерированный код с файлом строения по умолчанию roll_input_data.h
.
Поиск HDG_Mode
и подтвердите, что он определен как отдельная глобальная переменная.
Затем сконфигурируйте параметр модели как глобальную переменную в сгенерированном коде. Как глобальная переменная, можно настроить значение параметров во время исполнения.