Компоненты программного обеспечения 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'; addpath(fullfile(matlabroot,'/examples/autosarblockset/main')); 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 (на вкладке Modeling, нажмите 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'; %Specify AUTOSAR CompuMethod name 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.Identifier = ''; 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
направление уже не установлено в двунаправленный в свойствах 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>