Компоненты программного обеспечения 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 (на вкладке AUTOSAR, выберите Settings> 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>