exponenta event banner

Настройка методов CompuMethods AUTOSAR

Программные компоненты AUTOSAR используют методы вычислений (CompuMethods) для преобразования между внутренними значениями и физическим представлением данных AUTOSAR. Обычно для CompuMethods используются линейное масштабирование данных, измерение и калибровка.

Embedded Coder ® импортирует методы AUTOSAR CompuMethods, описанные в коде ARXML, и сохраняет их во время сквозных переходов между средством разработки AUTOSAR (AAT) и Simulink ®. В Simulink можно изменить импортированные методы CompuMethods или создать и настроить новые методы CompuMethods.

В этом разделе приведены примеры настройки AUTOSAR CompuMethods в Simulink.

Настройка свойств CompuMethod AUTOSAR

Свойства 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

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

При создании кода экспортированный код ARXML содержит определение CompuMethod и ссылки на него.

Настройка направления 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независимо от установки параметра направления.

Экспорт ссылок единиц измерения CompuMethod

Импортер 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.

Измените линейное вычисление для SCALE_LINEAR_AND_TEXTTABLE CompuMethod

Можно импортировать и экспортировать метод 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. Метод вычисления может быть рациональной функцией первого порядка.

Чтобы настроить и создать параметр с двойным масштабированием, выполните следующие действия.

  1. Откройте модель AUTOSAR. Для целей данного примера создайте блок константы, из которого можно ссылаться на параметр с двойным масштабированием AUTOSAR. В модели подключите блок константы к выходному порту Simulink.

  2. Откройте Редактор данных модели (Model Data Editor) (на вкладке Моделирование (Modeling) щелкните Редактор данных модели (Model Data Editor)) и выберите вкладку Параметры (Parameters). Найдите запись параметра для блока константы. Столбец Значение (Value) используется для ссылки на имя параметра с двойным масштабированием. В этом примере используется имя параметра T1Rec.

  3. Создать T1Rec объект данных. В редакторе данных модели справа от значения T1Recнажмите кнопку действия и выберите Создать.

    В диалоговом окне «Создание новых данных» задайте для параметра «Значение» значение AUTOSAR.DualScaledParameter и нажмите кнопку «Создать». Один AUTOSAR.DualScaledParameter объект данных появляется в базовой рабочей области. Откроется диалоговое окно свойства параметра с двойным масштабированием.

  4. Конфигурирование атрибутов параметра с двойным масштабированием 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²';
  5. Проверка диалогового окна свойств для параметра с двойным масштабированием T1Rec. Ниже приведены основные атрибуты, заданные кодом MATLAB.

  6. Вот атрибуты калибровки, заданные кодом MATLAB.

  7. Если CompuMethod направление еще не задано как двунаправленное в свойствах AUTOSAR, для его установки используйте представление AUTOSAR Dictionary, XML Options.

  8. Создайте код из модели.

При создании кода из модели экспортер 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>

Связанные примеры

Подробнее