Сконфигурируйте AUTOSAR CompuMethods

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

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

Эта тема обеспечивает примеры конфигурирования AUTOSAR CompuMethods в Simulink.

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

Когда вы генерируете код, экспортируемый код ARXML содержит определение CompuMethod и ссылки на него.

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

Экспортируйте модульные ссылки 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, который использует масштабирование 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

Сконфигурируйте рациональную функцию CompuMethod для масштабируемого двойным образом параметра

Для AUTOSAR масштабируемый двойным образом параметр, который хранит два масштабированных значения того же физического значения, программное обеспечение, генерирует CompuMethod категория RAT_FUNC. Метод расчета может быть рациональной функцией первого порядка.

Сконфигурировать и сгенерировать масштабируемый двойным образом параметр:

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

  2. Откройте Model Data Editor (на вкладке Modeling, нажмите Model Data Editor), и выберите вкладку Parameters. Найдите запись параметра для блока Constant. Используйте столбец Value, чтобы сослаться на имя масштабируемого двойным образом параметра. Этот пример использует название параметра T1Rec.

  3. Создайте T1Rec объект данных. В Model Data Editor, справа от значения T1Rec, кликните по кнопке действий и выберите Create.

    В диалоговом окне Create New Data, набор Value к AUTOSAR.DualScaledParameter и нажмите Create. 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, представление 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>

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

Больше о