Сконфигурируйте интерфейс данных

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'));

Изменения строения интерфейса данных зависят от доступности этих файлов для генерации кода и процесса сборки. Процесс сборки компилирует сгенерированный код с кодом, который находится в этих файлах.

Сконфигурируйте генерацию кода по умолчанию для данных

Сконфигурируйте строения генерации кода по умолчанию для входных и выходных портов модели.

  1. На вкладке C Code выберите Code Interface > Default Code Mappings.

  2. Сконфигурируйте блоки Inport на корневом уровне модели, чтобы они появлялись в сгенерированном коде как отдельные глобальные переменные, заданные внешним кодом. В редакторе Отображения в разделе Inports and Outports выберите Inports категории. Установите класс памяти по умолчанию равным ImportFromFile.

    С помощью этой настройки сгенерированный код не задает глобальные переменные, которые представляют входные данные. Вместо этого #include оператор включает заголовочный файл, который объявляет входные переменные. Имя файла заголовка задается с помощью Property Inspector.

  3. В Property Inspector установите значение свойства HeaderFile roll_input_data.h.

  4. Чтобы увидеть, как 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;
    
  5. Сконфигурируйте правило именования генерации кода для глобальных переменных. По умолчанию генератор кода называет глобальные переменные с помощью префикса rt. Генератор кода для создания кода, который совпадает с объявлениями внешних переменных в roll_input_data.h, сконфигурируйте соответственно правило именования генерации кода для глобальных переменных.

    1. Откройте диалоговое окно Параметры конфигурации модели (Model Configuration Parameters). На панели инструментов, на вкладке C Code, нажмите Settings.

    2. Перейдите к панели Code Generation > Identifiers.

    3. Установите Global variables параметра в правило именования $N$M (удалить rt префикс). Лексема $N представляет имя элемента данных в модели, например, имя блока Inport или Outport. Лексема $M представляет текст управления именами, который вставляет генератор кода, при необходимости, чтобы избежать конфликтов имен с другими глобальными переменными в коде.

    4. Применить изменение.

  6. Сконфигурируйте блоки Outport на корневом уровне модели, чтобы они появлялись в сгенерированном коде как отдельные глобальные переменные. В редакторе Отображения, на вкладке Data Defaults, для категории Outports, установите Storage Class равным ExportToFile.

    Сгенерированный код объявляет и определяет выходные переменные в файлах заголовка и определения, которые вы задаете в Property Inspector.

  7. В Property Inspector задайте имена для сгенерированных файлов заголовка и определения. Установите HeaderFile свойств в roll_output_data.h и DefinitionFile свойств к roll_output_data.c.

  8. Сконфигурируйте генерацию кода для модели, чтобы включать внешние исходные файлы 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.

  9. Сохраните модель. Перегенерируйте код, нажав Build.

    Ошибка компилятора указывает, что переменная HDG_Mode не объявляется. Эта переменная не объявлена в заголовочном файле roll_input_data.h, который вы объявили заголовочным файлом по умолчанию для входных портов. Исправить эту ошибку можно в следующем разделе этого руководства.

    Модель сконфигурирована, чтобы открыть отчет генерации кода после завершения генерации кода. Минимизируйте это окно отчета для исследования позже в этом руководстве.

  10. Вы сконфигурировали Inport блоки, чтобы использовать внешний файл заголовка для объявления и определения входных переменных. В представлении кода подтвердите, что сгенерированный код включает этот внешний заголовочный файл путем поиска roll_input_data.h.

  11. Поиск корневого уровня Inport имени блока, HDG_Ref. Когда вы вводите, выберите предложение поиска с зеленым V значок. Это предложение поиска находит образцы HDG_Ref используется как переменная в сгенерированном коде. Подтвердите, что HDG_Ref определяется как отдельная глобальная переменная.

  12. В модели 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.

  1. В редакторе Отображения на вкладке Inports выберите source HDG_Mode.

  2. Установите Storage Class значение ImportFromFile.

  3. В Property Inspector установите Identifier равным HDG_Mode и Header File к roll_heading_mode.h.

    На основе этих настроек генератор кода импортирует объявление для внешней переменной HDG_Mode из файла заголовка roll_heading_mode.h.

    extern boolean_T HDG_Mode;
    
  4. Сохраните модель и перегенерируйте код.

    Минимизируйте окно отчета генерации кода для исследования позже в этом руководстве.

  5. В представлении кода выполните поиск roll_heading_mode.h и подтвердите, что он включен в сгенерированный код с файлом строения по умолчанию roll_input_data.h.

  6. Поиск HDG_Mode и подтвердите, что он определен как отдельная глобальная переменная.

Затем сконфигурируйте параметр модели как глобальную переменную в сгенерированном коде. Как глобальная переменная, можно настроить значение параметров во время исполнения.