Сохраните размерности многомерных массивов в сгенерированном коде

По умолчанию сгенерированный код содержит одномерные массивы для многомерных данных модели. В диалоговом окне Configuration Parameters, если вы устанавливаете Array layout (Simulink Coder) параметр к Row-major, можно сохранить размерности многомерных массивов в сгенерированном коде. Сохранение измерений массива в сгенерированном коде улучшает интеграцию с внешним кодом.

MATLAB® и C организуют многомерные данные по-разному. Для получения дополнительной информации смотрите Сохранение Размерности Многомерных массивов.

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

Сконфигурируйте элементы данных модели по умолчанию, чтобы сохранить размерности

Во вкладке Code Mappings> Data Defaults можно сконфигурировать эти категории элементов данных модели. Вы задаете класс памяти, чтобы сохранить размерности.

  • Inports

  • Outports

  • Model parameters

  • External parameter objects

  • Shared local data stores

  • Global data stores

  • Internal data

Затем когда вы устанавливаете Storage class на Auto или Model default на отдельных элементах данных модели, по умолчанию, генератор кода применяет настройку, которую вы настраиваете для соответствующих элементов данных модели.

Рабочий процесс в качестве примера, который применим ко всем предыдущим категориям элемента данных модели:

  1. Откройте модель rtwdemo_preservedimensions.

  2. В диалоговом окне Configuration Parameters проверьте, что параметр Array layout устанавливается на Row-major.

  3. От панели инструментов Simulink, на вкладке Apps, выбирают приложение Embedded Coder.

  4. Во вкладке C Code откройте редактор Отображений Кода.

  5. В редакторе Отображений Кода выберите вкладку Data Defaults.

    Выберите категорию Inports. Заданным Storage Class является ExportToFile. В Property Inspector, в разделе Code, выбирают свойство PreserveDimensions.

    Property Inspector window attached to the Code Mappings editor. Shows
                            the selected PreserveDimensions property check box

    Можно создать новый класс памяти в Embedded Coder®, и затем указать что класс, чтобы сохранить размерности. Для получения дополнительной информации смотрите Размерности Заповедника для Новых Классов памяти.

    Для списка поддерживаемых классов памяти смотрите Классы памяти, Поддержанные, чтобы Сохранить Размерности.

  6. Сгенерируйте код. Сгенерированный код сохраняет размерности всего корневого уровня Inports.

    real_T rtPressure[2][3];
    real_T rtTargetVolume[2][3];
    real_T rtTemperature[2][3]; 

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

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

  1. Во вкладке Modeling кликните по вкладке Model Data Editor.

  2. В Model Data Editor нажмите кнопку Show/refresh additional information.

  3. В Model Data Editor выберите вкладку Inports/Outports.

  4. Установите Change view на Code.

  5. В подсистеме Volume Controller, выберите Volume difference сигнала и набор Storage Class к ExportToFile или любой другой поддерживаемый класс памяти. Для получения дополнительной информации смотрите Классы памяти, Поддержанные, чтобы Сохранить Размерности.

  6. При хранении строки в особом внимании откройте Property Inspector. В разделе Code выберите свойство Preserve array dimensions.

    Property Inspector window attached to the Model Data Editor. Shows the
                            selected Preserve array dimensions property check box

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

    real_T Volumedifference[2][3];

Классы памяти, поддержанные, чтобы сохранить размерности

Можно сохранить размерности в сгенерированном коде для этих классов памяти:

  • Const

  • Volatile

  • ConstVolatile

  • ExportToFile

  • ImportFromFile

  • FileScope (не поддерживаемый для хранилища Глобальных данных)

  • Localizable

Сохраните размерности для новых классов памяти

Чтобы сохранить размерности, когда вы проектируете свой собственный класс памяти в Словаре Embedded Coder, выбирают опцию Preserve array dimensions в Property Inspector. Выбор этого свойства сохраняет размерности для всех экземпляров вашего класса памяти. Чтобы использовать класс памяти, в редакторе Отображений Кода, конфигурируют категории элемента модели путем определения Storage Class к новому классу памяти, который вы создали.

Чтобы сохранить размерности, когда вы спроектируете свой собственный класс памяти в Custom Storage Class Designer, используйте свойство Preserve array dimensions. Preserve array dimensions имеет эти опции:

  • No (значение по умолчанию) — Сглаживает многомерный массив к одной размерности в сгенерированном коде.

  • Yes — Измерения массива консервов для параметров заданного пользовательского класса памяти.

  • Instance Specific — Если вы хотите сохранить измерения массива для каждого экземпляра пользовательского класса памяти, включите свойство Preserve array dimensions на объекте параметра. Для пакета Simulink этой установкой свойства является Instance Specific по умолчанию.

Ограничения

  • Генератор кода сглаживает многомерные массивы в шинах Simulink® в сгенерированном коде.

  • Вы не можете сохранить измерения массива для объектов параметра MPT.

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

  • Генератор кода не сохраняет размерности для параметров без объектов данных.

Похожие темы