SOME/IP服务的组成
SOME/IP,全称为Scalable service-Oriented MiddlewarE over IP,是用于控制消息的汽车中间件解决方案。它提供基于网络的面向服务的通信机制,而每个服务一般都是由相近或相关的一些功能组成,服务是SOME/IP的最核心概念。在一个服务中,定义了Server和Client两个角色:Server提供服务,Client调用服务。对于同一个服务,只能存在一个Server,但可以同时存在多个Client调用服务。一个Service由0~多个Event/Method/Field组成。与CAN相比,面向服务的通讯方式能够大大降低总线的负载率。
在SOME/IP中规定服务中可以包含三种接口,分别称为Method、Event和Field,如下图:
SOME/IP 协议介绍
SOME/IP的报文格式如下图所示,由消息头部(Header)和消息体(Payload)组成,Header主要包括以下字段:
- Message ID,用于唯一标识消息,当消息为Method类型时,由Service ID和Method ID组成,当消息为Event类型时,由Service ID和Event ID组成
- Length,消息长度(从Request ID开始到Payload结束)
- Request ID,服务提供者和调用者可用于区分相同消息的不同调用,由Client ID和Session ID组成
- Protocol Version,协议头版本号,目前该值必须为1;
- Interface Version,接口版本号,一般由服务提供者定义
- Message Type,用于标识消息的类型,如下图所示:
- Return Code,用于标识请求是否成功处理,不同的消息类型,它们在传输时所携带的Return Code也不同
- Payload,也叫有效载荷,是消息内容,通常它的长度是可变的
Method | Event | Field
Method
调用或引用一个进程/函数/子程序,通常由Client发起,并由Server答复。Request是最常见的一种Method,由Client向Server请求数据;Response是Request的结果,由Server答复Client的Request。而Method Fire & Forget方式,只Client向Server发起,但Server对该请求不回复。
Event
Event刚好和Method相反,一个单向的数据传输,用