Программные компоненты AUTOSAR используют методы расчета (CompuMethods) для преобразования внутренних значений и физического представления данных AUTOSAR. Общим применением для CompuMethods является линейное масштабирование данных, измерение и калибровка.
Embedded Coder® импортирует AUTOSAR CompuMethods, описанный в коде ARXML, и сохраняет их во время обходов между инструментом разработки AUTOSAR (AAT) и Simulink®. В Simulink можно изменить импортированные методы CompuMethods или создать и сконфигурировать новые методы CompuMethods.
В этом разделе приведены примеры настройки AUTOSAR CompuMethods в Simulink.
Сконфигурируйте направление CompuMethod для линейных функций
Измените линейное масштабирование для SCALE_LINEAR_AND_TEXTTABLE CompuMethod
Сконфигурируйте Rational Function CompuMethod для двухмасштабного параметра
Можно настроить свойства AUTOSAR CompuMethod в модели как графически, так и программно. Свойства CompuMethod, которые можно изменить, включают имя, категорию, модуль, формат отображения, пакет AUTOSAR и типы данных Simulink.
Чтобы сконфигурировать CompuMethod с помощью графического интерфейса, откройте словарь AUTOSAR и выберите CompuMethods представление. В этом представлении отображаются изменяемые методы CompuMethods в модели, импортированные ли из кода ARXML или созданные в Simulink.
Выберите CompuMethod и отредактируйте доступные поля.
Name - Задайте текст имени
Category - Выбор Identical
, Linear
, RatFunc
, TextTable
, или LinearAndTextTable
(см. «Категории CompuMethod для типов данных»)
Unit - Выберите из модулей, доступных в модели
DisplayFormat - опционально задайте формат, который будет использоваться инструментами измерения и калибровки для отображения данных. Использование 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 категории TEXTABLE, которые генерируются для логических или перечисленных типов данных, используют только 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, который использует масштабирование LINEAR и TEXTABLE. Импорт типов данных приложения, которые ссылаются на CompuMethods SCALE_LINEAR_AND_TEXTTABLE категории, создает Simulink.NumericType
или Simulink.AliasType
объекты данных в рабочей области Simulink. В Simulink можно изменить масштабирование LINEAR для CompuMethods. Масштабирование TEXTABLE доступно только для чтения.
Для примера вот CompuMethod с одной шкалой LINEAR и двумя шкалами TEXTABLE.
Когда вы импортируете CompuMethod в модель, импортер создает Simulink.NumericType
с линейным масштабированием. Чтобы изменить линейное масштабирование, откройте Simulink.NumericType
объект данных и изменение его полей.
Для доступа только для чтения к информации о масштабировании TEXTABLE используйте свойство 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.
В диалоговом окне «Создание новых данных» установите 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 направление еще не задано как двунаправленное, для его установки используйте XML Options вид словаря AUTOSAR.
Сгенерируйте код из модели.
Когда вы генерируете код из модели, экспортер 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>
The 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>