Программные компоненты AUTOSAR используют методы вычислений (CompuMethods) для преобразования между внутренними значениями и физическим представлением данных AUTOSAR. Обычно для CompuMethods используются линейное масштабирование данных, измерение и калибровка.
Embedded Coder ® импортирует методы AUTOSAR CompuMethods, описанные в коде ARXML, и сохраняет их во время сквозных переходов между средством разработки AUTOSAR (AAT) и Simulink ®. В Simulink можно изменить импортированные методы CompuMethods или создать и настроить новые методы CompuMethods.
В этом разделе приведены примеры настройки AUTOSAR CompuMethods в Simulink.
Измените линейное вычисление для SCALE_LINEAR_AND_TEXTTABLE CompuMethod
Настройка вычислительного метода рациональной функции для параметра с двойным масштабированием
Свойства AUTOSAR CompuMethod можно настроить в модели графически или программно. Свойства CompuMethod, которые можно изменить, включают имя, категорию, единицу измерения, формат отображения, пакет AUTOSAR и типы данных Simulink.
Чтобы настроить CompuMethod с помощью графического интерфейса, откройте словарь AUTOSAR и выберите представление CompuMethods. В этом представлении отображаются изменяемые методы CompuMethods в модели, импортированные из кода ARXML или созданные в Simulink.

Выберите CompuMethod и измените доступные поля.
Имя - укажите текст имени
Категория - Выбрать Identical, Linear, RatFunc, TextTable, или LinearAndTextTable (см. Категории CompuMethod для типов данных)
Единица измерения (Unit) - выбор из единиц измерения, доступных в модели
DisplayFormat - дополнительно укажите формат, который будет использоваться инструментами измерения и калибровки для отображения данных. Использование платы ANSI ®
Cprintf строка спецификатора формата. Например, %2.1d задает десятичное число со знаком с минимальной шириной в два символа и максимальной точностью в одну цифру. Строка выдает отображаемое значение, например 12.2. Дополнительные сведения о построении строки спецификатора формата см. в разделе Настройка DisplayFormat.
Пакет - укажите путь к пакету AUTOSAR, создаваемому для CompuMethods
Simulink DataTypes - список типов данных Simulink, ссылающихся на CompuMethod
Для изменения пакета AUTOSAR для CompuMethod можно выполнить одно из следующих действий:
Введите путь к пакету в поле Параметр пакета.
Чтобы открыть обозреватель пакетов AUTOSAR, нажмите кнопку справа от поля Пакет. Используйте браузер для перехода к существующему пакету или создайте и выберите пакет. При выборе пакета в браузере и нажатии кнопки «Применить» значение параметра «CompuMethod Package» обновляется. Дополнительные сведения о обозревателе пакетов AUTOSAR см. в разделе Настройка пакета AUTOSAR для компонента, интерфейса, CompuMethod или SwAddrMethod.
Чтобы связать CompuMethod с типом данных Simulink, используемым в модели, выберите CompuMethod и нажмите кнопку Добавить справа от Simulink DataTypes. Это действие открывает диалоговое окно со списком доступных типов данных. В списке значений выберите Simulink.NumericType или Simulink.AliasTypeили введите имя перечисляемого типа Simulink. Чтобы добавить тип в список Simulink DataTypes, нажмите кнопку ОК.

Чтобы задать свойство 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. Чтобы открыть диалоговое окно «Добавить CompuMethod», нажмите кнопку «Добавить».
Настройте начальные свойства CompuMethod, такие как имя, категория, единица измерения, формат отображения для калибровки, генерируемый пакет AUTOSAR и связанный тип данных Simulink. При нажатии кнопки ОК вид CompuMethods в словаре AUTOSAR обновляется с помощью нового CompuMethod.

При создании кода экспортированный код ARXML содержит определение CompuMethod и ссылки на него.
Для проектов, созданных в Simulink, можно управлять свойствами экспортируемого CompuMethod, включая направление CompuMethod преобразование между внутренним и физическим представлением значения. Использование словаря AUTOSAR или свойства AUTOSAR set можно указать одну из следующих функций: CompuMethod значения направления:
InternalToPhys (по умолчанию) - Создать CompuMethod разделы для преобразования внутренних значений в их физические представления.
PhysToInternal - Генерировать CompuMethod разделы для преобразования физических значений в их внутренние представления.
Bidirectional - Генерировать CompuMethod разделы как для внутреннего, так и для физического и для внутреннего направлений преобразования.
Определить CompuMethod направление в окне команд MATLAB ®, используйте свойство AUTOSARset вызов функции аналогично следующему:
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». Выберите значение параметра CompuMethod Direction. Нажмите кнопку «Применить».

При создании кода для модели 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, использующий масштабирование LINEAR и TEXTTABLE. Импорт типов данных приложения, которые ссылаются на CompuMethods категории SCALE_LINEAR_AND_TEXTTABLE создает Simulink.NumericType или Simulink.AliasType объектов данных в рабочей области Simulink. В Simulink можно изменить масштаб LINEAR для CompuMethods. Масштабирование TEXTTABLE доступно только для чтения.
Например, вот CompuMethod с одной шкалой LINEAR и двумя шкалами TEXTABLE.

При импорте 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. Для целей данного примера создайте блок константы, из которого можно ссылаться на параметр с двойным масштабированием AUTOSAR. В модели подключите блок константы к выходному порту Simulink.
Откройте Редактор данных модели (Model Data Editor) (на вкладке Моделирование (Modeling) щелкните Редактор данных модели (Model Data Editor)) и выберите вкладку Параметры (Parameters). Найдите запись параметра для блока константы. Столбец Значение (Value) используется для ссылки на имя параметра с двойным масштабированием. В этом примере используется имя параметра T1Rec.

Создать T1Rec объект данных. В редакторе данных модели справа от значения T1Recнажмите кнопку действия
и выберите Создать.
В диалоговом окне «Создание новых данных» задайте для параметра «Значение» значение AUTOSAR.DualScaledParameter и нажмите кнопку «Создать». Один 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 Dictionary, 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>