本专题主要对SOME/IP通信矩阵定义的服务基础属性、数据类型属性、服务实例与网络配置参数等进行了介绍,有利于充分理解SOME/IP通信矩阵的参数定义。
Service Name: "WindowControlService"
SOMEIP-SERVICE-INTERFACE/SHORT-NAME
<SOMEIP-SERVICE-INTERFACE>
<SHORT-NAME>/Company/Chassis/VehicleSpeedSHORT-NAME>
SOMEIP-SERVICE-INTERFACE>
SOMEIP-SERVICE-INTERFACE/SERVICE-ID
<SERVICE-ID>0x1234SERVICE-ID>
定义:对服务功能的详细描述。
示例:
Service Description: "This service provides control and status monitoring for vehicle windows, including position control and anti-pinch functionality."
DESC
元素<DESC>
<L-2 L="EN">Provides vehicle speed information with 0.1km/h resolutionL-2>
DESC>
定义:标识远程过程调用的类型。
常见值:
Method
- 请求/响应方法Fire&Forget
- 单向方法Event
- 事件通知Field
- 字段通知示例:
RPC Type: Method
ARXML表示:SOMEIP-METHOD/TYPE
示例:
<SOMEIP-METHOD>
<SHORT-NAME>GetCurrentSpeedSHORT-NAME>
<METHOD-ID>0x0001METHOD-ID>
<TYPE>REQUEST_RESPONSETYPE>
SOMEIP-METHOD>
定义:当RPC类型为Field时,表示字段的名称。
示例:
Field Property Name: "WindowPosition"
SOMEIP-FIELD/SHORT-NAME
<SOMEIP-FIELD>
<SHORT-NAME>VehicleSpeedValueSHORT-NAME>
<GETTER-REF>/Methods/GetSpeedValueGETTER-REF>
SOMEIP-FIELD>
定义:字段的数据类型。
示例:
Field Property Data Type: uint8 (0-100 representing percentage of window openness)
APPLICATION-PRIMITIVE-DATA-TYPE
<APPLICATION-PRIMITIVE-DATA-TYPE>
<SHORT-NAME>tSpeedSHORT-NAME>
<SW-DATA-DEF-PROPS>
<SW-DATA-DEF-PROPS-VARIANT>
<BASE-TYPE-REF>/DataTypes/uint16BASE-TYPE-REF>
SW-DATA-DEF-PROPS-VARIANT>
SW-DATA-DEF-PROPS>
APPLICATION-PRIMITIVE-DATA-TYPE>
定义:更详细的RPC分类。
常见值:
Getter
- 获取字段值Setter
- 设置字段值Notifier
- 字段变更通知示例:
RPC Specific Type: Setter
SOMEIP-METHOD/SPECIFIC-TYPE
<SOMEIP-METHOD>
<SPECIFIC-TYPE>DIAGNOSTICSPECIFIC-TYPE>
SOMEIP-METHOD>
定义:对方法或事件的详细功能描述。
示例:
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)."
DESC
元素<SOMEIP-METHOD>
<SHORT-NAME>SetHeadlightLevelSHORT-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>levelSHORT-NAME>
<TYPE-TREF>/DataTypes/uint8TYPE-TREF>
ARGUMENT-DATA-PROTOTYPE>
INPUT-ARGS>
SOMEIP-METHOD>
定义:事件组名称及其ID,用于组织相关事件。
示例:
Eventgroup Name@EventgroupID: "WindowStatusEvents@0x01"
<SOMEIP-EVENTGROUP>
<SHORT-NAME>SpeedEventsSHORT-NAME>
<EVENTGROUP-ID>0x1001EVENTGROUP-ID>
<EVENTS>
<SOMEIP-EVENT-REF>/Events/SpeedChangedSOMEIP-EVENT-REF>
EVENTS>
SOMEIP-EVENTGROUP>
定义:指定使用UDP还是TCP传输。
示例:
UDP/TCP: TCP
SOMEIP-SERVICE-DEPLOYMENT/PROTOCOL
<SOMEIP-SERVICE-DEPLOYMENT>
<PROTOCOL>UDPPROTOCOL>
<PORT-NUMBER>30490PORT-NUMBER>
SOMEIP-SERVICE-DEPLOYMENT>
定义:对于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)
<INPUT-ARGS>
<ARGUMENT-DATA-PROTOTYPE>
<SHORT-NAME>requestDataSHORT-NAME>
<TYPE-TREF>/DataTypes/tRequestStructTYPE-TREF>
<DIRECTION>INDIRECTION>
ARGUMENT-DATA-PROTOTYPE>
INPUT-ARGS>
定义:对于Method类型的RPC,定义输出参数。
示例:
Output Parameter (R/R):
- result: uint8 (0=Success, 1=InvalidPosition, 2=WindowBlocked, 3=SystemError)
- currentPosition: uint8 (0-100)
<OUTPUT-ARGS>
<ARGUMENT-DATA-PROTOTYPE>
<SHORT-NAME>responseDataSHORT-NAME>
<TYPE-TREF>/DataTypes/tResponseStructTYPE-TREF>
<DIRECTION>OUTDIRECTION>
ARGUMENT-DATA-PROTOTYPE>
OUTPUT-ARGS>
定义:事件通知中包含的参数。
示例:
Event Parameter:
- windowID: uint8
- currentPosition: uint8
- statusFlags: uint8 (bit0=AntiPinchActive, bit1=ManualOverride)
<SOMEIP-EVENT>
<SHORT-NAME>DoorStatusChangedSHORT-NAME>
<EVENT-DATA>
<APPLICATION-DATA-TYPE-REF>/DataTypes/tDoorStatusAPPLICATION-DATA-TYPE-REF>
EVENT-DATA>
SOMEIP-EVENT>
定义:事件或字段通知的发送策略。
常见值:
OnChange
- 值变化时发送
Cyclic
- 周期性发送
CyclicOnChange
- 周期性发送但值变化时立即发送
示例:
Send Strategy: OnChange
SOMEIP-EVENT/SEND-STRATEGY
<SEND-STRATEGY>ON_CHANGESEND-STRATEGY>
定义:周期性发送的时间间隔(毫秒)。
示例:
Cyclic Time: 1000 (1 second)
<CYCLIC-TIME>100CYCLIC-TIME>
定义:值变化的最小阈值,超过此阈值才触发OnChange发送。
示例:
Epsilon Value: 5 (for position percentage)
<EPSILON-TIME>10EPSILON-TIME>
定义:任何额外的说明信息。
示例:
Remark: "This event is only sent when the ignition is on or when window position is changing."
ANNOTATION
<ANNOTATION>
<ANNOTATION-ORIGIN>DesignerANNOTATION-ORIGIN>
<ANNOTATION-TEXT>This event shall be disabled in diagnostic modeANNOTATION-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 | - |
<SOMEIP-SERVICE-INTERFACE>
<SHORT-NAME>/Company/Body/DoorsSHORT-NAME>
<SERVICE-ID>0x2010SERVICE-ID>
<VERSION-MAJOR>1VERSION-MAJOR>
<VERSION-MINOR>0VERSION-MINOR>
<METHODS>
<SOMEIP-METHOD>
<SHORT-NAME>LockDoorsSHORT-NAME>
<METHOD-ID>0x0001METHOD-ID>
<TYPE>FIRE_AND_FORGETTYPE>
<INPUT-ARGS>
<ARGUMENT-DATA-PROTOTYPE>
<SHORT-NAME>forceLockSHORT-NAME>
<TYPE-TREF>/DataTypes/booleanTYPE-TREF>
ARGUMENT-DATA-PROTOTYPE>
INPUT-ARGS>
SOMEIP-METHOD>
METHODS>
<EVENTS>
<SOMEIP-EVENT>
<SHORT-NAME>DoorStatusUpdateSHORT-NAME>
<EVENT-ID>0x8001EVENT-ID>
<EVENT-DATA>
<APPLICATION-DATA-TYPE-REF>/DataTypes/tDoorStatusAPPLICATION-DATA-TYPE-REF>
EVENT-DATA>
<SEND-STRATEGY>ON_CHANGESEND-STRATEGY>
<CYCLIC-TIME>500CYCLIC-TIME>
SOMEIP-EVENT>
EVENTS>
<EVENTGROUPS>
<SOMEIP-EVENTGROUP>
<SHORT-NAME>DoorEventGroupSHORT-NAME>
<EVENTGROUP-ID>0x3001EVENTGROUP-ID>
<EVENTS>
<SOMEIP-EVENT-REF>/Events/DoorStatusUpdateSOMEIP-EVENT-REF>
EVENTS>
SOMEIP-EVENTGROUP>
EVENTGROUPS>
SOMEIP-SERVICE-INTERFACE>
定义:数据类型的唯一标识符
说明:
示例:
DataType Name: WindowPositionType
<SHORT-NAME>WindowPositionTypeSHORT-NAME>
定义:对数据类型的详细功能描述。
示例:
DataType Description: "表示车窗位置的百分比值,0表示完全关闭,100表示完全打开,中间值表示部分开启程度"
<DESC>Represents window position in percentage (0-100%)DESC>
定义:数据类型的分类。
常见类别:
Primitive
- 基本类型(uint8, float等)Struct
- 结构体Array
- 数组String
- 字符串Enumeration
- 枚举Union
- 联合体示例:
DataType Category: Primitive
<TYPE-CATEGORY>VALUETYPE-CATEGORY>
定义:指定字符串或数组长度的表示方式。
选项:
Fixed
- 固定长度Dynamic
- 动态长度LengthField
- 有单独长度字段示例:
String/Array Length Type: Fixed
<ARRAY-TYPE>
<LENGTH-FIELD-TYPE>FIXED-LENGTHLENGTH-FIELD-TYPE>
ARRAY-TYPE>
<STRING-TYPE>
<MAX-NR-OF-CHARS>32MAX-NR-OF-CHARS>
STRING-TYPE>
定义:结构体或联合体中成员变量的名称。
示例:
Member Name: "positionValue"
<STRUCTURE-ELEMENT>
<SHORT-NAME>currentPositionSHORT-NAME>
STRUCTURE-ELEMENT>
定义:对结构体成员的详细描述。
示例:
Member Description: "车窗当前位置的实际百分比值"
<DESC>Current window position percentageDESC>
定义:成员引用的数据类型名称。
示例:
Member Datatype Reference: "uint8"
<TYPE-TREF DEST="INTEGER-TYPE">/DataTypes/uint8TYPE-TREF>
定义:派生类型的底层基本类型。
示例:
Base Datatype: uint8 (对于枚举类型WindowStateEnum)
<BASE-TYPE-REF DEST="INTEGER-TYPE">/DataTypes/uint8BASE-TYPE-REF>
定义:原始值到物理值的转换系数。
公式:物理值 = (原始值 × Resolution) + Offset
示例:
Resolution: 0.5 (每个数字单位代表0.5%的开度)
定义:原始值到物理值的转换偏移量。
示例:
Offset: 0
<COMPU-NUMERATOR>
<V>0.5V>
<V>0V>
COMPU-NUMERATOR>
定义:该物理量允许的最小值。
示例:
Physical Min: 0 (完全关闭)
定义:该物理量允许的最大值。
示例:
Physical Max: 100 (完全打开)
<PHYS-CONSTRS>
<MIN>0MIN>
<MAX>100MAX>
PHYS-CONSTRS>
定义:变量初始化时的默认值。
示例:
Initial Value: 0 (车窗默认完全关闭)
<INIT-VALUE>
<NUMERICAL-VALUE-SPECIFICATION>
<VALUE>0VALUE>
NUMERICAL-VALUE-SPECIFICATION>
INIT-VALUE>
定义:表示数据无效的特殊值。
示例:
Invalid Value: 0xFF (对于uint8类型的位置值)
<INVALID-VALUE>255INVALID-VALUE>
定义:物理量的计量单位。
示例:
Unit: "%" (百分比)
<UNIT>%UNIT>
定义:枚举或标志位的取值定义。
格式:
<数值> : <名称> : <描述>
Discrete Value Definition:
0 : WINDOW_CLOSED : "车窗完全关闭"
100 : WINDOW_OPEN : "车窗完全打开"
<SW-ENUMERATION>
<SHORT-NAME>WindowStateSHORT-NAME>
<ITEMS>
<ENUMERATION-LITERAL>
<SHORT-NAME>CLOSEDSHORT-NAME>
<VALUE>0VALUE>
ENUMERATION-LITERAL>
ITEMS>
SW-ENUMERATION>
定义:离散值在不同语言/环境下的表示。
示例:
Discrete_Value_Definition_Translation:
de_DE:
WINDOW_CLOSED : "Fenster geschlossen"
WINDOW_OPEN : "Fenster geöffnet"
<ANNOTATION>
<LANGUAGE>de-DELANGUAGE>
<DESC>GESCHLOSSENDESC>
ANNOTATION>
定义:任何额外的说明信息。
示例:
备注: "超过90%的位置值将触发车窗自动通风模式"
<ANNOTATION>
<DESC>Value 127 represents maintenance modeDESC>
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表示维护模式” |
<AR-PACKAGE>
<SHORT-NAME>DataTypesSHORT-NAME>
<ELEMENTS>
<INTEGER-TYPE>
<SHORT-NAME>WindowPosTypeSHORT-NAME>
<DESC>Window position percentageDESC>
<BASE-TYPE-SIZE>8BASE-TYPE-SIZE>
<PHYS-CONSTRS>
<MIN>0MIN>
<MAX>100MAX>
<UNIT>%UNIT>
PHYS-CONSTRS>
<COMPU-METHOD>
<COMPU-NUMERATOR>
<V>0.5V>
<V>0V>
COMPU-NUMERATOR>
COMPU-METHOD>
<INVALID-VALUE>255INVALID-VALUE>
INTEGER-TYPE>
<STRUCTURE-TYPE>
<SHORT-NAME>WindowStatusTypeSHORT-NAME>
<ELEMENTS>
<STRUCTURE-ELEMENT>
<SHORT-NAME>positionSHORT-NAME>
<TYPE-TREF DEST="INTEGER-TYPE">/DataTypes/WindowPosTypeTYPE-TREF>
STRUCTURE-ELEMENT>
<STRUCTURE-ELEMENT>
<SHORT-NAME>flagsSHORT-NAME>
<TYPE-TREF DEST="INTEGER-TYPE">/DataTypes/uint8TYPE-TREF>
<BIT-FIELD>
<BIT-POSITION>0BIT-POSITION>
<DESC>Anti-pinch activeDESC>
BIT-FIELD>
STRUCTURE-ELEMENT>
ELEMENTS>
STRUCTURE-TYPE>
ELEMENTS>
AR-PACKAGE>
1. Service Name
WindowControlService
)Service Name: DoorLockService
<SHORT-NAME>DoorLockServiceSHORT-NAME>
2. Service ID
0x0001-0xFFFF
),唯一标识一个SOME/IP服务。Service ID: 0x1234
<SERVICE-ID>0x1234SERVICE-ID>
3. Instance ID
0x0001
=左车门,0x0002
=右车门)0x0000
通常保留给默认实例Instance ID: 0x0001 (Driver Door)
<INSTANCE-ID>0x0001INSTANCE-ID>
4. Major Version(主版本号)
Major.Minor
Major Version: 1
5. Minor Version(次版本号)
Minor Version: 2
<VERSION>
<MAJOR-VERSION>1MAJOR-VERSION>
<MINOR-VERSION>2MINOR-VERSION>
VERSION>
6. TTL (Time To Live)
0xFFFFFFFF
表示永久有效3
秒(快速检测故障)TTL: 3
<SD-CLIENT-CONFIG>
<TTL>3TTL>
SD-CLIENT-CONFIG>
7. VLAN ID(虚拟局域网ID)
1-4094
),用于网络流量隔离。0
和4095
保留VLAN ID: 100 (Body Domain)
8. VLAN Name(VLAN名称)
VLAN Name: BODY_VLAN
9. VLAN PRIORITY(VLAN优先级)
0-7
),定义IEEE 802.1Q帧的优先级(QoS)。0
=最低,7
=最高(关键安全消息用6-7
)VLAN PRIORITY: 4 (High Priority)
<ETHERNET-COMMUNICATION-CONNECTOR>
<VLAN-ID>100VLAN-ID>
<VLAN-NAME>BODY_DOMAINVLAN-NAME>
<VLAN-PRIORITY>4VLAN-PRIORITY>
ETHERNET-COMMUNICATION-CONNECTOR>
10. Transport Protocol
TCP
或UDP
传输。TCP
:可靠传输(如配置数据)UDP
:低延迟(如传感器数据)Transport Protocol: UDP
<TRANSPORT-PROTOCOL>TCPTRANSPORT-PROTOCOL>
11. Server(服务端ECU)
Server: BCM (Body Control Module)
12. Server IP(服务端IP地址)
192.168.xx.xx
)Server IP: 192.168.100.10
13. Server IP SubnetMask(服务端子网掩码)
255.255.255.0
)。Server IP SubnetMask: 255.255.255.0
14. Server Port(服务端端口)
1-65535
)。30490-30500
范围(AUTOSAR推荐)Server Port: 30490
<SERVER-ENDPOINT>
<ECU-INSTANCE-REF DEST="ECU-INSTANCE">/BCMECU-INSTANCE-REF>
<IP-ADDRESS>192.168.100.10IP-ADDRESS>
<NETWORK-MASK>255.255.255.0NETWORK-MASK>
<TCP-PROPERTIES>
<TCP-PORT>30490TCP-PORT>
TCP-PROPERTIES>
SERVER-ENDPOINT>
15. Client(客户端ECU)
Client: DCM (Door Control Module)
16. Client ID(客户端ID)
Client ID: 0x0001
17. Client IP(Unicast,客户端IP)
Client IP (unicast): 192.168.100.20
18. Client IP SubnetMask(客户端子网掩码)
Client IP SubnetMask: 255.255.255.0
19. Client Port(客户端端口)
49152-65535
Client Port: 49200
<CLIENT-ENDPOINT>
<ECU-INSTANCE-REF DEST="ECU-INSTANCE">/DCM_LFECU-INSTANCE-REF>
<CLIENT-IDENTIFIER>0x0001CLIENT-IDENTIFIER>
<IP-ADDRESS>192.168.100.20IP-ADDRESS>
<NETWORK-MASK>255.255.255.0NETWORK-MASK>
<DYNAMIC-PORT>trueDYNAMIC-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 |
<AR-PACKAGE>
<SHORT-NAME>ServiceDeploymentSHORT-NAME>
<ELEMENTS>
<SERVICE-INSTANCE>
<SHORT-NAME>DoorLock_DriverSideSHORT-NAME>
<SERVICE-REF DEST="SERVICE-INTERFACE">/Services/DoorLockServiceSERVICE-REF>
<INSTANCE-ID>0x0001INSTANCE-ID>
<VERSION>
<MAJOR-VERSION>1MAJOR-VERSION>
<MINOR-VERSION>2MINOR-VERSION>
VERSION>
<SERVER-CONFIG>
<SD-SERVER-CONFIG>
<TTL>3TTL>
SD-SERVER-CONFIG>
<NETWORK-BINDING>
<ETHERNET-COMMUNICATION-CONNECTOR>
<VLAN-ID>100VLAN-ID>
<VLAN-PRIORITY>4VLAN-PRIORITY>
ETHERNET-COMMUNICATION-CONNECTOR>
<SOCKET-CONNECTION>
<IP-ADDRESS>192.168.100.10IP-ADDRESS>
<NETWORK-MASK>255.255.255.0NETWORK-MASK>
<TCP-PROPERTIES>
<TCP-PORT>30490TCP-PORT>
TCP-PROPERTIES>
SOCKET-CONNECTION>
NETWORK-BINDING>
SERVER-CONFIG>
<CLIENT-CONFIGURATION>
<CLIENT-CONFIG>
<ECU-INSTANCE-REF DEST="ECU-INSTANCE">/DCM_LFECU-INSTANCE-REF>
<CLIENT-IDENTIFIER>0x0001CLIENT-IDENTIFIER>
CLIENT-CONFIG>
CLIENT-CONFIGURATION>
SERVICE-INSTANCE>
ELEMENTS>
AR-PACKAGE>
定义:服务发现(Service Discovery)使用的组播通信配置。
说明:
子参数说明:
示例:
SOME/IP-SD Multicast:
VLAN ID: 100
SD Multicast Address: 239.255.0.1
Port Num: 30490
Protocol: UDP
ARXML示例:
<SOMEIP-SD-CONFIG>
<MULTICAST-CONFIG>
<ENABLED>trueENABLED>
<MULTICAST-ADDRESS>239.255.0.1MULTICAST-ADDRESS>
<PORT-NUMBER>30490PORT-NUMBER>
<PROTOCOL>UDPPROTOCOL>
MULTICAST-CONFIG>
SOMEIP-SD-CONFIG>
1. VLAN ID
定义:服务发现组播所在的VLAN标识符。
说明:
示例:
VLAN ID: 100 (Body Domain VLAN)
<ETHERNET-COMMUNICATION-CONNECTOR>
<VLAN-ID>100VLAN-ID>
ETHERNET-COMMUNICATION-CONNECTOR>
2. SD Multicast Address
定义:SOME/IP服务发现使用的组播IP地址。
说明:
示例:
SD Multicast Address: 239.255.0.1
规范:
范围:239.255.0.0/16
默认地址:239.255.0.1
ARXML示例:
<IPV-4-CONFIGURATION>
<MULTICAST-ADDRESS>239.255.0.1MULTICAST-ADDRESS>
IPV-4-CONFIGURATION>
3. Port Num
定义:SOME/IP服务发现使用的UDP端口号。
说明:
标准端口号:30490
所有ECU必须使用相同端口进行服务发现
端口号必须在IANA注册端口范围内(1024-49151)
示例:
Port Num: 30490
<UDP-PROPERTIES>
<PORT-NUMBER>30490PORT-NUMBER>
UDP-PROPERTIES>
4. Protocol
定义:SOME/IP服务发现使用的传输层协议。
说明:
UDP
UDP
或TCP
示例:
Protocol: UDP
<TRANSPORT-PROTOCOL>UDPTRANSPORT-PROTOCOL>
定义:服务发现使用的单播通信配置。
说明:
子参数说明:
示例:
SOME/IP-SD Unicast:
Port Num: 30490
Protocol: UDP
定义:SOME/IP服务发现单播通信使用的端口号。
说明:
示例:
Port Num: 30490
定义:SOME/IP服务发现单播使用的传输层协议。
说明:
示例:
Protocol: UDP
<SOMEIP-SD-CONFIG>
<UNICAST-CONFIG>
<PORT-NUMBER>30490PORT-NUMBER>
<PROTOCOL>UDPPROTOCOL>
UNICAST-CONFIG>
SOMEIP-SD-CONFIG>
配置项 | VLAN ID | 地址/端口 | 协议 | 备注 |
---|---|---|---|---|
SOME/IP-SD Multicast | 100 | 239.255.0.1:30490 | UDP | 主服务发现通道 |
SOME/IP-SD Unicast | - | UDP | 备用服务发现通道 |
<AR-PACKAGE>
<SHORT-NAME>SdConfigSHORT-NAME>
<ELEMENTS>
<SOMEIP-SD-CONFIG>
<SHORT-NAME>SdMulticastConfigSHORT-NAME>
<MULTICAST-CONFIG>
<ENABLED>trueENABLED>
<MULTICAST-ADDRESS>239.255.0.1MULTICAST-ADDRESS>
<PORT-NUMBER>30490PORT-NUMBER>
<PROTOCOL>UDPPROTOCOL>
MULTICAST-CONFIG>
<UNICAST-CONFIG>
<PORT-NUMBER>30490PORT-NUMBER>
<PROTOCOL>UDPPROTOCOL>
UNICAST-CONFIG>
<NETWORK-BINDING>
<ETHERNET-COMMUNICATION-CONNECTOR>
<VLAN-ID>100VLAN-ID>
<VLAN-PRIORITY>4VLAN-PRIORITY>
ETHERNET-COMMUNICATION-CONNECTOR>
NETWORK-BINDING>
SOMEIP-SD-CONFIG>
ELEMENTS>
AR-PACKAGE>
SOME/IP-SD(Service Discovery)是SOME/IP协议的服务发现机制,用于ECU(电子控制单元)之间的服务注册、订阅和查找。以下是SOME/IP-SD相关的ECU配置参数定义及详细说明。
SOME/IP-SD ECU Configuration
/SdClientConfig
或/SdServerConfig
节点<SD-CLIENT-CONFIG>
<INITIAL-DELAY-MIN>100INITIAL-DELAY-MIN>
<INITIAL-DELAY-MAX>500INITIAL-DELAY-MAX>
SD-CLIENT-CONFIG>
1. ECU Name
BCM
、ECM
)。DOOR_MODULE_LF
)ECU Name: BCM (Body Control Module)
<ECU-INSTANCE>
<SHORT-NAME>BCM_MAINSHORT-NAME>
<MAC-ADDRESS>00:1A:2B:3C:4D:5EMAC-ADDRESS>
ECU-INSTANCE>
2. MAC地址
00:1A:2B:3C:4D:5E
)。MAC地址: 00:1A:2B:3C:4D:5E
<ETHERNET-PHYSICAL-PORT>
<MAC-ADDRESS>00:1A:2B:3C:4D:5EMAC-ADDRESS>
ETHERNET-PHYSICAL-PORT>
3. Init_Delay_Min(初始延迟最小值)
OfferService
(服务提供)消息的最小延迟时间(单位:ms)。10ms ~ 5000ms
(AUTOSAR推荐)Init_Delay_Min: 100ms
4. Init_Delay_Max(初始延迟最大值)
OfferService
消息的最大延迟时间(单位:ms)。Init_Delay_Min
共同定义随机延迟范围Init_Delay_Max > Init_Delay_Min
Init_Delay_Max: 500ms
<INITIAL-DELAY-MIN>100INITIAL-DELAY-MIN>
<INITIAL-DELAY-MAX>500INITIAL-DELAY-MAX>
5. Repetition_Base_Delay
OfferService
)的重传基准间隔(单位:ms)。200ms ~ 1000ms
Repetition_Base_Delay: 500ms
<REPETITION-BASE-DELAY>500REPETITION-BASE-DELAY>
6. Repetitions_Max
OfferService
消息的最大重复发送次数。3
次(AUTOSAR推荐)Repetitions_Max: 3
<REPETITIONS-MAX>3REPETITIONS-MAX>
7. Cyclic_Offer_Delay(周期性服务提供延迟)
OfferService
消息的间隔(单位:ms)。1000ms ~ 5000ms
Cyclic_Offer_Delay: 2000ms
<CYCLIC-OFFER-DELAY>2000CYCLIC-OFFER-DELAY>
8. Request_Response_Delay_Min(请求响应延迟最小值)
FindService
(服务查找)请求的最小延迟(单位:ms)。10ms ~ 100ms
Request_Response_Delay_Min: 20ms
9. Request_Response_Delay_Max(请求响应延迟最大值)
FindService
请求的最大延迟(单位:ms)。Request_Response_Delay_Min
共同定义随机延迟范围Request_Response_Delay_Max > Request_Response_Delay_Min
Request_Response_Delay_Max: 100ms
<REQUEST-RESPONSE-DELAY-MIN>20REQUEST-RESPONSE-DELAY-MIN>
<REQUEST-RESPONSE-DELAY-MAX>100REQUEST-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 |
<AR-PACKAGE>
<SHORT-NAME>SdEcuConfigSHORT-NAME>
<ELEMENTS>
<SD-CLIENT-CONFIG>
<SHORT-NAME>BCM_SdClientSHORT-NAME>
<INITIAL-DELAY-MIN>100INITIAL-DELAY-MIN>
<INITIAL-DELAY-MAX>500INITIAL-DELAY-MAX>
<REPETITION-BASE-DELAY>500REPETITION-BASE-DELAY>
<REPETITIONS-MAX>3REPETITIONS-MAX>
<REQUEST-RESPONSE-DELAY-MIN>20REQUEST-RESPONSE-DELAY-MIN>
<REQUEST-RESPONSE-DELAY-MAX>100REQUEST-RESPONSE-DELAY-MAX>
SD-CLIENT-CONFIG>
<SD-SERVER-CONFIG>
<SHORT-NAME>BCM_SdServerSHORT-NAME>
<CYCLIC-OFFER-DELAY>2000CYCLIC-OFFER-DELAY>
<TTL>3TTL>
SD-SERVER-CONFIG>
ELEMENTS>
AR-PACKAGE>
关键配置规则:
时间参数单位:
<CYCLIC-OFFER-DELAY>2000CYCLIC-OFFER-DELAY>
MAC地址格式:
<MAC-ADDRESS>00:1A:2B:3C:4D:5EMAC-ADDRESS>
<MAC-ADDRESS>00-1A-2B-3C-4D-5EMAC-ADDRESS>
延迟范围验证:
<INITIAL-DELAY-MIN>100INITIAL-DELAY-MIN>
<INITIAL-DELAY-MAX>500INITIAL-DELAY-MAX>
重传次数约束:
<REPETITIONS-MAX>3REPETITIONS-MAX>
<REPETITIONS-MAX>5REPETITIONS-MAX>
工程实施建议:
网络负载优化:
Cyclic_Offer_Delay
≥ 1000msInit_Delay_Max
应错开配置实时性要求:
<REQUEST-RESPONSE-DELAY-MAX>50REQUEST-RESPONSE-DELAY-MAX>
诊断接口:
<SD-DIAGNOSTIC-CONFIG>
<ERROR-HANDLING>ENABLEDERROR-HANDLING>
SD-DIAGNOSTIC-CONFIG>
本文主要对SOME/IP通信矩阵进行了详细介绍,有利于车载测试工程师更好地应对车载SOME/IP通信测试的相关需求,希望能对大家有所帮助!