分享

粗略聊聊中间件和SOME/IP之二

 车载诊断技术 2022-02-04

接着前段时间那篇文章:

粗略聊聊中间件与SOME/IP之一

继续分享下SOME/IP内容。

SOME/IP满足车用要求的特性如下:

  • 基于服务的通信方式:

  • 占用空间小;

  • 与AUTOSAR兼容;

  • 可伸缩性——超大平台或者小平台都可用;

  • 兼容性好——可用于车用的各种操作系统,如AUTOSAR、OSEK和Linux。






对于SOME/IP报文头格式如下:

其中:

Message ID:Message ID的前16 bit表示所使用的服务(Service ID)。“服务”是通信的总体类别(进行服务功能区分),每一个服务都需要一个唯一的服务ID(与UDS Service相似),由系统集成商进行标识。Message ID的后16bit是方法ID,用于标识构成服务的方法、时间和字段。

对比之下,车载CAN总线很少使用基于服务的通信。不过SOME/IP的Message ID的基本思想与CAN总线中的CAN ID类似。因此也可以使用相同的进程来处理SOME/IP的Message ID,相当于对CAN总线中的处理方法进行增强/采用。
 
Length:长度字段共32 bit,表示包括有效载荷、头信息和请求/客户端ID在内的字节长度。这里与其他车载应用场景报文定义格式类似,不管是DoIP还是以太网帧对应都有长度定义,也算是对自己报文的自我检测。
 
RequestID:Request ID用于客户区分同一处理方式的多次调用。详细可如下:
RequestID的前16 bit为Client ID并标识特定的客户端。e.g. 首端(Client A)与后座娱乐系统(Client)均需要设置车载娱乐系统中CD播放器(Server)的歌曲,则Client A和Client B使用不同的Client ID。Request ID的后16 bit代表SessionID。

ProtocolVersion:Protocol Version用于表示SOME/IP协议的版本;

Interface Version:Interface Version表示服务接口的版本,长度为8bit。此接口的定义和版本皆有接口设计方提供,若有新的版本,可动检测接口的兼容性
 
MessageType:此字段用于区分不同报文类型,如下列举了SOME/IP中包含的报文类型:

Return Code [8 Bit]:用于表示报文的反馈(接收方是否成功处理报文);

Payload :有效载荷字段包含SOME/IP消息的参数。

UDP:SOME/IP有效载荷范围为0~1000 Bytes,该上限主要为日后协议栈更改而设定(比如使用IPv6或添加安全协议)

TCP:可以将数据进行分段,因此TCP支持更大的有效载荷。在SOME/IP传输协议TP中,UDP同样支持有效载荷,规范中规定了参数序列化的方法:有效载荷中的数值以及低位至高位bit位的排列顺序。

SOME/IP在AUTOSAR框架的示意图如下:

SOME/IP根据服务接口来定义一项服务,服务接口为依据已有的通信原则定义Client和Server端的行为。

如下图描述了SOME/IP支持不同的通信原则。服务接口包括:

具有响应(request/response)或没有响应(Fire & Forget)的方法

字段:用于获得、设置或通知性能或状态

事件组(event groups):用于发布/订阅处理的事件和字段的逻辑组。

事件(Event),即发生事件时,Server端向Client发送的消息

字段:用于获得、设置或通知性能或状态

事件组(event groups):用于发布/订阅处理的事件和字段的逻辑组。

Request/Response:描述具有请求消息和响应消息的通信方法。请求是Client端向Server端发送额调用方法的报文。响应则是Server反馈Client端调用结果的消息。
 
Fire& Forget:描述仅存在请求报文的通信方式,与Request/Response相同,Client向Server发送请求调用的一个方法。不同的是在此种情况下,Client端不期待来自Server端的回复响应。
 
Event:在这种情况下,Server会周期性或在情况发生变化(事件)时向Client端发送具有特定内容的报文。该Action的前提是Client告诉Server端它希望接受这类报文,即“订阅”。
在此情况下Client端不会发送回应Server的报文。这种通信方式对于Server而言也遵守“Fire@Forget”的通信原则,Event报文与常规的CAN报文相似。
 

Field:表示可以远程访问的“属性”。Filed可以有Client设置。“Get获取”与Filed的沟通原则与“Event”一致。不同的是,系统在任何时刻都可以获得“Filed”,而Event只有在该事件发生的时间内有效(事件触发性)。

汇总SOME/IP通信方式四大类:

  • Methods:其包含了请求后有应答的Method,和收到请求后没有应答的MethodFire&Forget);

  • Event:当某种事情发生后,服务端向客户端发送的Message(有点类似CAN通信Event Message);

  • Field:为Get/Set/Notifier(读熟悉、设置熟悉和初始化Event)某种属性或者状态;

  • Event Group:用来进行publish/subscribe处理Event Fields的通信的逻辑组。

以上分享,以往有所帮助!


愿你我相信时间的力量,
做一个长期主义者!





    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多