目录
- [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 服务基础属性
- 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>
- Service ID
- 定义:16位无符号整数,唯一标识服务
- ARXML表示 :
SOMEIP-SERVICE-INTERFACE/SERVICE-ID
- 范围:0x0001-0x7FFF(0x8000-0xFFFF保留)
- 示例:
xml
<SERVICE-ID>0x1234</SERVICE-ID>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 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>
- 传输协议 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>
- 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>
- 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>
- 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>
- Send Strategy
-
定义:事件或字段通知的发送策略。
-
常见值:
-
OnChange
- 值变化时发送 -
Cyclic
- 周期性发送 -
CyclicOnChange
- 周期性发送但值变化时立即发送 -
示例:
Send Strategy: OnChange
-
ARXML表示 :
SOMEIP-EVENT/SEND-STRATEGY
xml
<SEND-STRATEGY>ON_CHANGE</SEND-STRATEGY> <!-- 或 ON_TIME -->
- Cyclic Time
-
定义:周期性发送的时间间隔(毫秒)。
-
示例:
Cyclic Time: 1000 (1 second)
-
示例:
xml
<CYCLIC-TIME>100</CYCLIC-TIME> <!-- 100ms周期 -->
- Epsilon Value
-
定义:值变化的最小阈值,超过此阈值才触发OnChange发送。
-
示例:
Epsilon Value: 5 (for position percentage)
-
示例:
xml
<EPSILON-TIME>10</EPSILON-TIME> <!-- ±10ms -->
- 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 数据类型定义
- DataType Name
-
定义:数据类型的唯一标识符
-
说明:
- 遵循驼峰命名法或下划线命名法
- 应具有语义化特征
- 在系统中全局唯一
-
示例:
DataType Name: WindowPositionType
-
ARXML示例:
xml
<SHORT-NAME>WindowPositionType</SHORT-NAME>
- DataType Description
-
定义:对数据类型的详细功能描述。
-
示例:
DataType Description: "表示车窗位置的百分比值,0表示完全关闭,100表示完全打开,中间值表示部分开启程度"
-
ARXML示例:
xml
<DESC>Represents window position in percentage (0-100%)</DESC>
- 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 -->
- 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>
- String/Array Length Min/Max
- 定义:长度范围限制
- ARXML示例:
xml
<STRING-TYPE>
<MAX-NR-OF-CHARS>32</MAX-NR-OF-CHARS>
</STRING-TYPE>
- Member Name
-
定义:结构体或联合体中成员变量的名称。
-
示例:
Member Name: "positionValue"
-
ARXML示例:
xml
<STRUCTURE-ELEMENT>
<SHORT-NAME>currentPosition</SHORT-NAME>
</STRUCTURE-ELEMENT>
- Member Description
-
定义:对结构体成员的详细描述。
-
示例:
Member Description: "车窗当前位置的实际百分比值"
-
ARXML示例:
xml
<DESC>Current window position percentage</DESC>
- Member Datatype Reference
-
定义:成员引用的数据类型名称。
-
示例:
Member Datatype Reference: "uint8"
-
ARXML示例:
xml
<TYPE-TREF DEST="INTEGER-TYPE">/DataTypes/uint8</TYPE-TREF>
- Base Datatype
-
定义:派生类型的底层基本类型。
-
示例:
Base Datatype: uint8 (对于枚举类型WindowStateEnum)
-
ARXML示例:
xml
<BASE-TYPE-REF DEST="INTEGER-TYPE">/DataTypes/uint8</BASE-TYPE-REF>
- Resolution(分辨率)
-
定义:原始值到物理值的转换系数。
-
公式:物理值 = (原始值 × Resolution) + Offset
-
示例:
Resolution: 0.5 (每个数字单位代表0.5%的开度)
- Offset(偏移量)
-
定义:原始值到物理值的转换偏移量。
-
示例:
Offset: 0
xml
<COMPU-NUMERATOR>
<V>0.5</V> <!-- Resolution -->
<V>0</V> <!-- Offset -->
</COMPU-NUMERATOR>
- Physical Min(物理最小值)
-
定义:该物理量允许的最小值。
-
示例:
Physical Min: 0 (完全关闭)
- Physical Max(物理最大值)
-
定义:该物理量允许的最大值。
-
示例:
Physical Max: 100 (完全打开)
-
ARXML示例:
xml
<PHYS-CONSTRS>
<MIN>0</MIN>
<MAX>100</MAX>
</PHYS-CONSTRS>
- Initial Value
-
定义:变量初始化时的默认值。
-
示例:
Initial Value: 0 (车窗默认完全关闭)
-
ARXML示例:
xml
<INIT-VALUE>
<NUMERICAL-VALUE-SPECIFICATION>
<VALUE>0</VALUE>
</NUMERICAL-VALUE-SPECIFICATION>
</INIT-VALUE>
- Invalid Value
-
定义:表示数据无效的特殊值。
-
示例:
Invalid Value: 0xFF (对于uint8类型的位置值)
-
ARXML示例:
xml
<INVALID-VALUE>255</INVALID-VALUE>
- Unit
-
定义:物理量的计量单位。
-
示例:
Unit: "%" (百分比)
-
ARXML示例:
xml
<UNIT>%</UNIT>
- 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>
- 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>
- 备注
-
定义:任何额外的说明信息。
-
示例:
备注: "超过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
),用于网络流量隔离。 -
要求 :
0
和4095
保留- 不同功能域(如车身、动力)使用不同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
-
定义 :指定使用
TCP
或UDP
传输。 -
要求 :
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
- 单播可选
UDP
或TCP
- 组播必须使用
-
示例:
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
- Port Num(单播端口号)
-
定义:SOME/IP服务发现单播通信使用的端口号。
-
说明:
- 通常与组播端口号相同(30490)
- 允许配置不同的端口号
- 必须在ECU之间保持一致
-
示例:
Port Num: 30490
- 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标准命名(如
BCM
、ECM
)。 -
要求 :
- 在整车通信矩阵中唯一
- 建议使用大写字母和下划线(如
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>
关键配置规则:
-
时间参数单位:
xml<!-- 所有时间参数单位必须为毫秒 --> <CYCLIC-OFFER-DELAY>2000</CYCLIC-OFFER-DELAY> <!-- 2000ms -->
-
MAC地址格式:
xml<!-- 必须符合IEEE 802格式 --> <MAC-ADDRESS>00:1A:2B:3C:4D:5E</MAC-ADDRESS> <!-- 合法 --> <MAC-ADDRESS>00-1A-2B-3C-4D-5E</MAC-ADDRESS> <!-- 非法 -->
-
延迟范围验证:
xml<!-- 必须满足 Min ≤ Max --> <INITIAL-DELAY-MIN>100</INITIAL-DELAY-MIN> <INITIAL-DELAY-MAX>500</INITIAL-DELAY-MAX> <!-- 合法 -->
-
重传次数约束:
xml<!-- 必须为固定值3 --> <REPETITIONS-MAX>3</REPETITIONS-MAX> <!-- 合法 --> <REPETITIONS-MAX>5</REPETITIONS-MAX> <!-- 违反AUTOSAR标准 -->
工程实施建议:
-
网络负载优化:
- 建议
Cyclic_Offer_Delay
≥ 1000ms - 同一VLAN内ECU的
Init_Delay_Max
应错开配置
- 建议
-
实时性要求:
xml<!-- 安全关键服务应减小响应延迟 --> <REQUEST-RESPONSE-DELAY-MAX>50</REQUEST-RESPONSE-DELAY-MAX>
-
诊断接口:
xml<!-- 可添加诊断监控配置 --> <SD-DIAGNOSTIC-CONFIG> <ERROR-HANDLING>ENABLED</ERROR-HANDLING> </SD-DIAGNOSTIC-CONFIG>
3 总结
本文主要对SOME/IP通信矩阵进行了详细介绍,有利于车载测试工程师更好地应对车载SOME/IP通信测试的相关需求,希望能对大家有所帮助!