Значение по умолчанию переопределения C интерфейс ступенчатой функции

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

  • FunctionName

  • Имена аргумента

  • Порядок аргументов

  • Возвращаемое значение и спецификаторы данных об аргументе

  • Буферизация оптимизации для аргументов

Можно сделать индивидуальные настройки ступенчатой функции при помощи образцово-специфичного диалогового окна настройки открытыми из редактора Отображений Кода.

Откройте диалоговое окно настройки

Этот пример показывает, как открыть диалоговое окно настройки для ступенчатой функции основанной на уровне модели rtwdemo_fcnprotoctrl.

1. Откройте и сохраните модель rtwdemo_fcnprotoctrl.

2. Введите перспективу Кода.

3. В Коде, Сопоставляющем Редактор, выберите вкладку Entry-Point Functions. Если вы открываете модель, которая еще не сконфигурирована с кодом, сопоставляющим данные, обновите модель, чтобы включать отображения кода путем нажатия кнопки отображений обновления кода.

4. В строке ступенчатой функции, в соответствии с Функциональным столбцом Предварительного просмотра, кликают по прототипной гиперссылке, чтобы открыть Конфигурировать C Ступенчатая функция диалоговое окно настройки Interface:rtwdemo_fcnprotoctrl (диалоговое окно настройки).

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

Для моделей, сконфигурированных, чтобы сгенерировать код мультиэкземпляра (прототип содержит ссылку на сам), смотрите, Генерируют Повторно используемый Код от Топ-моделей.

Настройте имя функции

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

  • Если переопределение только имени функции, в редакторе Отображений Кода, на вкладке Entry-Point Functions, задает имя функции в столбце Имени функции.

  • Если переопределение имени функции и настроек аргумента, в диалоговом окне настройки, задает имя функции в Поле имени Ступенчатой функции C.

Пример

Этот пример показывает, как настроить ступенчатую функцию, сгенерированную, например, модель rtwdemo_fcnprotoctrl.

1. Откройте диалоговое окно настройки модели rtwdemo_fcnprotoctrl.

2. Поменяйте имя в Поле имени Ступенчатой функции C к fcnprotoctrl_run. Функциональный предварительный просмотр обновляет, чтобы отразить новое имя ступенчатой функции.

Примените изменение, закройте диалоговое окно и сохраните модель.

3. Сгенерируйте код и проверьте смену имени.

В нижнем правом углу перспективы Кода выберите вкладку Code. В Представлении кода проверьте, что сгенерированный код для ступенчатой функции отражает смену имени.

  • В списке файлов Представления кода выберите файл rtwdemo_fcnprotoctrl.h. В Поле поиска проверьте, что список элементов кода включает новое имя функции (fcnprotoctrl_run). Чтобы просмотреть объявление, выберите имя функции.

Объявление подсвечено в коде:

  • Проверьте свои изменения в файле C rtwdemo_fcnprotoctrl.c. В Поле поиска проверьте, что список элементов кода включает новое имя функции (fcnprotoctrl_run). Чтобы просмотреть исходный код (определение) выбирают имя функции.

Для addional примеров смотрите, что Значение по умолчанию Переопределения Называет для Функций Точки входа Индивидуума C.

Настройте аргументы функции

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

По умолчанию главная или модель, на которую ссылаются, использует ступенчатую функцию void-void, чтобы передать данные. Этот тип функции позволяет сгенерированному коду связываться с внешним кодом путем доступа к глобальным данным, хранимым как структуры данных, которые находятся в общей памяти.

Чтобы сконфигурировать модель, чтобы иметь ступенчатую функцию void-void, откройте диалоговое окно настройки и очистите аргументы Configure для прототипного флажка Ступенчатой функции. Проверьте обновления в прототипном поле предварительного просмотра.

Сконфигурируйте передающие аргументы

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

  • Возвращаемое значение

  • Введите спецификаторы

  • Имена

  • Порядок

Пример

  1. Откройте диалоговое окно настройки для модели rtwdemo_fcnprotoctrl.

  2. Выберите аргументы Configure для прототипного флажка Ступенчатой функции.

  3. Нажмите значение по умолчанию Get, чтобы открыть таблицу, которая отображает настройки по умолчанию для возвращаемого значения и аргументов (Inports/Outports).

4. Настройте возвращаемое значение ступенчатой функции путем выбора пусто или Выходного порта от возвращаемого аргумента C выпадающий список.

В данном примере выберите пусто.

5. Настройте типы данных аргумента от Спецификатора Типа C выпадающий список.

В данном примере не внесите изменения в спецификатор типа.

Спецификаторы типа:

  • 'auto': Значение - например, arg

  • Const: Значение со спецификатором const - например, const arg

  • Pointer to const: Значение со спецификатором const и ссылаемый указателем - например, const * arg

  • Указатель: Ссылка указателем - например, * arg

  • Const pointer to const: Значение со спецификатором const, ссылкой указателем и самим указателем - например, const * const arg

Когда модель включает модель, на которую ссылаются:

  • Для модели, на которую ссылаются спецификатор типа для корневого входного параметра в интерфейсе ступенчатой функции установлен в Auto. Генератор кода использует интерфейсную спецификацию путем генерации броска типа, который отбрасывает спецификатор const от исходного сигнала.

  • Для родительского элемента эталонной модели спецификатор типа для исходного сигнала собирается в значение кроме Auto. заменить это поведение, добавить спецификатор типа const в модель, на которую ссылаются.

6. Настройте имена аргумента путем прямого редактирования Поля имени Идентификатора C.

В данном примере поменяйте имена аргументов путем удаления символов нижнего подчеркивания (например, измените аргумент, названный arg_In1 к argIn1).

7. Настройте порядок аргументов путем перетаскивания строк в таблице.

В данном примере переместите первый выходной порт, Out1, к первой позиции. Переместите второй выходной порт, 2, к третьей позиции.

8. Подтвердите и примените свои изменения. Сохраните модель.

9. Сгенерируйте код и проверьте изменения в Представлении кода.

  • Проверьте свои изменения в заголовочном файле, rtwdemo_fcnprotoctrl.h, путем проверки, что Поле поиска включает новое имя функции (представление fcnprotoctrl_run). To объявление функции, выберите имя функции.

  • Проверьте свои изменения в файле C, rtwdemo_fcnprotoctrl.c, путем проверки, что Поле поиска включает новое имя функции (fcnprotoctrl_run). Чтобы просмотреть исходный код (определение) для функции, выберите имя функции.

Моделируйте различный предварительный просмотр Fom

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

Например, рассмотрите модель под названием mdlref_counter с импортом (выходной порт arg_input), (arg_output), , и блок насыщения с пределами, которые имеют имена аргумента параметра рабочей области lower_saturation_limit и upper_saturation_limit. , диалоговое окно настройки предварительно просматривает прототипа функции как следующее:

mdlref_counter_custom(arg_input, arg_output)

В сгенерированном коде прототип включает аргументы параметра:

mdlref_counter_custom(real_T arg_input, real_T arg_output, real_T 
  rtp_lower_saturation_limit, real_T rtp_upper_saturation_limit)

Оптимизируйте буферизацию для аргументов

Можно оптимизировать буферизацию, требуемую для аргументов I/O в ступенчатой функции для модели. Если вы придерживаетесь этих требований при конфигурировании импорта и пары выходного порта, генератор кода объединяет соответствующие аргументы и снова использует связанный буфер:

  • Блоки Inport и Выходного порта должны иметь те же свойства, включая тип данных, размерность и частоту дискретизации.

  • Частота дискретизации блоков Inport и Outport должна совпасть с базовой ставкой модели.

  • Условно выполняемая подсистема не может управлять блоком Outport.

  • Один, невиртуальный блок вывод должен управлять блоком Outport. Например, блок Mux, который объединяет несколько буферов, не может управлять блоком Outport.

  • В диалоговом окне настройки необходимо сконфигурировать Inport и Outport с тем же спецификатором типа C и именем идентификатора.

Пример

Этот пример показывает, как объединить аргументы для портов In3 и Out2, например, модель rtwdemo_fcnprotoctrl.

1. Откройте диалоговое окно настройки для модели rtwdemo_fcnprotoctrl.

2. Выберите аргументы Configure для прототипного флажка Ступенчатой функции, чтобы открыть отображение для аргументов.

3. Для портов In3 и Out2, набор C Спецификатор Типа to Pointer и Имя Идентификатора C к sharedArg.

4. Проверьте, что предварительный просмотр показывает объединенный аргумент для argIn3 и argOut2.

5. Подтвердите и примените свои изменения. Сохраните модель.

4. Сгенерируйте и просмотрите код. В Представлении кода ищите fcnprotoctrl_run, функционируют и проверяют функциональный интерфейс. В данном примере разделяемый аргумент появляется в коде чтения для блока Inport и коде записи для блока Outport.