exponenta event banner

Настройка вариантов измерения для размеров массива AUTOSAR

Программные компоненты AUTOSAR могут гибко задавать размеры элемента AUTOSAR, например порта, с помощью символьной ссылки на системную константу. Системная константа определяет размер массива типа данных порта. Для моделирования элементов AUTOSAR с различными размерами массива в Simulink ®:

  • Создайте блоки, представляющие элементы AUTOSAR.

  • Чтобы представить значения размера массива, добавьте AUTOSAR.Parameter объекты данных с классом хранения SystemConstant.

  • Чтобы задать размер массива для элемента AUTOSAR, обратитесь к AUTOSAR.Parameter объект данных.

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

Предположим, что создается входной порт Simulink In1 для представления порта приемника AUTOSAR с размером массива вариантов.

Моделирование системной константы AUTOSAR, определяющей размеры In1, создайте AUTOSAR.Parameter объект данных, SymDimA, с классом хранения SystemConstant. Тип данных должен быть подписанным 32-разрядным целым типом.

SymDimA = AUTOSAR.Parameter;
SymDimA.CoderInfo.StorageClass = 'custom';
SymDimA.CoderInfo.CustomStorageClass = 'SystemConstant';
SymDimA.DataType = 'int32';
SymDimA.Min = 1;
SymDimA.Max = 100;
SymDimA.Value = 5;

В диалоговом окне для блока ввода In1, закладка Signal Attributes, поле Port dimensions, введите имя параметра, SymDimA.

Чтобы разрешить распространение символьных размеров по модели, необходимо выбрать опцию конфигурации модели Разрешить спецификацию символьных размеров (Allow symbolic dimension specification).

При создании кода для модели имя системной константы, SymDimA, отображается в коде C и ARXML для представления размера массива вариантов. Ниже приведен пример сгенерированного кода C:

/* SignalConversion generated from: '<Root>/Vector Concatenate' */
for (i = 0; i < Rte_SysCon_SymDimA; i++) {
  rtb_VectorConcatenate[i] = tmpIRead[i];

Ниже приведен пример экспортированных описаний ARXML:

<MAX-NUMBER-OF-ELEMENTS BINDING-TIME="PRE-COMPILE-TIME">
  <SYSC-REF DEST="SW-SYSTEMCONST">/varDim_pkg/dt/SystemConstants/SymDimA</SYSC-REF>
</MAX-NUMBER-OF-ELEMENTS>

См. также

|

Связанные примеры

Подробнее