绑定手机号
获取验证码
确认绑定
提问
0/255
提问
订阅开课提醒需关注服务号
回答成功
知道了
扫码关注智猩猩服务号登录
请使用微信扫描二维码
扫描二维码分享给微信好友
您已订阅成功,有新课程,我们将第一时间提醒您。
知道了
发送提问成功
回答可在
“我的——我的提问”中查看
知道了
失败
欢迎来智东西
关注我们
智东西
车东西
芯东西
智猩猩
0
0
Some/IP如何应用于面向服务架构SOA架构开发
分类: 自动驾驶
2022-04-23 09:02:29

在以CAN总线为主的车载网络中,通信过程是面向信号的(除了诊断通信之外),这是一种根据发送者需求实现的通信过程,当发送者发现信号的值变化了,或者发送周期到了,就会发送信息,而不考虑接收者是否有需求。

SOME/IP则不同,它是在接收方有需求的时候才发送,这种方法的优点在于总线上不会出现过多不必要的数据,从而降低负载。基于经典信号(例如 CAN)的通信 - 不足以进行更复杂的数据通信和控制。高度计算密集型 ECU可以在需要时向其他 ECU 提供所需的情报。

以太网作为车载网络的出现是基于经典信号+动态合约+带宽的通信形式。可以使用以太网处理具有方法Methods和事件Events的复杂服务接口,使用 TCP/UDP、IP 的面向服务的中间件协议为车辆增加新的功能和特性,集成新功能,对现有功能实现的改动最小,减少了复杂现代架构中静态定义接口和数据交换的问题,使车辆成为高度连接和数字世界的一部分。

对于SOA来讲,由于采用了先进的以太网格式,以太网数据传输服务可以由Server和Client两个部分共同完成,因此在进行数据传输之前,需要准备一系列的工作来确认Server和Client之间是否已建立网络连接。其次,Client还要询问Server能否提供所需的服务,满足数据传输需求,并对服务的Event进行订阅。这些工作都是通过SOME/IP服务发现(Service Discovery)实现的。服务是SOME/IP的最核心的一个概念,属于会话层的协议。

总体说来,使用SOME/IP具有如下特点:

  • 采用交换式以太网:通过几个交换机可连接几十个节点,启动时各节点不同步,传输帧延迟小于几毫秒;

  • 一个节点可以托管多个不同服务的客户端并提供多种服务,服务总数从几十到几百不等;

  • 一个节点请求提供服务的一小部分(最多几十个),节点可能需要订阅服务才能提供自己的服务;

  • 服务可能不会一直被使用和提供:比如模式变化、部分联网等场景;

基于SOME/ IP可扩展面向服务的中间件

事件驱动的 SOA:事件与服务相遇

PDU 路由组管理需要管理启用到禁用的套接字PDU 路由,SOME/IP - 套接字适配器 [SoAD] - AUTOSAR 模型构建块,可用于通用上层支持SOME/IP中的服务发现。

SOME/IP SD报文也是一种SOME/IP的数据报文,是在SOME/IP数据报文的前提上进行了扩展需求,增加了Entry、Option等字段;Entries用于同步服务实例的状态和发布/订阅的管理,Options用于传输Entries的附加信息。

Type = 0x00 encodes “FindService”

Type = 0x01 encodes “OfferService” And“StopOfferService”

Type = 0x06 encodes “SubscribeEventGroup”And “StopSubscribeEventGroup”

Type = 0x07 encodes“SubscribeEventGroupAck” And “StopSubscribeEventGroupNack”

Type = 0x02, 0x03, 0x04, 0x05 not defined

SOME/IP SD数据报文的ServiceID(0xFFFF)、MethodID(0x8100)、Request ID(0x0000)、ProtocolVersion(0x01)、Interface Version(0x01)、MessageType(0x02)、ReturnCode(0x00)等等属性都是一个固定值。

SOME/IP协议格式

从启用禁用到整个套接字的 PDU 路由,SOME/IP消息由报头header和有效负载Payload组成。

  • 消息ID:服务ID和事件/方法ID的组合

  • 长度Length:包含从请求ID到SOME/IP消息结束的长度(以字节为单位)

  • 请求ID:允许提供者和订阅者区分同一方法、事件、getter或setter的多个并行使用

  • 协议版本:包含SOME/IP协议版本的8位字段

  • 接口版本:包含服务接口主要版本的8位字段

  • 消息类型:用于区分消息类型

  • 返回码:用于指示请求是否已成功处理。

AP平台的方法论作为CP平台的扩展,其引入了新的概念,AP平台软件的实例是在进程的上下文中执行。AP平台引入了“机器”(Machine)的概念,“机器”是虚拟化的ECU一个可以部署软件的实体。

在AUTOSAR架构中,SOME/IP-SD模块位于AUTOSAR BSW Mode Managermodule(BswM)和AUTOSAR SocketAdaptor module (SoAd)之间。BswM模块提供了通用模式请求和服务请求之间的连接。SoAd模块则处理以太网堆栈和Sd模块之间的服务请求。通过配置SoAd中的SocketConnection表,可以接收其他ECU的Sd模块发来的单播和多播报文。用于 SOME/IP 的套接字适配器、COM 和 RTE,而SD则拥有自己的模块。

SoAd 层支持通过 TCP/IP 网络进行基于 PDU 的通信。AUTOSAR I-PDU 映射到由 SoAd 配置和维护的套接字连接。要为多个 I-PDU 使用套接字连接,可以在每个 I-PDU 前面添加 SoAd PDU 标头。

SOME/IP的三个原始接口服务

AP平台是一个面向服务的软件架构(SOA),基于AP平台的软件开发首先需要进行服务接口的设计。服务接口可以由事件(Events)、方法(Methods)和字段(Fields)组成是生成软件组件头文件的基础。

1、方法(Methods)

调用或引用一个进程/函数/子程序,通常由Client发起,并由Server答复。Request是最常见的一种Method,由Client向Server请求数据;Response是Request的结果,由Server答复Client的Request。而Method Fire & Forget方式,只Client向Server发起,但Server对该请求不回复。

2、事件(Events)

一个单向的数据传输,只能是on change类型,用于Server主动向订阅(Subscribe)了相关服务的Client发布(Publish)信息。

3、字段(Fields)

由以下三项内容构成:

Notifier:通知,Server的Client订阅了服务后第一时间主动向其发送数据。

Getter:获取,由Client向Server请求数据。

Setter:设置,由Client修改Server的数据。

这里需要注意,NOTIFICATION分为Event和Field 两类,这两类通知都需要首先使用SOME/IP-SD(Service Discovery)来进行服务订阅,然后才能发布通知。

client可以通过SOME/IP-SD来实现服务发现过程,从而得以远程调用server提供的服务,或者订阅server发布的内容。区别在于,Event是某一时刻的快照,只是事件通知,而Field除了事件通知之外,还具有Getter和Setter的功能,即对信息进行读写的操作。

高级自动驾驶架构下的SOME/IP的通信机制

如下图显示了一种面向服务中典型的基于SOME/IP进行有效通信的连接架构,就智能驾驶来讲,各ECU端均通过交换机Switch向相关联的端口发送相应的请求端口号及服务内容。

这里我们举一个例子,假如需要实现自车安全停车(Safe Stop)逻辑,同时通过抬头显示单元进行显示。这里假如车辆控制单元VDC进行车辆前端感知、融合及后端规控,那么整个控制过程则需要首先由自动驾驶域控制器作为客户端,则需要首先由请求端Vehicle Contol通过SOME/IP封装的相应的服务端口及地址。中央控制器单元通过采用定义三种不服务接口(其中Event Group包含垂直方向数据,Fields包含障碍物类型数据,Methods包含通知/获取/设置等相关内容信息)向对应的端口Port(如摄像头端口Port=30501,雷达端口Port=30501,通常传感器使用相同的端口,通过不同的IP地址加以区分)和IP地址(IP=192.168.10.100,IP=192.168.10.101)发起请求传感器检测的目标数据服务Provided ServiceInterface。传感器作为服务端接收到该请求后,将带有Event Group属性的信息(比如Distance_Data、Object_Event_Grp_1)和Fields属性的信息(比如Front_Distance(Notifier_1)、Rear_Distance(Notifier_2)、Object_New_Position、Object_New_Blurred)回传给域控制器。

另一个例子,比如订阅机制中,高精地图Server向外提供高精地图数据(Offer Service),ADAS控制单元想要订阅其车道线相关信息(Subscribe EventGroup),高精地图Server同意其订阅请求(Subscribe EventGroup Ack),而后Server开始发布高精地图的车道线数据给ADAS控制单元。

再如,请求与响应机制,HU想要获取DVR内存信息,此时DVR是Server,HU是Client,由HU向DVR发出request,DVR收到请求后,根据自身当前状态,回复Response。