SOMEIP通信矩阵解读

目录

  • [1 摘要](#1 摘要)
  • [2 SOME/IP通信矩阵详细属性定义与示例](#2 SOME/IP通信矩阵详细属性定义与示例)
    • [2.1 服务基础属性](#2.1 服务基础属性)
    • [2.2 数据类型定义](#2.2 数据类型定义)
    • [2.3 服务实例与网络配置参数](#2.3 服务实例与网络配置参数)
    • [2.4 SOME/IP-SD Multicast 配置(SOME/IP服务发现组播配置)](#2.4 SOME/IP-SD Multicast 配置(SOME/IP服务发现组播配置))
    • [2.5 SOME/IP-SD Unicast 配置](#2.5 SOME/IP-SD Unicast 配置)
    • [2.6 SOME/IP-SD ECU 配置参数详解](#2.6 SOME/IP-SD ECU 配置参数详解)
  • [3 总结](#3 总结)

1 摘要

本专题主要对SOME/IP通信矩阵定义的服务基础属性、数据类型属性、服务实例与网络配置参数等进行了介绍,有利于充分理解SOME/IP通信矩阵的参数定义。

2 SOME/IP通信矩阵详细属性定义与示例

2.1 服务基础属性

  1. Service Name
  • 定义:服务的可读名称,用于标识SOME/IP服务功能。

  • 示例

    Service Name: "WindowControlService"

  • ARXML表示SOMEIP-SERVICE-INTERFACE/SHORT-NAME

  • 示例

xml 复制代码
<SOMEIP-SERVICE-INTERFACE>
  <SHORT-NAME>/Company/Chassis/VehicleSpeed</SHORT-NAME>
</SOMEIP-SERVICE-INTERFACE>
  1. Service ID
  • 定义:16位无符号整数,唯一标识服务
  • ARXML表示SOMEIP-SERVICE-INTERFACE/SERVICE-ID
  • 范围:0x0001-0x7FFF(0x8000-0xFFFF保留)
  • 示例
xml 复制代码
<SERVICE-ID>0x1234</SERVICE-ID>
  1. Service Description
  • 定义:对服务功能的详细描述。

  • 示例

    Service Description: "This service provides control and status monitoring for vehicle windows, including position control and anti-pinch functionality."

  • ARXML表示DESC元素

  • 示例

xml 复制代码
<DESC>
  <L-2 L="EN">Provides vehicle speed information with 0.1km/h resolution</L-2>
</DESC>
  1. RPC Type
  • 定义:标识远程过程调用的类型。

  • 常见值

    • Method - 请求/响应方法
    • Fire&Forget - 单向方法
    • Event - 事件通知
    • Field - 字段通知
  • 示例

    RPC Type: Method

  • ARXML表示SOMEIP-METHOD/TYPE

  • 示例

xml 复制代码
<SOMEIP-METHOD>
  <SHORT-NAME>GetCurrentSpeed</SHORT-NAME>
  <METHOD-ID>0x0001</METHOD-ID>
  <TYPE>REQUEST_RESPONSE</TYPE>
</SOMEIP-METHOD>
  1. Field Property Name
  • 定义:当RPC类型为Field时,表示字段的名称。

  • 示例

    Field Property Name: "WindowPosition"

  • ARXML表示SOMEIP-FIELD/SHORT-NAME

  • 示例

xml 复制代码
<SOMEIP-FIELD>
  <SHORT-NAME>VehicleSpeedValue</SHORT-NAME>
  <GETTER-REF>/Methods/GetSpeedValue</GETTER-REF>
</SOMEIP-FIELD>
  1. Field Property Data Type
  • 定义:字段的数据类型。

  • 示例

    Field Property Data Type: uint8 (0-100 representing percentage of window openness)

  • ARXML表示APPLICATION-PRIMITIVE-DATA-TYPE

  • 常见类型

xml 复制代码
<APPLICATION-PRIMITIVE-DATA-TYPE>
  <SHORT-NAME>tSpeed</SHORT-NAME>
  <SW-DATA-DEF-PROPS>
    <SW-DATA-DEF-PROPS-VARIANT>
      <BASE-TYPE-REF>/DataTypes/uint16</BASE-TYPE-REF>
    </SW-DATA-DEF-PROPS-VARIANT>
  </SW-DATA-DEF-PROPS>
</APPLICATION-PRIMITIVE-DATA-TYPE>
  1. RPC Specific Type
  • 定义:更详细的RPC分类。

  • 常见值

    • Getter - 获取字段值
    • Setter - 设置字段值
    • Notifier - 字段变更通知
  • 示例

    RPC Specific Type: Setter

  • ARXML表示SOMEIP-METHOD/SPECIFIC-TYPE

  • 示例

xml 复制代码
<SOMEIP-METHOD>
  <SPECIFIC-TYPE>DIAGNOSTIC</SPECIFIC-TYPE> <!-- 诊断专用方法 -->
</SOMEIP-METHOD>
  1. Method/Event Description
  • 定义:对方法或事件的详细功能描述。

  • 示例

    Method/Event Description: "Sets the target position for the driver side window. Position is a percentage value from 0 (fully closed) to 100 (fully open)."

  • ARXML表示DESC元素

  • 完整示例

xml 复制代码
<SOMEIP-METHOD>
  <SHORT-NAME>SetHeadlightLevel</SHORT-NAME>
  <DESC>
    <L-2 L="EN">Adjusts headlight beam level (0-100%)</L-2>
    <L-2 L="ZH">调节大灯水平高度(0-100%)</L-2>
  </DESC>
  <INPUT-ARGS>
    <ARGUMENT-DATA-PROTOTYPE>
      <SHORT-NAME>level</SHORT-NAME>
      <TYPE-TREF>/DataTypes/uint8</TYPE-TREF>
    </ARGUMENT-DATA-PROTOTYPE>
  </INPUT-ARGS>
</SOMEIP-METHOD>
  1. Eventgroup Name & Eventgroup ID
  • 定义:事件组名称及其ID,用于组织相关事件。

  • 示例

    Eventgroup Name@EventgroupID: "WindowStatusEvents@0x01"

  • ARXML表示

xml 复制代码
<SOMEIP-EVENTGROUP>
  <SHORT-NAME>SpeedEvents</SHORT-NAME>
  <EVENTGROUP-ID>0x1001</EVENTGROUP-ID>
  <EVENTS>
    <SOMEIP-EVENT-REF>/Events/SpeedChanged</SOMEIP-EVENT-REF>
  </EVENTS>
</SOMEIP-EVENTGROUP>
  1. 传输协议 UDP/TCP
  • 定义:指定使用UDP还是TCP传输。

  • 示例

    UDP/TCP: TCP

  • ARXML表示SOMEIP-SERVICE-DEPLOYMENT/PROTOCOL

  • 示例

xml 复制代码
<SOMEIP-SERVICE-DEPLOYMENT>
  <PROTOCOL>UDP</PROTOCOL>
  <PORT-NUMBER>30490</PORT-NUMBER>
</SOMEIP-SERVICE-DEPLOYMENT>
  1. Input Parameter (RR/F&F)
  • 定义:对于Method类型的RPC,定义输入参数;R/R表示Request/Response,F&F表示Fire&Forget。

  • 示例

    Input Parameter (R/R):

    • windowID: uint8 (0=Driver, 1=Passenger, 2=RearLeft, 3=RearRight)
    • targetPosition: uint8 (0-100)
  • RR示例

xml 复制代码
<INPUT-ARGS>
  <ARGUMENT-DATA-PROTOTYPE>
    <SHORT-NAME>requestData</SHORT-NAME>
    <TYPE-TREF>/DataTypes/tRequestStruct</TYPE-TREF>
    <DIRECTION>IN</DIRECTION>
  </ARGUMENT-DATA-PROTOTYPE>
</INPUT-ARGS>
  1. Output Parameter (RR)
  • 定义:对于Method类型的RPC,定义输出参数。

  • 示例

    Output Parameter (R/R):

    • result: uint8 (0=Success, 1=InvalidPosition, 2=WindowBlocked, 3=SystemError)
    • currentPosition: uint8 (0-100)
xml 复制代码
<OUTPUT-ARGS>
  <ARGUMENT-DATA-PROTOTYPE>
    <SHORT-NAME>responseData</SHORT-NAME>
    <TYPE-TREF>/DataTypes/tResponseStruct</TYPE-TREF>
    <DIRECTION>OUT</DIRECTION>
  </ARGUMENT-DATA-PROTOTYPE>
</OUTPUT-ARGS>
  1. Event/Notification Event Parameter
  • 定义:事件通知中包含的参数。

  • 示例

    Event Parameter:

    • windowID: uint8
    • currentPosition: uint8
    • statusFlags: uint8 (bit0=AntiPinchActive, bit1=ManualOverride)
xml 复制代码
<SOMEIP-EVENT>
  <SHORT-NAME>DoorStatusChanged</SHORT-NAME>
  <EVENT-DATA>
    <APPLICATION-DATA-TYPE-REF>/DataTypes/tDoorStatus</APPLICATION-DATA-TYPE-REF>
  </EVENT-DATA>
</SOMEIP-EVENT>
  1. Send Strategy
  • 定义:事件或字段通知的发送策略。

  • 常见值

  • OnChange - 值变化时发送

  • Cyclic - 周期性发送

  • CyclicOnChange - 周期性发送但值变化时立即发送

  • 示例

    Send Strategy: OnChange

  • ARXML表示SOMEIP-EVENT/SEND-STRATEGY

xml 复制代码
<SEND-STRATEGY>ON_CHANGE</SEND-STRATEGY> <!-- 或 ON_TIME -->
  1. Cyclic Time
  • 定义:周期性发送的时间间隔(毫秒)。

  • 示例

    Cyclic Time: 1000 (1 second)

  • 示例

xml 复制代码
<CYCLIC-TIME>100</CYCLIC-TIME> <!-- 100ms周期 -->
  1. Epsilon Value
  • 定义:值变化的最小阈值,超过此阈值才触发OnChange发送。

  • 示例

    Epsilon Value: 5 (for position percentage)

  • 示例

xml 复制代码
<EPSILON-TIME>10</EPSILON-TIME> <!-- ±10ms -->
  1. Remark(备注)
  • 定义:任何额外的说明信息。

  • 示例

    Remark: "This event is only sent when the ignition is on or when window position is changing."

  • ARXML表示ANNOTATION

  • 示例

xml 复制代码
<ANNOTATION>
  <ANNOTATION-ORIGIN>Designer</ANNOTATION-ORIGIN>
  <ANNOTATION-TEXT>This event shall be disabled in diagnostic mode</ANNOTATION-TEXT>
</ANNOTATION>
  • 部分通信矩阵如下表:
Service Name Service ID RPC Type Field Property Name Field Property Data Type RPC Specific Type Method/Event Description Eventgroup Name@EventgroupID UDP/TCP Input Parameter Output Parameter Event Parameter Send Strategy Cyclic Time Epsilon Value Remark
WindowControlService 0x1234 Method - - - Set window target position - TCP windowID: uint8 targetPosition: uint8 result: uint8 currentPosition: uint8 - - - - -
WindowControlService 0x1234 Event - - - Window position update WindowStatusEvents@0x01 UDP - - windowID: uint8 currentPosition: uint8 statusFlags: uint8 OnChange - 5 Only sent when ignition on
WindowControlService 0x1234 Field WindowPosition uint8 Notifier Window position field WindowStatusEvents@0x01 UDP - - windowID: uint8 currentPosition: uint8 OnChange - 5 -
  • 完整服务示例如下:
xml 复制代码
<SOMEIP-SERVICE-INTERFACE>
  <SHORT-NAME>/Company/Body/Doors</SHORT-NAME>
  <SERVICE-ID>0x2010</SERVICE-ID>
  <VERSION-MAJOR>1</VERSION-MAJOR>
  <VERSION-MINOR>0</VERSION-MINOR>
  
  <METHODS>
    <SOMEIP-METHOD>
      <SHORT-NAME>LockDoors</SHORT-NAME>
      <METHOD-ID>0x0001</METHOD-ID>
      <TYPE>FIRE_AND_FORGET</TYPE>
      <INPUT-ARGS>
        <ARGUMENT-DATA-PROTOTYPE>
          <SHORT-NAME>forceLock</SHORT-NAME>
          <TYPE-TREF>/DataTypes/boolean</TYPE-TREF>
        </ARGUMENT-DATA-PROTOTYPE>
      </INPUT-ARGS>
    </SOMEIP-METHOD>
  </METHODS>

  <EVENTS>
    <SOMEIP-EVENT>
      <SHORT-NAME>DoorStatusUpdate</SHORT-NAME>
      <EVENT-ID>0x8001</EVENT-ID>
      <EVENT-DATA>
        <APPLICATION-DATA-TYPE-REF>/DataTypes/tDoorStatus</APPLICATION-DATA-TYPE-REF>
      </EVENT-DATA>
      <SEND-STRATEGY>ON_CHANGE</SEND-STRATEGY>
      <CYCLIC-TIME>500</CYCLIC-TIME>
    </SOMEIP-EVENT>
  </EVENTS>

  <EVENTGROUPS>
    <SOMEIP-EVENTGROUP>
      <SHORT-NAME>DoorEventGroup</SHORT-NAME>
      <EVENTGROUP-ID>0x3001</EVENTGROUP-ID>
      <EVENTS>
        <SOMEIP-EVENT-REF>/Events/DoorStatusUpdate</SOMEIP-EVENT-REF>
      </EVENTS>
    </SOMEIP-EVENTGROUP>
  </EVENTGROUPS>
</SOMEIP-SERVICE-INTERFACE>

2.2 数据类型定义

  1. DataType Name
  • 定义:数据类型的唯一标识符

  • 说明

    • 遵循驼峰命名法或下划线命名法
    • 应具有语义化特征
    • 在系统中全局唯一
  • 示例

    DataType Name: WindowPositionType

  • ARXML示例

xml 复制代码
<SHORT-NAME>WindowPositionType</SHORT-NAME>
  1. DataType Description
  • 定义:对数据类型的详细功能描述。

  • 示例

    DataType Description: "表示车窗位置的百分比值,0表示完全关闭,100表示完全打开,中间值表示部分开启程度"

  • ARXML示例

xml 复制代码
<DESC>Represents window position in percentage (0-100%)</DESC>
  1. DataType Category
  • 定义:数据类型的分类。

  • 常见类别

    • Primitive - 基本类型(uint8, float等)
    • Struct - 结构体
    • Array - 数组
    • String - 字符串
    • Enumeration - 枚举
    • Union - 联合体
  • 示例

    DataType Category: Primitive

  • ARXML示例

xml 复制代码
<TYPE-CATEGORY>VALUE</TYPE-CATEGORY> 
<!-- 可选值:VALUE|ARRAY|STRUCTURE|ENUM|UNION -->
  1. String/Array Length Type
  • 定义:指定字符串或数组长度的表示方式。

  • 选项

    • Fixed - 固定长度
    • Dynamic - 动态长度
    • LengthField - 有单独长度字段
  • 示例

    String/Array Length Type: Fixed

  • ARXML示例

xml 复制代码
<ARRAY-TYPE>
  <LENGTH-FIELD-TYPE>FIXED-LENGTH</LENGTH-FIELD-TYPE>
  <!-- 可选:FIXED-LENGTH|DYNAMIC-LENGTH -->
</ARRAY-TYPE>
  1. String/Array Length Min/Max
  • 定义:长度范围限制
  • ARXML示例
xml 复制代码
<STRING-TYPE>
  <MAX-NR-OF-CHARS>32</MAX-NR-OF-CHARS>
</STRING-TYPE>
  1. Member Name
  • 定义:结构体或联合体中成员变量的名称。

  • 示例

    Member Name: "positionValue"

  • ARXML示例

xml 复制代码
<STRUCTURE-ELEMENT>
  <SHORT-NAME>currentPosition</SHORT-NAME>
</STRUCTURE-ELEMENT>
  1. Member Description
  • 定义:对结构体成员的详细描述。

  • 示例

    Member Description: "车窗当前位置的实际百分比值"

  • ARXML示例

xml 复制代码
<DESC>Current window position percentage</DESC>
  1. Member Datatype Reference
  • 定义:成员引用的数据类型名称。

  • 示例

    Member Datatype Reference: "uint8"

  • ARXML示例

xml 复制代码
<TYPE-TREF DEST="INTEGER-TYPE">/DataTypes/uint8</TYPE-TREF>
  1. Base Datatype
  • 定义:派生类型的底层基本类型。

  • 示例

    Base Datatype: uint8 (对于枚举类型WindowStateEnum)

  • ARXML示例

xml 复制代码
<BASE-TYPE-REF DEST="INTEGER-TYPE">/DataTypes/uint8</BASE-TYPE-REF>
  1. Resolution(分辨率)
  • 定义:原始值到物理值的转换系数。

  • 公式:物理值 = (原始值 × Resolution) + Offset

  • 示例

    Resolution: 0.5 (每个数字单位代表0.5%的开度)

  1. Offset(偏移量)
  • 定义:原始值到物理值的转换偏移量。

  • 示例

    Offset: 0

xml 复制代码
<COMPU-NUMERATOR>
  <V>0.5</V> <!-- Resolution -->
  <V>0</V>   <!-- Offset -->
</COMPU-NUMERATOR>
  1. Physical Min(物理最小值)
  • 定义:该物理量允许的最小值。

  • 示例

    Physical Min: 0 (完全关闭)

  1. Physical Max(物理最大值)
  • 定义:该物理量允许的最大值。

  • 示例

    Physical Max: 100 (完全打开)

  • ARXML示例

xml 复制代码
<PHYS-CONSTRS>
  <MIN>0</MIN>
  <MAX>100</MAX>
</PHYS-CONSTRS>
  1. Initial Value
  • 定义:变量初始化时的默认值。

  • 示例

    Initial Value: 0 (车窗默认完全关闭)

  • ARXML示例

xml 复制代码
<INIT-VALUE>
  <NUMERICAL-VALUE-SPECIFICATION>
    <VALUE>0</VALUE>
  </NUMERICAL-VALUE-SPECIFICATION>
</INIT-VALUE>
  1. Invalid Value
  • 定义:表示数据无效的特殊值。

  • 示例

    Invalid Value: 0xFF (对于uint8类型的位置值)

  • ARXML示例

xml 复制代码
<INVALID-VALUE>255</INVALID-VALUE>
  1. Unit
  • 定义:物理量的计量单位。

  • 示例

    Unit: "%" (百分比)

  • ARXML示例

xml 复制代码
<UNIT>%</UNIT>
  1. Discrete Value Definition
  • 定义:枚举或标志位的取值定义。

  • 格式

    <数值> : <名称> : <描述>

  • 示例

    Discrete Value Definition:
    0 : WINDOW_CLOSED : "车窗完全关闭"
    100 : WINDOW_OPEN : "车窗完全打开"

  • ARXML示例

xml 复制代码
<SW-ENUMERATION>
  <SHORT-NAME>WindowState</SHORT-NAME>
  <ITEMS>
    <ENUMERATION-LITERAL>
      <SHORT-NAME>CLOSED</SHORT-NAME>
      <VALUE>0</VALUE>
    </ENUMERATION-LITERAL>
  </ITEMS>
</SW-ENUMERATION>
  1. Discrete Value Translation
  • 定义:离散值在不同语言/环境下的表示。

  • 示例

    Discrete_Value_Definition_Translation:
    de_DE:
    WINDOW_CLOSED : "Fenster geschlossen"
    WINDOW_OPEN : "Fenster geöffnet"

  • ARXML示例

xml 复制代码
<ANNOTATION>
  <LANGUAGE>de-DE</LANGUAGE>
  <DESC>GESCHLOSSEN</DESC>
</ANNOTATION>
  1. 备注
  • 定义:任何额外的说明信息。

  • 示例

    备注: "超过90%的位置值将触发车窗自动通风模式"

  • ARXML示例

xml 复制代码
<ANNOTATION>
  <DESC>Value 127 represents maintenance mode</DESC>
</ANNOTATION>
  • 部分通信矩阵如下表
参数名称 定义 示例值 备注
DataType Name 数据类型唯一标识 WindowPosType 采用Pascal命名法
Description 类型功能描述 "车窗位置百分比(0-100%)"
Category 数据类型分类 VALUE 可选:VALUE/ARRAY/STRUCTURE/ENUM
String/Array Length Type 长度类型 FIXED-LENGTH 动态数组需指定最大长度
Length Min/Max 长度范围 1/32 字符串/数组元素数量限制
Member Name 结构体成员名 currentPos
Member Description 成员描述 "当前车窗位置"
Member Datatype Ref 成员类型引用 /DataTypes/uint8
Base Datatype 基础类型 uint8
Resolution 分辨率 0.5 物理值=原始值×分辨率+偏移量
Offset 偏移量 0
Physical Min/Max 物理值范围 0/100 带单位的实际值范围
Initial Value 初始值 0
Invalid Value 无效值 255
Unit 物理单位 %
Discrete Values 枚举值定义 0=CLOSED, 100=OPEN
Value Translation 多语言翻译 de-DE: "GESCHLOSSEN"
Remark 附加说明 "值127表示维护模式"
  • 完整ARXML数据类型定义示例:
xml 复制代码
<AR-PACKAGE>
  <SHORT-NAME>DataTypes</SHORT-NAME>
  <ELEMENTS>
    <INTEGER-TYPE>
      <SHORT-NAME>WindowPosType</SHORT-NAME>
      <DESC>Window position percentage</DESC>
      <BASE-TYPE-SIZE>8</BASE-TYPE-SIZE>
      <PHYS-CONSTRS>
        <MIN>0</MIN>
        <MAX>100</MAX>
        <UNIT>%</UNIT>
      </PHYS-CONSTRS>
      <COMPU-METHOD>
        <COMPU-NUMERATOR>
          <V>0.5</V> <!-- 0.5% per LSB -->
          <V>0</V>
        </COMPU-NUMERATOR>
      </COMPU-METHOD>
      <INVALID-VALUE>255</INVALID-VALUE>
    </INTEGER-TYPE>

    <STRUCTURE-TYPE>
      <SHORT-NAME>WindowStatusType</SHORT-NAME>
      <ELEMENTS>
        <STRUCTURE-ELEMENT>
          <SHORT-NAME>position</SHORT-NAME>
          <TYPE-TREF DEST="INTEGER-TYPE">/DataTypes/WindowPosType</TYPE-TREF>
        </STRUCTURE-ELEMENT>
        <STRUCTURE-ELEMENT>
          <SHORT-NAME>flags</SHORT-NAME>
          <TYPE-TREF DEST="INTEGER-TYPE">/DataTypes/uint8</TYPE-TREF>
          <BIT-FIELD>
            <BIT-POSITION>0</BIT-POSITION>
            <DESC>Anti-pinch active</DESC>
          </BIT-FIELD>
        </STRUCTURE-ELEMENT>
      </ELEMENTS>
    </STRUCTURE-TYPE>
  </ELEMENTS>
</AR-PACKAGE>

2.3 服务实例与网络配置参数

1. Service Name

  • 定义:服务的可读名称,用于标识功能。

  • 要求

    • 采用驼峰命名法或下划线命名
    • 应具有语义化特征(如WindowControlService
  • 示例

    Service Name: DoorLockService

  • ARXML示例

xml 复制代码
<SHORT-NAME>DoorLockService</SHORT-NAME>

2. Service ID

  • 定义 :16位无符号整数(0x0001-0xFFFF),唯一标识一个SOME/IP服务。

  • 要求

    • 必须全局唯一
    • 通常由架构团队统一分配
  • 示例

    Service ID: 0x1234

  • ARXML示例

xml 复制代码
<SERVICE-ID>0x1234</SERVICE-ID>

3. Instance ID

  • 定义:16位无符号整数,标识同一服务的不同实例(如左车门、右车门)。

  • 要求

    • 同一服务可部署多个实例(如0x0001=左车门,0x0002=右车门)
    • 0x0000通常保留给默认实例
  • 示例

    Instance ID: 0x0001 (Driver Door)

  • ARXML示例

xml 复制代码
<INSTANCE-ID>0x0001</INSTANCE-ID>

4. Major Version(主版本号)

  • 定义:8位无符号整数,表示服务的主要版本(重大变更时递增)。

  • 要求

    • 版本格式:Major.Minor
    • 不兼容变更时递增Major Version
  • 示例

    Major Version: 1

5. Minor Version(次版本号)

  • 定义:32位无符号整数,表示服务的次要版本(兼容性变更时递增)。

  • 要求

    • 向后兼容的变更递增Minor Version
  • 示例

    Minor Version: 2

  • ARXML示例

xml 复制代码
<VERSION>
  <MAJOR-VERSION>1</MAJOR-VERSION>
  <MINOR-VERSION>2</MINOR-VERSION>
</VERSION>

6. TTL (Time To Live)

  • 定义:服务实例的生命周期(单位:秒),超过时间未收到心跳则视为离线。

  • 要求

    • 0xFFFFFFFF表示永久有效
    • 典型值:3秒(快速检测故障)
  • 示例

    TTL: 3

xml 复制代码
<SD-CLIENT-CONFIG>
  <TTL>3</TTL> <!-- 3秒 -->
</SD-CLIENT-CONFIG>

7. VLAN ID(虚拟局域网ID)

  • 定义 :12位标识符(1-4094),用于网络流量隔离。

  • 要求

    • 04095保留
    • 不同功能域(如车身、动力)使用不同VLAN
  • 示例

    VLAN ID: 100 (Body Domain)

8. VLAN Name(VLAN名称)

  • 定义:VLAN的可读名称,便于管理。

  • 示例

    VLAN Name: BODY_VLAN

9. VLAN PRIORITY(VLAN优先级)

  • 定义 :3位值(0-7),定义IEEE 802.1Q帧的优先级(QoS)。

  • 要求

    • 0=最低,7=最高(关键安全消息用6-7
  • 示例

    VLAN PRIORITY: 4 (High Priority)

  • ARXML示例

xml 复制代码
<ETHERNET-COMMUNICATION-CONNECTOR>
  <VLAN-ID>100</VLAN-ID>
  <VLAN-NAME>BODY_DOMAIN</VLAN-NAME>
  <VLAN-PRIORITY>4</VLAN-PRIORITY> <!-- 0-7 -->
</ETHERNET-COMMUNICATION-CONNECTOR>

10. Transport Protocol

  • 定义 :指定使用TCPUDP传输。

  • 要求

    • TCP:可靠传输(如配置数据)
    • UDP:低延迟(如传感器数据)
  • 示例

    Transport Protocol: UDP

  • ARXML示例

xml 复制代码
<TRANSPORT-PROTOCOL>TCP</TRANSPORT-PROTOCOL>

11. Server(服务端ECU)

  • 定义:提供服务的ECU名称(如BCM、ECM)。

  • 示例

    Server: BCM (Body Control Module)

12. Server IP(服务端IP地址)

  • 定义:服务端ECU的IPv4/IPv6地址。

  • 要求

    • 通常使用私有地址(如192.168.xx.xx
  • 示例

    Server IP: 192.168.100.10

13. Server IP SubnetMask(服务端子网掩码)

  • 定义 :服务端IP的子网掩码(如255.255.255.0)。

  • 示例

    Server IP SubnetMask: 255.255.255.0

14. Server Port(服务端端口)

  • 定义 :服务端监听的端口号(1-65535)。

  • 要求

    • 通常使用30490-30500范围(AUTOSAR推荐)
  • 示例

    Server Port: 30490

  • ARXML示例

xml 复制代码
<SERVER-ENDPOINT>
  <ECU-INSTANCE-REF DEST="ECU-INSTANCE">/BCM</ECU-INSTANCE-REF>
  <IP-ADDRESS>192.168.100.10</IP-ADDRESS>
  <NETWORK-MASK>255.255.255.0</NETWORK-MASK>
  <TCP-PROPERTIES>
    <TCP-PORT>30490</TCP-PORT>
  </TCP-PROPERTIES>
</SERVER-ENDPOINT>

15. Client(客户端ECU)

  • 定义:消费该服务的ECU名称。

  • 示例

    Client: DCM (Door Control Module)

16. Client ID(客户端ID)

  • 定义:16位无符号整数,唯一标识客户端实例。

  • 要求

    • 同一ECU的不同客户端使用不同ID
  • 示例

    Client ID: 0x0001

17. Client IP(Unicast,客户端IP)

  • 定义:客户端的单播IP地址。

  • 示例

    Client IP (unicast): 192.168.100.20

18. Client IP SubnetMask(客户端子网掩码)

  • 定义:客户端IP的子网掩码。

  • 示例

    Client IP SubnetMask: 255.255.255.0

19. Client Port(客户端端口)

  • 定义:客户端使用的源端口(动态或固定)。

  • 要求

    • 动态端口范围:49152-65535

    • 固定端口需避免冲突
      示例

      Client Port: 49200

  • ARXML示例

xml 复制代码
<CLIENT-ENDPOINT>
  <ECU-INSTANCE-REF DEST="ECU-INSTANCE">/DCM_LF</ECU-INSTANCE-REF>
  <CLIENT-IDENTIFIER>0x0001</CLIENT-IDENTIFIER>
  <IP-ADDRESS>192.168.100.20</IP-ADDRESS>
  <NETWORK-MASK>255.255.255.0</NETWORK-MASK>
  <DYNAMIC-PORT>true</DYNAMIC-PORT> <!-- 或指定固定端口 -->
</CLIENT-ENDPOINT>

部分通信矩阵如下表

Service Name Service ID Instance ID Major Version Minor Version TTL VLAN ID VLAN Name VLAN PRIO Transport Protocol Server Server IP Server Subnet Server Port Client Client ID Client IP Client Subnet Client Port
DoorLockService 0x1234 0x0001 1 2 3 100 BODY_VLAN 4 UDP BCM 192.168.100.10 255.255.255.0 30490 DCM 0x0001 192.168.100.20 255.255.255.0 49200
WindowControlService 0x1235 0x0001 1 1 5 100 BODY_VLAN 3 TCP BCM 192.168.100.10 255.255.255.0 30491 HMI 0x0002 192.168.100.30 255.255.255.0 Dynamic
  • 完整ARXML服务实例配置示例
xml 复制代码
<AR-PACKAGE>
  <SHORT-NAME>ServiceDeployment</SHORT-NAME>
  <ELEMENTS>
    <SERVICE-INSTANCE>
      <SHORT-NAME>DoorLock_DriverSide</SHORT-NAME>
      <SERVICE-REF DEST="SERVICE-INTERFACE">/Services/DoorLockService</SERVICE-REF>
      <INSTANCE-ID>0x0001</INSTANCE-ID>
      <VERSION>
        <MAJOR-VERSION>1</MAJOR-VERSION>
        <MINOR-VERSION>2</MINOR-VERSION>
      </VERSION>
      
      <SERVER-CONFIG>
        <SD-SERVER-CONFIG>
          <TTL>3</TTL>
        </SD-SERVER-CONFIG>
        <NETWORK-BINDING>
          <ETHERNET-COMMUNICATION-CONNECTOR>
            <VLAN-ID>100</VLAN-ID>
            <VLAN-PRIORITY>4</VLAN-PRIORITY>
          </ETHERNET-COMMUNICATION-CONNECTOR>
          <SOCKET-CONNECTION>
            <IP-ADDRESS>192.168.100.10</IP-ADDRESS>
            <NETWORK-MASK>255.255.255.0</NETWORK-MASK>
            <TCP-PROPERTIES>
              <TCP-PORT>30490</TCP-PORT>
            </TCP-PROPERTIES>
          </SOCKET-CONNECTION>
        </NETWORK-BINDING>
      </SERVER-CONFIG>

      <CLIENT-CONFIGURATION>
        <CLIENT-CONFIG>
          <ECU-INSTANCE-REF DEST="ECU-INSTANCE">/DCM_LF</ECU-INSTANCE-REF>
          <CLIENT-IDENTIFIER>0x0001</CLIENT-IDENTIFIER>
        </CLIENT-CONFIG>
      </CLIENT-CONFIGURATION>
    </SERVICE-INSTANCE>
  </ELEMENTS>
</AR-PACKAGE>

2.4 SOME/IP-SD Multicast 配置(SOME/IP服务发现组播配置)

定义:服务发现(Service Discovery)使用的组播通信配置。

说明

  • SOME/IP-SD使用组播进行服务发现和发布
  • 所有需要发现服务的ECU都必须加入指定的组播组
  • 组播通信用于服务上线/下线通知和心跳机制

子参数说明

  • VLAN ID:组播所在的VLAN标识
  • SD Multicast Address:服务发现组播地址
  • Port Num:服务发现使用的端口号
  • Protocol:传输层协议

示例

复制代码
SOME/IP-SD Multicast:
  VLAN ID: 100
  SD Multicast Address: 239.255.0.1
  Port Num: 30490
  Protocol: UDP

ARXML示例

xml 复制代码
<SOMEIP-SD-CONFIG>
  <MULTICAST-CONFIG>
    <ENABLED>true</ENABLED>
    <MULTICAST-ADDRESS>239.255.0.1</MULTICAST-ADDRESS>
    <PORT-NUMBER>30490</PORT-NUMBER>
    <PROTOCOL>UDP</PROTOCOL>
  </MULTICAST-CONFIG>
</SOMEIP-SD-CONFIG>

1. VLAN ID

  • 定义:服务发现组播所在的VLAN标识符。

  • 说明

    • 范围1-4094(0和4095保留)
    • 必须与业务通信的VLAN ID一致
    • 确保服务发现报文能到达同一VLAN内的所有ECU
  • 示例

    VLAN ID: 100 (Body Domain VLAN)

  • ARXML示例

xml 复制代码
<ETHERNET-COMMUNICATION-CONNECTOR>
  <VLAN-ID>100</VLAN-ID>
</ETHERNET-COMMUNICATION-CONNECTOR>

2. SD Multicast Address

  • 定义:SOME/IP服务发现使用的组播IP地址。

  • 说明

    • 标准SOME/IP-SD组播地址范围:239.255.0.0/16
    • 常用默认地址:239.255.0.1
    • 同一网络域内所有ECU必须使用相同组播地址
  • 示例

    SD Multicast Address: 239.255.0.1

  • 规范

  • 范围:239.255.0.0/16

  • 默认地址:239.255.0.1

  • ARXML示例

xml 复制代码
<IPV-4-CONFIGURATION>
  <MULTICAST-ADDRESS>239.255.0.1</MULTICAST-ADDRESS>
</IPV-4-CONFIGURATION>

3. Port Num

  • 定义:SOME/IP服务发现使用的UDP端口号。

  • 说明

  • 标准端口号:30490

  • 所有ECU必须使用相同端口进行服务发现

  • 端口号必须在IANA注册端口范围内(1024-49151)

  • 示例

    Port Num: 30490

  • ARXML示例

xml 复制代码
<UDP-PROPERTIES>
  <PORT-NUMBER>30490</PORT-NUMBER>
</UDP-PROPERTIES>

4. Protocol

  • 定义:SOME/IP服务发现使用的传输层协议。

  • 说明

    • 组播必须使用UDP
    • 原因:组播通信只支持UDP
    • 单播可选UDPTCP
  • 示例

    Protocol: UDP

  • ARXML示例

xml 复制代码
<TRANSPORT-PROTOCOL>UDP</TRANSPORT-PROTOCOL>

2.5 SOME/IP-SD Unicast 配置

  • 定义:服务发现使用的单播通信配置。

  • 说明

    • 用于ECU之间的直接服务发现通信
    • 当组播不可用时作为备用方案
    • 也可用于特定ECU之间的直接通信
  • 子参数说明

    • Port Num:服务发现单播端口号
    • Protocol:传输层协议
  • 示例

    SOME/IP-SD Unicast:
    Port Num: 30490
    Protocol: UDP

  1. Port Num(单播端口号)
  • 定义:SOME/IP服务发现单播通信使用的端口号。

  • 说明

    • 通常与组播端口号相同(30490)
    • 允许配置不同的端口号
    • 必须在ECU之间保持一致
  • 示例

    Port Num: 30490

  1. Protocol(单播协议)
  • 定义:SOME/IP服务发现单播使用的传输层协议。

  • 说明

    • 通常使用UDP协议
    • 某些实现可能支持TCP
    • 必须与组播协议保持一致
  • 示例

    Protocol: UDP

  • ARXML示例

xml 复制代码
<SOMEIP-SD-CONFIG>
  <UNICAST-CONFIG>
    <PORT-NUMBER>30490</PORT-NUMBER>
    <PROTOCOL>UDP</PROTOCOL>
  </UNICAST-CONFIG>
</SOMEIP-SD-CONFIG>
  • 部分通信矩阵如下表:
配置项 VLAN ID 地址/端口 协议 备注
SOME/IP-SD Multicast 100 239.255.0.1:30490 UDP 主服务发现通道
SOME/IP-SD Unicast - <ECU_IP>:30490 UDP 备用服务发现通道
  • 完整ARXML服务发现配置示例
xml 复制代码
<AR-PACKAGE>
  <SHORT-NAME>SdConfig</SHORT-NAME>
  <ELEMENTS>
    <!-- 组播配置 -->
    <SOMEIP-SD-CONFIG>
      <SHORT-NAME>SdMulticastConfig</SHORT-NAME>
      <MULTICAST-CONFIG>
        <ENABLED>true</ENABLED>
        <MULTICAST-ADDRESS>239.255.0.1</MULTICAST-ADDRESS>
        <PORT-NUMBER>30490</PORT-NUMBER>
        <PROTOCOL>UDP</PROTOCOL>
      </MULTICAST-CONFIG>
      
      <!-- 单播配置 -->
      <UNICAST-CONFIG>
        <PORT-NUMBER>30490</PORT-NUMBER>
        <PROTOCOL>UDP</PROTOCOL>
      </UNICAST-CONFIG>
      
      <!-- VLAN绑定 -->
      <NETWORK-BINDING>
        <ETHERNET-COMMUNICATION-CONNECTOR>
          <VLAN-ID>100</VLAN-ID>
          <VLAN-PRIORITY>4</VLAN-PRIORITY>
        </ETHERNET-COMMUNICATION-CONNECTOR>
      </NETWORK-BINDING>
    </SOMEIP-SD-CONFIG>
  </ELEMENTS>
</AR-PACKAGE>

2.6 SOME/IP-SD ECU 配置参数详解

SOME/IP-SD(Service Discovery)是SOME/IP协议的服务发现机制,用于ECU(电子控制单元)之间的服务注册、订阅和查找。以下是SOME/IP-SD相关的ECU配置参数定义及详细说明。

SOME/IP-SD ECU Configuration

  • 定义:ECU级别的服务发现行为控制参数集
  • ARXML位置/SdClientConfig/SdServerConfig节点
xml 复制代码
<SD-CLIENT-CONFIG>
  <INITIAL-DELAY-MIN>100</INITIAL-DELAY-MIN>
  <INITIAL-DELAY-MAX>500</INITIAL-DELAY-MAX>
</SD-CLIENT-CONFIG>

1. ECU Name

  • 定义 :ECU的唯一标识名称,通常采用AUTOSAR标准命名(如BCMECM)。

  • 要求

    • 在整车通信矩阵中唯一
    • 建议使用大写字母和下划线(如DOOR_MODULE_LF
  • 示例

    ECU Name: BCM (Body Control Module)

  • ARXML示例

xml 复制代码
<ECU-INSTANCE>
  <SHORT-NAME>BCM_MAIN</SHORT-NAME>
  <MAC-ADDRESS>00:1A:2B:3C:4D:5E</MAC-ADDRESS>
</ECU-INSTANCE>

2. MAC地址

  • 定义 :ECU网络接口的物理地址(48位,如00:1A:2B:3C:4D:5E)。

  • 作用

    • 用于二层通信(如VLAN内的ECU识别)
    • SOME/IP-SD不直接使用MAC,但底层网络依赖它
  • 示例

    MAC地址: 00:1A:2B:3C:4D:5E

  • ARXML约束

xml 复制代码
<ETHERNET-PHYSICAL-PORT>
  <MAC-ADDRESS>00:1A:2B:3C:4D:5E</MAC-ADDRESS>
</ETHERNET-PHYSICAL-PORT>

3. Init_Delay_Min(初始延迟最小值)

  • 定义 :ECU启动后,首次发送OfferService(服务提供)消息的最小延迟时间(单位:ms)。

  • 作用

    • 避免所有ECU同时启动导致网络拥塞
    • 随机化初始延迟,减少冲突
  • 取值范围10ms ~ 5000ms(AUTOSAR推荐)

  • 示例

    Init_Delay_Min: 100ms

4. Init_Delay_Max(初始延迟最大值)

  • 定义 :ECU启动后,首次发送OfferService消息的最大延迟时间(单位:ms)。

  • 作用

    • Init_Delay_Min共同定义随机延迟范围
    • 确保ECU在合理时间内完成服务注册
  • 要求Init_Delay_Max > Init_Delay_Min

  • 示例

    Init_Delay_Max: 500ms

  • 工程规则

    • 最小值建议≥100ms
    • 最大值应≤2000ms
  • ARXML示例

xml 复制代码
<INITIAL-DELAY-MIN>100</INITIAL-DELAY-MIN>
<INITIAL-DELAY-MAX>500</INITIAL-DELAY-MAX>

5. Repetition_Base_Delay

  • 定义 :服务发现消息(如OfferService)的重传基准间隔(单位:ms)。

  • 作用

    • 控制消息的重复频率
    • 防止消息丢失或未被接收
  • 典型值200ms ~ 1000ms

  • 示例

    Repetition_Base_Delay: 500ms

  • ARXML示例

xml 复制代码
<REPETITION-BASE-DELAY>500</REPETITION-BASE-DELAY>

6. Repetitions_Max

  • 定义OfferService消息的最大重复发送次数。

  • 作用

    • 确保服务信息被可靠传播
    • 避免无限重传浪费带宽
  • 典型值3次(AUTOSAR推荐)

  • 示例

    Repetitions_Max: 3

  • AUTOSAR约束

xml 复制代码
<REPETITIONS-MAX>3</REPETITIONS-MAX> <!-- 固定值3 -->

7. Cyclic_Offer_Delay(周期性服务提供延迟)

  • 定义 :ECU周期性广播OfferService消息的间隔(单位:ms)。

  • 作用

    • 维持服务可见性(类似心跳机制)
    • 适用于长期运行的服务
  • 典型值1000ms ~ 5000ms

  • 示例

    Cyclic_Offer_Delay: 2000ms

  • ARXML示例

xml 复制代码
<CYCLIC-OFFER-DELAY>2000</CYCLIC-OFFER-DELAY>

8. Request_Response_Delay_Min(请求响应延迟最小值)

  • 定义 :ECU响应FindService(服务查找)请求的最小延迟(单位:ms)。

  • 作用

    • 避免瞬时高负载
    • 模拟真实网络响应时间
  • 典型值10ms ~ 100ms

  • 示例

    Request_Response_Delay_Min: 20ms

9. Request_Response_Delay_Max(请求响应延迟最大值)

  • 定义 :ECU响应FindService请求的最大延迟(单位:ms)。

  • 作用

    • Request_Response_Delay_Min共同定义随机延迟范围
    • 模拟网络抖动
  • 要求Request_Response_Delay_Max > Request_Response_Delay_Min

  • 示例

    Request_Response_Delay_Max: 100ms

  • ARXML示例

xml 复制代码
<REQUEST-RESPONSE-DELAY-MIN>20</REQUEST-RESPONSE-DELAY-MIN>
<REQUEST-RESPONSE-DELAY-MAX>100</REQUEST-RESPONSE-DELAY-MAX>
  • 部分通信矩阵如下表
ECU Name MAC地址 Init_Delay_Min Init_Delay_Max Repetition_Base_Delay Repetitions_Max Cyclic_Offer_Delay Request_Response_Delay_Min Request_Response_Delay_Max
BCM 00:1A:2B:3C:4D:5E 100ms 500ms 500ms 3 2000ms 20ms 100ms
DCM_LF 00:1A:2B:3C:4D:5F 150ms 600ms 400ms 3 3000ms 30ms 150ms
  • 完整ARXML配置示例
xml 复制代码
<AR-PACKAGE>
  <SHORT-NAME>SdEcuConfig</SHORT-NAME>
  <ELEMENTS>
    <SD-CLIENT-CONFIG>
      <SHORT-NAME>BCM_SdClient</SHORT-NAME>
      <INITIAL-DELAY-MIN>100</INITIAL-DELAY-MIN>
      <INITIAL-DELAY-MAX>500</INITIAL-DELAY-MAX>
      <REPETITION-BASE-DELAY>500</REPETITION-BASE-DELAY>
      <REPETITIONS-MAX>3</REPETITIONS-MAX>
      <REQUEST-RESPONSE-DELAY-MIN>20</REQUEST-RESPONSE-DELAY-MIN>
      <REQUEST-RESPONSE-DELAY-MAX>100</REQUEST-RESPONSE-DELAY-MAX>
    </SD-CLIENT-CONFIG>

    <SD-SERVER-CONFIG>
      <SHORT-NAME>BCM_SdServer</SHORT-NAME>
      <CYCLIC-OFFER-DELAY>2000</CYCLIC-OFFER-DELAY>
      <TTL>3</TTL>
    </SD-SERVER-CONFIG>
  </ELEMENTS>
</AR-PACKAGE>

关键配置规则

  1. 时间参数单位

    xml 复制代码
    <!-- 所有时间参数单位必须为毫秒 -->
    <CYCLIC-OFFER-DELAY>2000</CYCLIC-OFFER-DELAY> <!-- 2000ms -->
  2. MAC地址格式

    xml 复制代码
    <!-- 必须符合IEEE 802格式 -->
    <MAC-ADDRESS>00:1A:2B:3C:4D:5E</MAC-ADDRESS> <!-- 合法 -->
    <MAC-ADDRESS>00-1A-2B-3C-4D-5E</MAC-ADDRESS> <!-- 非法 -->
  3. 延迟范围验证

    xml 复制代码
    <!-- 必须满足 Min ≤ Max -->
    <INITIAL-DELAY-MIN>100</INITIAL-DELAY-MIN>
    <INITIAL-DELAY-MAX>500</INITIAL-DELAY-MAX> <!-- 合法 -->
  4. 重传次数约束

    xml 复制代码
    <!-- 必须为固定值3 -->
    <REPETITIONS-MAX>3</REPETITIONS-MAX> <!-- 合法 -->
    <REPETITIONS-MAX>5</REPETITIONS-MAX> <!-- 违反AUTOSAR标准 -->

工程实施建议

  1. 网络负载优化

    • 建议Cyclic_Offer_Delay ≥ 1000ms
    • 同一VLAN内ECU的Init_Delay_Max应错开配置
  2. 实时性要求

    xml 复制代码
    <!-- 安全关键服务应减小响应延迟 -->
    <REQUEST-RESPONSE-DELAY-MAX>50</REQUEST-RESPONSE-DELAY-MAX>
  3. 诊断接口

    xml 复制代码
    <!-- 可添加诊断监控配置 -->
    <SD-DIAGNOSTIC-CONFIG>
      <ERROR-HANDLING>ENABLED</ERROR-HANDLING>
    </SD-DIAGNOSTIC-CONFIG>

3 总结

本文主要对SOME/IP通信矩阵进行了详细介绍,有利于车载测试工程师更好地应对车载SOME/IP通信测试的相关需求,希望能对大家有所帮助!

相关推荐
sniper_fandc1 小时前
网络编程—Socket套接字(TCP)
网络·tcp/ip·javaee
the_nov1 小时前
19.TCP相关实验
linux·服务器·网络·c++·tcp/ip
林中伊人1 小时前
家庭路由器wifi设置LAN2LAN和LAN2WAN
网络·路由器
Y淑滢潇潇2 小时前
RHCSA Linux 系统创建文件
linux·运维·服务器
XYN612 小时前
【嵌入式学习3】基于python的tcp客户端、服务器
服务器·开发语言·网络·笔记·python·学习·tcp/ip
the_nov2 小时前
20.IP协议
linux·服务器·网络·c++·tcp/ip
密码小丑3 小时前
玄机-应急响应-webshell查杀
网络·笔记
源代码•宸3 小时前
Visual Studio Code SSH 连接超时对策( keep SSH alive)
运维·服务器·ide·经验分享·vscode·ssh
zyx没烦恼3 小时前
Linux 下 日志系统搭建全攻略
linux·服务器·开发语言·c++
chxii4 小时前
19.go日志包log
网络·golang