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

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

Тип параметраОписание
Параметр моделиПараметр задан в модели, такой в качестве параметра в рабочем пространстве модели.
Внешний параметрПараметр, заданный как объект в базовом рабочем пространстве или в словаре данных.

Чтобы сконфигурировать параметр для генерации кода, необходимо сопоставить параметр с объектом данных. Например, прежде, чем сконфигурировать переменную MATLAB для генерации кода, в Model Explorer, преобразуют переменную в объект параметра.

Когда вы открываете модель в приложении Simulink Coder, параметры модели, которые сопоставлены с объектами данных, появляются в редакторе Отображений Кода. В редакторе можно сконфигурировать параметры для генерации кода. Если модель использует внешние параметры, можно добавить их в редактор Отображений Кода путем нажатия на Refresh соединитесь справа от названия параметра. Та ссылка инициирует схему обновления и в представлении редактора, добавляют внешние параметры, которые используются моделью.

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

  • Сделайте данные доступными для взаимодействия, в то время как сгенерированный код выполняется.

  • Минимизируйте объем данных, который хранится в памяти.

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

  • Улучшите удобочитаемость и трассируемость сгенерированного кода.

Чтобы управлять, являются ли параметры в модели настраиваемыми, можно получить доступ к параметру конфигурации модели Default parameter behavior при помощи 'Auto' will be tunable/inline ссылка на редактор Отображений Кода вкладка Data Defaults. Например, можно использовать ту ссылку, чтобы сделать параметры настраиваемыми в этих случаях:

  • Совершенствуйте установки параметров во время быстрого прототипирования

  • Калибруйте параметры

  • Оптимизируйте параметры для производственного кода

Для генерации кода примеры показывают, как сконфигурировать параметры модели и аргументы параметра модели для модели rtwdemo_configrpinterface. Можно сконфигурировать отображения кода при помощи Code Mappings Editor или API отображений кода (Code Mappings Editor).

Выберите Customization Options for Parameters

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

  • Настроить ли настройку по умолчанию

    Если модель включает значительное количество параметров категории, которая должна быть настраиваемой (например, больше чем 10), более эффективно сконфигурировать параметры той категории при помощи настройки по умолчанию, и затем заменить ту установку для особых случаев. Если модель включает несколько параметров данной категории, которые имеют уникальный источник, именование, или требования размещения, рассматривают конфигурирование параметров индивидуально.

  • Как объявить и обработать данные о параметре модели в сгенерированном коде

    • Как разделяют глобальные переменные

    • Считывать данные о параметре модели из глобальных переменных, заданных во внешнем коде

    • Как вызывает к функциям доступа. Требует Embedded Coder®

    Для получения дополнительной информации об этих опциях, смотрите Данные об Управлении и Функциональный Интерфейс в Сгенерированном коде.

Другие факторы для параметров модели включают ли в:

Для списка интерфейсных требований, которые относятся к параметрам, которые имеют соответствующие классы памяти и свойства класса памяти, смотрите Choose Storage Class and Storage Class Properties для Хранилищ данных.

Требования параметра, например, модель rtwdemo_configrpinterface :

  • По умолчанию сохраните параметры модели в сгенерированном коде для настройки. Не оптимизируйте код путем встраивания параметров.

  • Примените префиксный mp_ к именам переменных, которые представляют параметры модели.

В данном примере сконфигурируйте параметры модели в rtwdemo_configrpinterface удовлетворять эти требования генерации кода.

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

Настройки генерации кода по умолчанию для параметров могут уменьшать усилие по подготовке модели для генерации кода, особенно если модель имеет значительное количество параметров, с которыми необходимо взаимодействовать, в то время как сгенерированный код выполняется. Выберите параметры конфигурации однажды, и генератор кода применяет те настройки к параметрам через модель. Simulink® хранит настройку по умолчанию как часть модели.

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

В этом примере показано, как использовать Code Mappings Editor, чтобы сконфигурировать настройки по умолчанию для параметров модели для модели rtwdemo_configrpinterface. Сконфигурируйте параметры модели так, чтобы они были настраиваемыми и были заданы и объявлены в сгенерированном коде как отдельные глобальные переменные.

  1. Открытая модель rtwdemo_configrpinterface. Сохраните копию модели к перезаписываемому местоположению.

    Simulink model to use for learning how to configure model parameters for code generation.

  2. Откройте приложение Simulink Coder.

  3. Во вкладке C Code выберите Code Interface> Default Code Mappings.

  4. В редакторе Отображений Кода, под Parameters, избранная категория Model parameters. Текст ссылки 'Auto' will be inlined указывает, что генератор кода сконфигурирован, чтобы встроить параметры модели по умолчанию. Требование для этого примера является параметрами модели быть настраиваемым. Нажмите 'Auto' will be inlined.

  5. В диалоговом окне Model Configuration Parameters, параметр конфигурации модели набора Default parameter behavior к Tunable. Сохраните изменение и закройте диалоговое окно. В редакторе Отображений Кода текст ссылки превращается в 'Auto' will be tunable.

  6. В Отображениях Кода, с категорией Model parameters, все еще выбранной, устанавливает класс памяти на ExportedGlobal.

    Code Mappings editor with Data Defaults tab selected, Parameters tree node expanded, and storage class for Model parameters set to ExportedGlobal.

  7. Сохраните модель.

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

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

Если ваша модель соответствует по крайней мере одному из этих критериев, рассмотрите настройки генерации кода конфигурирования для параметров индивидуально:

  • Использование несколько параметров той же категории, которые имеют уникальный источник, именование или требования размещения.

  • Использование несколько параметров той же категории.

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

В этом примере показано, как использовать редактор Отображений Кода, чтобы применить вашу установку класса памяти по умолчанию для параметров модели к параметрам K1, Table1, и Table2 в модели rtwdemo_configinterface. Вы конфигурируете идентификаторы кода для тех параметров. Можно задать идентификаторы генерации кода, например, для интегрирования, не изменяя проект модели.

  1. Если вы уже не сделали так, завершитесь, шаги в Конфигурируют Настройки генерации кода По умолчанию для Параметров.

  2. Расширьте Model Parameters. По умолчанию класс памяти для каждого параметра установлен в Auto. Используйте настройку по умолчанию модели, которая задает класс памяти ExportedGlobal.

    • Чтобы избежать оптимизации и обеспечить генератор кода, чтобы использовать настройку по умолчанию, установите класс памяти на Model default.

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

  3. В редакторе Отображений Кода, под Model Parameters, избранные параметры K1, Table1, и Table2. Установите класс памяти на Model default: ExportedGlobal.

    Code Mappings editor with Parameters tab selected, parameters K1, Table1, and Table2 selected, and storage class being set to Model default: ExportedGlobal.

  4. Сконфигурируйте идентификаторы кода для параметров модели с именами, которые включают префиксный mp_. В редакторе Отображений Кода выберите параметр модели K1. В Property Inspector расширьте узел Code. Установите свойство Identifier класса памяти на mp_K1. Для параметров Table1 и Table2, установите Identifier на mp_Table1 и mp_Table2.

    Code Mappings editor with Parameters tab selected, Model parameters tree node expanded, and storage class for parameters K1, Table1, and Table2 set to Model default: ConstVolatile. Property Inspector shows Identifier property for parameter Table2 set to mp_Table2D.

  5. Сохраните модель.

  6. Сгенерируйте и просмотрите код. Например, найдите определения данных для параметра модели mp_K1 в rtwdemo_configrpinterface.c.

    int8_T mp_K1 = 2;                       
    

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

    if (mode) {
        output = (real_T)mp_K1 * dout_Table1;
      } else {
        output = dstate_X;
      }
    

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

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

В этом примере показано, как сконфигурировать настройки по умолчанию для параметров модели для модели rtwdemo_configrpinterface. Сконфигурируйте параметры модели так, чтобы они были настраиваемыми и были заданы и объявлены в сгенерированном коде как отдельные глобальные переменные. Примените свою установку класса памяти по умолчанию для параметров модели к параметрам K1, Table1, и Table2. Сконфигурируйте идентификаторы кода для тех параметров.

  1. Откройте модель в качестве примера.

    open_system('rtwdemo_configrpinterface')
    
  2. Установите параметр конфигурации модели Default parameter behavior на Tunable.

    model='rtwdemo_configrpinterface';
    
    set_param(model,'DefaultParameterBehavior','Tunable');
    
  3. Создайте объект cm путем вызывания функции coder.mapping.api.get. Объектно-ориентированная память настройка генерации кода для элементов данных в модели rtwdemo_configrpdefaults.

    cm = coder.mapping.api.get('rtwdemo_configrpinterface');
  4. Сконфигурируйте настройки по умолчанию для параметров модели путем вызывания функции setDataDefault. Для аргументов задайте эти значения:

    • Объект, возвращенный coder.mapping.api.get

    • ModelParameters для категории по умолчанию

    • Имя свойства StorageClass со значением свойства ExportedGlobal

    setDataDefault(cm,'ModelParameters','StorageClass','ExportedGlobal');
  5. Проверьте свою настройку по умолчанию для параметров модели. Издайте приказы к getDataDefault это задает объект, возвращенный coder.mapping.api.get, категория ModelParameters, и StorageClass.

    getDataDefault(cm,'ModelParameters','StorageClass')
    
    ans =
    
        'ExportedGlobal'
    
  6. Примените настройку по умолчанию для параметров модели к параметрам K1, Table1, и Table2 .

    По умолчанию Simulink устанавливает класс памяти для отдельных параметров к Auto. Когда классом памяти является Auto, генератор кода:

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

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

    Сконфигурируйте генератор кода, чтобы применить ваши настройки параметра модели по умолчанию к параметрам K1, Table1, и Table2. Для каждого параметра вызовите функцию setModelParameter. Задайте объект, возвращенный coder.mapping.api.get, название параметра, имя свойства StorageClass, и значение свойства Model default.

    setModelParameter(cm,'K1','StorageClass','Model default');
    setModelParameter(cm,'Table1','StorageClass','Model default');
    setModelParameter(cm,'Table2','StorageClass','Model default');
    
  7. Проверьте свои изменения конфигурации для параметров K1, Table1, и Table2 при помощи вызовов функции getModelParameter.

    getModelParameter(cm,'K1','StorageClass')
    
    ans =
    
        'Model default'
    
    getModelParameter(cm,'Table1','StorageClass')
    
    ans =
    
        'Model default'
    
    
    getModelParameter(cm,'Table2','StorageClass')
    
    ans =
    
        'Model default'
  8. Сконфигурируйте идентификаторы кода для параметров модели. Для каждого параметра вызовите функцию setModelParameter. Задайте объект, возвращенный coder.mapping.api.get, название параметра, имя свойства Identifier, и одни из этих значений свойств.

    Параметр моделиИдентификатор кода
    K1mp_K1
    Table1mp_Table1
    Table2mp_Table2
    setModelParameter(cm,'K1','Identifier','mp_K1');
    setModelParameter(cm,'Table1','Identifier','mp_Table1');
    setModelParameter(cm,'Table2','Identifier','mp_Table2');
    
  9. Проверьте свои изменения конфигурации для параметров модели при помощи вызовов функции getModelParameter.

    getModelParameter(cm,'K1','Identifier')
    
    ans =
    
        'mp_K1'
    
    getModelParameter(cm,'Table1','Identifier')
    
    ans =
    
        'mp_Table1'
    
    getModelParameter(cm, 'Table2', 'Identifier')
    
    ans =
    
        'mp_Table2'
    
  10. Сохраните модель.

  11. Сгенерируйте и просмотрите код. Например, найдите определения данных для параметра модели mp_K1 в rtwdemo_configrpinterface.c.

    int8_T mp_K1 = 2;                       
    

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

    if (mode) {
        output = (real_T)mp_K1 * dout_Table1;
      } else {
        output = dstate_X;
      }
    

Выберите Storage Class и Storage Class Properties for Model Parameters

В зависимости от ваших требований генерации кода примите решение из этих классов памяти сконфигурировать генерацию кода для параметров модели. Для констант, только Default применяется. Для аргументов параметра модели, только Auto, Default, и Model default применяться.

ТребованияКласс памяти
Включите оптимизацию, потенциально генерируя более эффективный код.Автоматический (Только отдельные отображения)
Для элементов данных, которые не могут быть оптимизированы, представляйте данные как поле стандартной структуры данных.Значение по умолчанию (Значение по умолчанию, сопоставляющее только)
Препятствуйте тому, чтобы оптимизация устранила устройство хранения данных для элемента данных, и используйте отображение значения по умолчанию для категории элемента данных.Значение по умолчанию модели (Только отдельные отображения), Dictionary Default (Только отдельные отображения)
Сгенерируйте определение глобальной переменной и объявление.ExportedGlobal
Сгенерируйте код, который читает из и пишет в указатель глобальной переменной или глобальной переменной, заданный вашим внешним кодом.ImportedExtern, ImportedExternPointer

Список доступных классов памяти может включать другие специфичные для проекта классы памяти, заданные в Словарь Embedded Coder. Если у вас есть особые требования, которым не отвечают перечисленные классы памяти, и у вас есть программное обеспечение Embedded Coder, можно задать класс памяти. Смотрите Задают Классы памяти, Разделы Памяти и Шаблоны функций для Программной архитектуры (Embedded Coder).

Для отдельного параметра модели используйте свойство класса памяти Identifier сконфигурировать имя для переменной, представляющей параметр в сгенерированном коде.

Смотрите также

| |

Похожие темы