Программные компоненты 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;
В диалоговом окне для inport block In1
, Signal Attributes вкладку, Port dimensions поле, введите имя параметра, SymDimA
.
Чтобы позволить символьным размерностям распространяться по всей модели, необходимо выбрать опцию строения модели Разрешить спецификацию символьных размерностей.
Когда вы генерируете код для модели, имя системной константы, 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>
Разрешить символическую спецификацию размерности | AUTOSAR.Parameter