Компоненты программного обеспечения AUTOSAR могут гибко задать размерности элемента AUTOSAR, такие как порт, при помощи символьной ссылки на постоянную систему. Постоянная система задает размер массивов типа данных порта. К элементам модели AUTOSAR с различными размерами массивов в Simulink®:
Создайте блоки, которые представляют элементы AUTOSAR.
Чтобы представлять значения размера массивов, добавьте AUTOSAR.Parameter
объекты данных с классом памяти SystemConstant
.
Чтобы задать размер массивов для элемента AUTOSAR, сошлитесь на AUTOSAR.Parameter
объект данных.
С различными размерами массивов можно изменить значения размера массивов в системных константах между симуляциями модели, не регенерируя код для симуляции. Когда вы создаете модель, сгенерированный C и код ARXML содержат соответствие символов различным размерам массивов.
Предположим, что вы создаете импорт Simulink In1
представлять порт получателя AUTOSAR с различным размером массивов.
Смоделировать систему AUTOSAR, постоянную, который задает размерности In1
, создайте AUTOSAR.Parameter
объект данных, SymDimA
, с классом памяти SystemConstant
.
SymDimA = AUTOSAR.Parameter; SymDimA.CoderInfo.StorageClass = 'custom'; SymDimA.CoderInfo.CustomStorageClass = 'SystemConstant'; SymDimA.DataType = 'uint8'; SymDimA.Value = 5;
В диалоговом окне для блока In1
импорта, введите название параметра,
SymDimA
, в поле Port dimensions.
Когда вы генерируете код для модели, имени постоянной системы, SymDimA
, кажется, в C и коде ARXML представляет различный размер массивов. Вот выборка сгенерированного кода C:
/* SignalConversion: '<Root>/ConcatBufferAtVector ConcatenateIn1' */ for (i = 0; i < Rte_SysCon_SymDimA; i++) { rtb_VectorConcatenate[i] = tmp[i];
Вот выборка экспортируемых описаний ARXML:
<MAX-NUMBER-OF-ELEMENTS BINDING-TIME="PRE-COMPILE-TIME"> <SYSC-REF DEST="SW-SYSTEMCONST">/pkg/dt/SC/SymDimA</SYSC-REF> </MAX-NUMBER-OF-ELEMENTS>