车载以太网介绍连载——SOME/IP

发布于 2022-12-29 11:55
浏览
0收藏

本文是第六篇,介绍一下SOME/IP。

1、SOME/IP的特点

车载以太网介绍连载——SOME/IP-汽车开发者社区

SOME/IP (Scalable service-Oriented Middle ware over IP) 是车载以太网通信引入的一个概念,位于OSI 7层模型的第4层之上。在以CAN总线为主的车载网络中,通信过程是面向信号的(除了诊断通信之外),这是一种根据发送者需求实现的通信过程,当发送者发现信号的值变化了,或者发送周期到了,就会发送信息,而不考虑接收者是否有需求。而SOME/IP则不同,它是在接收方有需求的时候才发送,这种方法的优点在于总线上不会出现过多不必要的数据,从而降低负载。


SOME/IP主要特性:

1、 基于服务的通信方式。

2、 占用空间小。

3、 与AUTOSAR兼容(其他中间件不兼容)。

4、 可伸缩性能好—小平台,大平台都能使用。

5、 兼容性能好。

车载以太网介绍连载——SOME/IP-汽车开发者社区

SOME/IP消息头的格式

除了最下面的Payload之外都属于SOME/IP的header, Message Type [8 Bit],它有以下几种取值:

消息类型

消息名称

目的

0x00

REQUEST

期待回应的请求消息

0x01

REQUEST_NO_RETURN

不需要回应的请求消息(Fire and Forget)

0x02

NOTIFICATION

通告请求(即订阅消息),不期望回应

0x80

RESPONSE

回复消息(对请求消息的回应,或者订阅后的消息)

0x81

ERROR

RESPONSE无法正确交付时发送的消息

2、SOME/IP的服务和RPC机制

车载以太网介绍连载——SOME/IP-汽车开发者社区

SOME/IP-SD是一种特殊的SOME/IP格式,基于服务的通信模式是SOME/IP的关键特性,SOME/IP-SD提供了两种动态发现服务的机制。一种是Offer Service ,由server向网络上的小伙伴告知它所提供的服务;另一种是Find Service ,由client向别人请求可用的服务。

SOME/IP-SD是一种特殊的SOME/IP格式,它对SOME/IP-SD报文中的Payload进行了定义和实现。而Message ID字段则是固定的0xFF FF 81 00。

SOME/IP-SD提供了两种动态发现服务的机制。一种是Offer Service ,由server向网络上的小伙伴告知它所提供的服务;另一种是Find Service ,由client向别人请求可用的服务。


一、请求/响应(R/R)通信

车载以太网介绍连载——SOME/IP-汽车开发者社区

  • REQUEST,REQUEST_NO_RETURN,RESPONSE属于同一类远程过程调用方法,当client有需求的时候,发送一个request消息,server根据这个消息类型(REQUEST或REQUEST_NO_RETURN)来决定是否发送response消息。、


二、通知事件(Notification Event)

车载以太网介绍连载——SOME/IP-汽车开发者社区

  • NOTIFICATION属于事件通知类的服务,首先由client向server订阅服务内容,然后server向client自动发布服务内容。


三、焚烧 & 忘记(F & F)通信

车载以太网介绍连载——SOME/IP-汽车开发者社区

  • 客户端向服务器调用方法,无需服务器响应消息的请求称为fire&forget。


四、域(Field)

车载以太网介绍连载——SOME/IP-汽车开发者社区

  • NOTIFICATION又分为Event和Field 两类,这两类通知都需要首先使用SOME/IP-SD(Service Discovery)来进行服务订阅,然后才能发布通知。区别在于,Event是某一时刻的快照,只是事件通知,而Field除了事件通知之外,还具有Getter和Setter的功能,即对信息进行读写的操作。

3、管理整个网络中服务的状态

通信机制

SOME/IP通过以太网提供面向服务的通讯,采用SOME/IP-Service Discovery定位服务实例,并检测服务的运行状态,同时发布订阅处理功能。

车载以太网介绍连载——SOME/IP-汽车开发者社区

Service Discovery的作用

客户端收到需要的服务,会发送订阅报文,服务端给出订阅ACK后,开始发送Event。所有需要Event或Notification Event的客户端必须在运行时间中利用SOME/IP-SD在某个server上注册。

车载以太网介绍连载——SOME/IP-汽车开发者社区

订阅与Event发送

1.服务发现通信行为

对每一个服务实例或事件组,服务发现在发送条目时必须至少包含初始等待阶段、重复阶段和主阶段。

2.初始等待阶段

随机等待一段时间后发送报文(发现服务和提供服务条目)。

3.重复阶段

服务发现实现时必须在重复阶段等待一段时间,且发送的条目数量有限制。如果发送的条目数量设置为0,则必须跳过重复阶段。在初始等待阶段之后服务实例进入主阶段。

4.主阶段

在进入主阶段之后,必须等待一段时间后发送第一条报文,循环发送提供服务报文。

当某ECU的服务实例停止服务时,必须发送停止提供服务条目。服务端的状态机如下图所示:

车载以太网介绍连载——SOME/IP-汽车开发者社区

服务端的状态机


客户端在Down阶段如收到提供服务条目,可内部调用服务请求;如未收到提供服务条目,则进入初始等待阶段等待一段时间后进入重复阶段发送报文,接收到提供服务条目,进入主阶段。当收到服务实例停止服务时,服务停止,仍停留在主阶段。客户端的状态机如下图所示:

车载以太网介绍连载——SOME/IP-汽车开发者社区

客户端的状态机

4、SOME/IP与AUTOSAR

在AUTOSAR架构中,SOME/IP-SD模块位于AUTOSAR BSW Mode Manager module(BswM)和AUTOSAR Socket Adaptor module (SoAd)之间。BswM模块提供了通用模式请求和服务请求之间的连接。SoAd模块则处理以太网堆栈和SD模块之间的服务请求。通过配置SoAd中的Socket Connection表,可以接收其他ECU的SD模块发来的单播和多播报文。

车载以太网介绍连载——SOME/IP-汽车开发者社区

AUTOSAR SOME/IP-SD模块交互


前期服务发现机制在汽车行业的应用还有一些争议。主要是车载网络和功能都是偏静态,不容使用服务发现功能。但是未来面向SOA的EEA架构中,SOME/IP会是是其中一种方式。


这里列出了几个可能使用到SOME/IP-SD的情况:

1、汽车启动时,汽车启动是车载系统中比较复杂的任务。每个ECU在启动时的表现都不同,带有的启动慢,有点启动快。有的可能低电压3.5V就能起来,有的可能8V都不够。所以在汽车启动,各个功能所花费的时间也不一样。如果不使用服务发现协议,确定一个功能能不能就绪,就需要根据最长启动的功能或者ECU来定义。如果使用服务发现协议,那么每个功能在准备好,就可以宣布其可用性,通常可以提前提供用户功能。


2、客户变更时。现在每个车型主机厂都会提供很多不同的配置。大部分都是通过静态配置来确定车中ECU功能的可用性。但是通过服务发现协议,ECU就可以自己建立车辆的可用功能列表。汽车越复杂,SD的优势就越大。


3、事件传输失败时。如果没有特殊的机制,发送方很难察觉接收消息是否失败,如果没有消息反馈,ECU会认为没有参数变更。如果同SD协议,当某个ECU不提供功能时,ECU会立即掌握,这样更容易发现通信故障。


4、局部网络保证能源效率时。比如客户到达目的地且停放好了汽车,这时仅仅想使用免提系统,那么发动机控制系统和传动系统是不需要启动的。这个例子说明,在变化的环境中,工作的ECU必须知道那些功能可用,那些不可用。如果没有SD协议,可以使用超时来实现上述目的。但是如果用SD,肯定更快一些。


文章转载自公众号:智车Robot

分类
收藏
回复
举报
回复
相关推荐