Компоненты программного обеспечения AUTOSAR используют методы вычисления (CompuMethods), чтобы преобразовать между внутренними значениями и физическим представлением данных AUTOSAR. Общее использование для CompuMethods является линейным масштабированием данных и измерением и калибровкой.
Embedded Coder® импортирует AUTOSAR CompuMethods, описанный в коде arxml
, и сохраняет их через поездки туда и обратно между Инструментом разработки AUTOSAR (AAT) и Simulink®. В Simulink можно изменить, импортировал CompuMethods, или создайте и сконфигурируйте новый CompuMethods.
Эта тема обеспечивает примеры конфигурирования AUTOSAR CompuMethods в Simulink.
Сконфигурируйте направление CompuMethod для линейных функций
Измените линейное масштабирование для SCALE_LINEAR_AND_TEXTTABLE CompuMethod
Сконфигурируйте рациональную функцию CompuMethod для масштабируемого двойным образом параметра
Можно сконфигурировать свойства AUTOSAR CompuMethod в модели, или графически или программно. Свойства CompuMethod, которые можно изменить, включают имя, категорию, модуль, формат отображения, пакет AUTOSAR и типы данных Simulink.
Чтобы сконфигурировать CompuMethod с помощью графического интерфейса, откройте Словарь AUTOSAR и выберите представление CompuMethods. Это представление отображает модифицируемый CompuMethods в модели, импортированный ли из кода arxml
или созданный в Simulink.
Выберите CompuMethod и отредактируйте доступные поля.
Имя Задайте текст имени
Категория Выберите Identical
, Linear
, RatFunc
, TextTable
или LinearAndTextTable
(см. категории CompuMethod для типов данных),
Unit — Выберите из модулей, доступных в модели
Формат отображения Опционально задайте формат, который будет использоваться измерением и инструментами калибровки, чтобы отобразить данные. Используйте
строку спецификатора формата ANSI® C printf
. Например, %2.1d
задает десятичное число со знаком с минимальной шириной двух символов и максимальной точностью одной цифры. Строка производит отображенное значение такой как 12,2. Для получения дополнительной информации о построении строки спецификатора формата, смотрите, Конфигурируют DisplayFormat.
Package — Задайте путь пакета AUTOSAR, который будет сгенерирован для CompuMethods
Simulink DataTypes — Задайте список типов данных Simulink та ссылка CompuMethod
Чтобы изменить пакет AUTOSAR для CompuMethod, можно сделать любое из следующего:
Введите путь к пакету в поле параметра Package.
Чтобы открыть Браузер Пакета AUTOSAR, нажмите кнопку справа от поля Package. Используйте браузер, чтобы перейти к существующему пакету или создать и выбрать пакет. Когда вы выбираете пакет в браузере и нажимаете Apply, значение параметров CompuMethod Package обновляется с вашим выбором. Для получения дополнительной информации о Браузере Пакета AUTOSAR, смотрите, Конфигурируют Пакет AUTOSAR для Компонента, Интерфейса, CompuMethod или SwAddrMethod.
Чтобы сопоставить CompuMethod с типом данных Simulink, используемым в модели, выберите CompuMethod и нажмите кнопку Add справа от Simulink DataTypes. Это действие открывает диалоговое окно со списком доступных типов данных. В списке значений выберите Simulink.NumericType
или Simulink.AliasType
, или введите имя перечислимого типа Simulink. Чтобы добавить тип в список Simulink DataTypes, нажмите OK.
Чтобы установить свойство Simulink DataTypes программно, откройте модель и используйте свойство AUTOSAR вызов функции set
, подобный следующему:
arProps=autosar.api.getAUTOSARProperties('cmSpeed'); set(arProps,'/pkg/CompuMethods/RpmCm','SlDataTypes',{'SpeedRpmAdt'}) sltypes=get(arProps,'/pkg/CompuMethods/RpmCm', 'SlDataTypes')
sltypes = 'SpeedRpmAdt'
Можно создать AUTOSAR CompuMethods в модели, или графически или программно. Чтобы создать AUTOSAR CompuMethod с помощью графического интерфейса, откройте Словарь AUTOSAR и выберите представление CompuMethods. Чтобы открыть диалоговое окно Add CompuMethod, нажмите кнопку Add. Сконфигурируйте начальные свойства для CompuMethod, такие как имя, категория, модуль, формат отображения для калибровки, пакет AUTOSAR, чтобы сгенерировать, и сопоставил тип данных Simulink. Когда вы нажимаете OK, представление CompuMethods в Словаре AUTOSAR обновляется с новым CompuMethod.
Когда вы генерируете код, экспортируемый код arxml
содержит определение CompuMethod и ссылки на него.
Для проектов, порожденных в Simulink, вы можете свойства элементов управления для экспортируемого CompuMethod
, включая направление преобразования CompuMethod
между внутренними и физическими представлениями значения. Или Используя Словарь AUTOSAR или Используя свойство AUTOSAR функция set
, можно задать одно из следующих значений направления CompuMethod
:
InternalToPhys
(значение по умолчанию) — Генерирует разделы CompuMethod
для преобразования внутренних значений в их физические представления.
PhysToInternal
— Сгенерируйте разделы CompuMethod
для преобразования физических значений в их внутренние представления.
Bidirectional
— Сгенерируйте разделы CompuMethod
и для внутренних-к-физическому и для физических-к-внутреннему направлений преобразования.
Чтобы задать направление CompuMethod
в Командном окне MATLAB®, используйте свойство AUTOSAR вызов функции set
, подобный следующему:
hModel = 'autosar_swc_expfcns'; open_system(hModel); arProps=autosar.api.getAUTOSARProperties(hModel); set(arProps,'XmlOptions','CompuMethodDirection','Bidirectional'); get(arProps,'XmlOptions','CompuMethodDirection')
Чтобы задать направление CompuMethod
в Словаре AUTOSAR, выберите XML Options. Выберите значение для параметра CompuMethod Direction. Нажмите Apply.
Когда вы генерируете код для своей модели, CompuMethods в экспортируемом коде arxml
содержат требуемые направленные разделы. Например, вот CompuMethod, сгенерированный с набором направления CompuMethod к Bidirectional
.
<COMPU-METHOD UUID="..."> <SHORT-NAME>COMPU_EngSpdValue</SHORT-NAME> <CATEGORY>LINEAR</CATEGORY> <COMPU-INTERNAL-TO-PHYS> <COMPU-SCALES> <COMPU-SCALE> <SHORT-LABEL>intToPhys</SHORT-LABEL> <LOWER-LIMIT INTERVAL-TYPE="CLOSED">0</LOWER-LIMIT> <UPPER-LIMIT INTERVAL-TYPE="CLOSED">24000</UPPER-LIMIT> <COMPU-RATIONAL-COEFFS> <COMPU-NUMERATOR> <V>0</V> <V>1</V> </COMPU-NUMERATOR> <COMPU-DENOMINATOR> <V>8</V> </COMPU-DENOMINATOR> </COMPU-RATIONAL-COEFFS> </COMPU-SCALE> </COMPU-SCALES> </COMPU-INTERNAL-TO-PHYS> <COMPU-PHYS-TO-INTERNAL> <COMPU-SCALES> <COMPU-SCALE> <SHORT-LABEL>physToInt</SHORT-LABEL> <LOWER-LIMIT INTERVAL-TYPE="CLOSED">0</LOWER-LIMIT> <UPPER-LIMIT INTERVAL-TYPE="CLOSED">3000</UPPER-LIMIT> <COMPU-RATIONAL-COEFFS> <COMPU-NUMERATOR> <V>0</V> <V>8</V> </COMPU-NUMERATOR> <COMPU-DENOMINATOR> <V>1</V> </COMPU-DENOMINATOR> </COMPU-RATIONAL-COEFFS> </COMPU-SCALE> </COMPU-SCALES> </COMPU-PHYS-TO-INTERNAL> </COMPU-METHOD>
CompuMethods категории TEXTTABLE, которые сгенерированы для булевской переменной или перечислимых типов данных, используют только InternalToPhys
, независимо от установки параметра направления.
Средство импорта arxml
сохраняет модуль и физическую информацию о размерности, найденную в импортированном CompuMethods. Программное обеспечение сохраняет модуль CompuMethod и физическую информацию о размерности через поездки туда и обратно между Инструментом разработки AUTOSAR (AAT) и Simulink.
Для проектов, порожденных в Simulink, средство экспорта генерирует модульную ссылку для каждого CompuMethod
. Условно, каждый CompuMethod
ссылается на модуль под названием NoUnit
. Например, вот является булев тип данных CompuMethod
и модулем, на который это ссылается.
<COMPU-METHOD UUID="..."> <SHORT-NAME>COMPU_Boolean</SHORT-NAME> <CATEGORY>TEXTTABLE</CATEGORY> <UNIT-REF DEST="UNIT">/mymodel_pkg/mymodel_dt/NoUnit</UNIT-REF> ... </COMPU-METHOD> <UNIT UUID="..."> <SHORT-NAME>NoUnit</SHORT-NAME> <FACTOR-SI-TO-UNIT>1</FACTOR-SI-TO-UNIT> <OFFSET-SI-TO-UNIT>0</OFFSET-SI-TO-UNIT> </UNIT>
Обеспечение модуля для каждого экспортировало CompuMethod
, помогает поддержать использование инструмента измерения и калибровки экспортированных данных AUTOSAR.
Можно импортировать и экспортировать AUTOSAR CompuMethod, который использует масштабирование TEXTTABLE и LINEAR. Импорт типов данных приложения, что ссылочный CompuMethods категории SCALE_LINEAR_AND_TEXTTABLE создает Simulink.NumericType
или объекты данных Simulink.AliasType
в рабочей области Simulink. В Simulink можно изменить LINEAR, масштабирующийся для CompuMethods. Масштабирование TEXTTABLE только для чтения.
Например, вот CompuMethod с одной Линейной шкалой и двумя шкалами TEXTTABLE.
Когда вы импортируете CompuMethod в модель, средство импорта создает Simulink.NumericType
с линейным масштабированием. Чтобы изменить линейное масштабирование, откройте объект данных Simulink.NumericType
и измените его поля.
Для доступа только для чтения к TEXTTABLE масштабирующаяся информация используйте свойство AUTOSAR вызовы функции get
, подобные следующему:
>> arProps=autosar.api.getAUTOSARProperties('mySWC'); >> % Get literals for COMPU_myType TEXTTABLE scales >> get(arProps,'/simple_ar_package/simple_ar_dt/COMPU_myType','CellOfEnums') ans = 'SensorError' 'SignalNotAvailable' >> % Get internal values for COMPU_myType TEXTTABLE scales >> get(arProps,'/simple_ar_package/simple_ar_dt/COMPU_myType','IntValues') ans = 350 351
Для AUTOSAR масштабируемый двойным образом параметр, который хранит два масштабированных значения того же физического значения, программное обеспечение, генерирует категорию CompuMethod
RAT_FUNC
. Метод вычисления может быть рациональной функцией первого порядка.
Сконфигурировать и сгенерировать масштабируемый двойным образом параметр:
Откройте модель AUTOSAR. В целях этого примера создайте блок Constant, от которого можно сослаться на AUTOSAR масштабируемый двойным образом параметр. В модели соедините блок Constant с выходным портом Simulink.
Откройте Model Data Editor (View> Model Data Editor) и выберите вкладку Parameters. Найдите запись параметра для блока Constant. Используйте столбец Value, чтобы сослаться на имя масштабируемого двойным образом параметра. Этот пример использует название параметра T1Rec
.
Создайте объект данных T1Rec
. В Model Data Editor, справа от значения T1Rec
, кликают по кнопке действий и выбирают Create.
В диалоговом окне Create New Data, набор Value к AUTOSAR.DualScaledParameter
и нажимают Create. Объект данных AUTOSAR.DualScaledParameter
появляется в базовом рабочем пространстве. Масштабируемое двойным образом диалоговое окно свойства параметра открывается.
Сконфигурируйте атрибуты масштабируемого двойным образом параметра T1Rec
. Выполните следующий код MATLAB. Кодовые наборы преобразование от внутренней калибровочной временной стоимости до физической частоты (обратная величина времени) значение.
% Conversion from Time to Frequency % F = 1/T % In Other Words F = (0*T + 1)/(1*T+0); T1Rec.CompuMethodName = 'CM3'; T1Rec.DataType ='fixdt(1,32,0.01,0)'; T1Rec.CalToMainCompuNumerator=1; T1Rec.CalToMainCompuDenominator=[1 0]; T1Rec.CalibrationMin = 0.001; T1Rec.CalibrationMax = 1.0; T1Rec.CalibrationValue = 0.1500; T1Rec.CoderInfo.StorageClass = 'Custom'; T1Rec.CoderInfo.Alias = ''; T1Rec.CoderInfo.CustomStorageClass = 'InternalCalPrm'; T1Rec.CoderInfo.CustomAttributes.PerInstanceBehavior =... 'Parameter shared by all instances of the Software Component'; T1Rec.Description = ''; % T1Rec.Min = []; % T1Rec.Max = []; T1Rec.Unit = ''; T1Rec.CalibrationDocUnits = 'm/s²';
Осмотрите диалоговое окно свойства для масштабируемого двойным образом параметра T1Rec
. Вот основные атрибуты, установленные кодом MATLAB.
Вот калибровочные атрибуты, установленные кодом MATLAB. Атрибуты включают CompuMethod name (T1Rec.CompuMethodName
), который позволяет вам задавать имя CompuMethod
AUTOSAR для этого типа данных.
Если направление CompuMethod
уже не установлено в двунаправленный в свойствах AUTOSAR, используйте Словарь AUTOSAR, представление XML Options, чтобы установить его.
Сгенерируйте код из модели.
Когда вы генерируете код из модели, средство экспорта arxml
генерирует CompuMethod
категории RAT_FUNC
.
<COMPU-METHOD UUID="..."> <SHORT-NAME>CM3</SHORT-NAME> <CATEGORY>RAT_FUNC</CATEGORY> <UNIT-REF DEST="UNIT">/mymodel_pkg/mymodel_dt/m_s_</UNIT-REF> <COMPU-INTERNAL-TO-PHYS> <COMPU-SCALES> <COMPU-SCALE> <COMPU-RATIONAL-COEFFS> <COMPU-NUMERATOR> <V>-100</V> </COMPU-NUMERATOR> <COMPU-DENOMINATOR> <V>0</V> <V>-1</V> </COMPU-DENOMINATOR> </COMPU-RATIONAL-COEFFS> </COMPU-SCALE> </COMPU-SCALES> </COMPU-INTERNAL-TO-PHYS> <COMPU-PHYS-TO-INTERNAL> <COMPU-SCALES> <COMPU-SCALE> <COMPU-RATIONAL-COEFFS> <COMPU-NUMERATOR> <V>100</V> </COMPU-NUMERATOR> <COMPU-DENOMINATOR> <V>0</V> <V>1</V> </COMPU-DENOMINATOR> </COMPU-RATIONAL-COEFFS> </COMPU-SCALE> </COMPU-SCALES> </COMPU-PHYS-TO-INTERNAL> </COMPU-METHOD>
На CompuMethod
ссылаются от типа данных приложения, сгенерированного для T1Rec
.
<APPLICATION-PRIMITIVE-DATA-TYPE UUID="..."> <SHORT-NAME>T1Rec_DualScaled</SHORT-NAME> <CATEGORY>VALUE</CATEGORY> <SW-DATA-DEF-PROPS> <SW-DATA-DEF-PROPS-VARIANTS> <SW-DATA-DEF-PROPS-CONDITIONAL> <SW-CALIBRATION-ACCESS>READ-WRITE</SW-CALIBRATION-ACCESS> <COMPU-METHOD-REF DEST="COMPU-METHOD">/mymodel_pkg/mymodel_dt/CM3</COMPU-METHOD-REF> <DATA-CONSTR-REF DEST="DATA-CONSTR">/mymodel_pkg/mymodel_dt/ApplDataTypes/ DataConstrs/DC_T1Rec_DualScaled</DATA-CONSTR-REF> </SW-DATA-DEF-PROPS-CONDITIONAL> </SW-DATA-DEF-PROPS-VARIANTS> </SW-DATA-DEF-PROPS> </APPLICATION-PRIMITIVE-DATA-TYPE>
На тип данных приложения T1Rec_DualScaled
ссылаются от прототипа данных о параметре, сгенерированного для T1Rec
.
<PARAMETER-DATA-PROTOTYPE UUID="..."> <SHORT-NAME>T1Rec</SHORT-NAME> <SW-DATA-DEF-PROPS> <SW-DATA-DEF-PROPS-VARIANTS> <SW-DATA-DEF-PROPS-CONDITIONAL> <SW-CALIBRATION-ACCESS>READ-WRITE</SW-CALIBRATION-ACCESS> <SW-IMPL-POLICY>STANDARD</SW-IMPL-POLICY> </SW-DATA-DEF-PROPS-CONDITIONAL> </SW-DATA-DEF-PROPS-VARIANTS> </SW-DATA-DEF-PROPS> <TYPE-TREF DEST="APPLICATION-PRIMITIVE-DATA-TYPE">/mymodel_pkg/mymodel_dt/ApplDataTypes/ T1Rec_DualScaled</TYPE-TREF> ... </PARAMETER-DATA-PROTOTYPE>