AUTOSAR-SD篇

1 概述

        服务发现模块的主要任务是管理在车内通信中被称为服务的功能实体的可用性,以及控制事件消息的发送行为。只允许向需要这些事件消息的接收器发送事件消息(发布/订阅)。

     这里描述的解决方案也被称为SOME/IP-SD(基于IP -服务发现的可扩展的面向服务的MiddlewarE)。通过使用服务发现,不同的ECUs可以提供服务实例,并在车辆网络中找到可用的服务实例。ECU可以停止提供它以前提供的服务实例。稍后找到这样的服务实例将保持未应答。服务实例是由其服务接口定义的服务的单一实现。

2 报文格式

SOME/IP-SD消息格式

 Message ID:固定为0xFFFF8100
 Client-ID:设置为0x0000,因为只存在一个SOME/IP-SD实例
 Session-ID:并根据某些/IP要求处理它,每发出一个SOME/IP-SD报文,Session-ID加1,只能从  1 开始,不能设置为0。SOME/IP-SD会话ID处理是根据“通信关系”完成的,即组播和单播是对等的
  Protocol Version :固定为0x01,

  Interface Version :固定为0x01,

  Message Type :固定为0x02,

  Return Code :固定为0x00

2.1 SOME/IP-SD 头部

    Flags: 使用Flags字段,将启动SOME/IP-SD标头。它用于信号显示全局服务发现信息,其中包括当前上次重新启动的状态以及接收单播消息的能力。

 

       该字段第0位表示"Reboot Flag"。SOME/IP-SD首部的重启标志应该设置为1,直到SOME/IP首部中的Session-ID绕回0(wraps around),重新从1开始。

2.2 Entries Array

       当SOME/IP-SD找到或提供服务实例或处理订阅时,这将通过所谓的条目来完成,这些条目将在SOME/IP-SD消息的条目数组中传输。

     协议中有两种条目:一种服务条目,另一种事件组条目。

2.2.1 服务条目

服务条目有16个字节大小,包含的字段如下所示:

类型字段[uint8]:FindService (0x00), OfferService (0x01) and StopOfferService (0x01)
第一个选项运行索引[uint8]:代表选项排列中第一个选项索引位置
第二个选项运行索引[uint8]:代表选项排列中第二个选项索引位置
选项1的数量[uint4]:描述第一个选项运行使用的选项数量
选项2的数量[uint4]: 描述第二个选项运行使用的选项数量
Service-ID[uint16]: 描述此条目所关注的服务或服务实例的服务ID。
Instance ID[uint16]: 描述此条目所涉及的服务实例的服务实例ID,如果表示一个服务的所有服务实例,则设置为0xFFFF
Major Version[uint8]: 服务(实例)的主版本
TTL[uint24]: 描述条目的生命周期,单位为秒
Minor Version[uint32]: 服务的次版本

2.2.2 事件条目

类型字段[uint8]:Subscribe (0x06), StopSubscribeEventgroup (0x06),
SubscribeAck (0x07) and SubscribeEventgroupNack (0x07).
第一个选项运行索引[uint8]:代表选项排列中第一个选项索引位置
第二个选项运行索引[uint8]:代表选项排列中第二个选项索引位置
选项1的数量[uint4]:描述第一个选项运行使用的选项数量。0表示没有选项
选项2的数量[uint4]: 描述第二个选项运行使用的选项数量。0表示没有选项
Service-ID[uint16]: 描述此条目所关注的服务或服务实例的服务ID。
Instance ID[uint16]: 描述此条目所涉及的服务实例的服务实例ID,如果表示一个服务的所有服务实例,则设置为0xFFFF
Major Version[uint8]: 编码这个eventgroup所属的服务实例的主版本。
TTL[uint24]: 描述条目的生命周期,以秒为单位
保留字段[uint12]: 设置成0x000
Counter[uint4]: 用于区分同一订阅服务器的相同订阅事件组。如果不使用,设置为0x0。
Evntgroup ID[uint16]: 传输事件组的ID

2.3 Options Array

选项数组是服务发现消息的最后一部分。选项数组中的选项包含附加信息。

2.3.1 IPv4 Endpoint Option

IPv4端口Option的格式如下:

Length字段,2个byte,应设置为0x0009
Type字段,1个byte,应设置为0x04
Discardable Flag,1个bit,应设置为0
Bit1到Bit7是保留位,全部为0
IPv4-Address字段,4个byte,服务实例所在的主机的IPv4地址
Reserved,1个byte,设置为0x00
Transport Protocol字段,1个byte,传输层协议,0x06是TCP,0x11是UDP
Transport Protocol Port Number,2个byte,传输层端口

2.3.2 IPv6 Endpoint Option

IPv6端口Option的格式如下:

Length字段,2个byte,应设置为0x0015
Type字段,1个byte,应设置为0x06
Discardable Flag,1个bit,应设置为0
Bit1到Bit7是保留位,全部为0
IPv6-Address,16个byte,服务实例所在的主机的IPv6地址
Reserved,1个byte,设置为0x00
Transport Protocol,1个byte,传输层协议,0x06是TCP,0x11是UDP
Transport Protocol Port Number,2个byte,传输层端口

3 SD服务发现行为

SD通信主要涉及到3类报文:Find Service、Offer Service和Subscribe报文。

服务端和客户端的通信行为包含以下几个阶段:

3.1 Server Services

Down Phase
在这个阶段,Service是不可用的,即服务端无法提供服务。

Initial Wait Phase
当服务准备完毕(Available)后,进入此阶段;

如果此阶段收到Find Service报文,服务端忽略此消息,不做任何处理;

如果服务不可用了,将返回进入Down Phase;

此阶段需要定义时间参数INITIAL_DELAY_Min和INITIAL_DELAY_Max,初始化时间取其之间的随机值,当定时器超时后,发送第一帧Offer Service,标志着进入下一个阶段。

Repetition Phase
为了让客户端快速找到有哪些Service,此阶段重复发送Offer Service,重复次数由REPETITIONS_MAX决定;

发送间隔以REPETITIONS_BASE_DELAY为基本时间,每发送一次,间隔是前一间隔的2倍;

如果收到某客户端的Find Service,不影响当前阶段的发送计数和计时,延迟一定时间(REQUEST_RESPONSE_DELAY)后,单独发送单播Offer Service给服务请求端;

如果收到SubscribeEventgroup后,发送单播Ack/Nack,启动此订阅Entry的TTL计时器;

如果收到StopSubscribeEventgroup后,停止此订阅Entry的TTL计时器;

如果服务不可用,离开此阶段进入Down Phase,并发送StopOfferService通知所有客户端。

Main Phase
此阶段将周期性发送Offer Service,周期时间为CYCLIC_OFFER_DELAY;

如果收到某客户端的Find Service,不影响发送计数,延迟一定时间(REQUEST_RESPONSE_DELAY)后,发送单播Offer Service给服务请求端;

如果收到SubscribeEventgroup后,发送单播Ack/Nack,启动此订阅Entry的TTL计时器;

收到StopSubscribeEventgroup后,停止此订阅Entry的TTL计时器;

如果服务不可用,离开此阶段进入Down Phase,并发送StopOfferService

3.2 Client Services

Down Phase
服务未被应用请求;

收到Offer Service,存储当前服务实例状态,启动TTL计时,此时服务若被应用请求,直接进入Main Phase。

Initial Wait Phase
服务被请求后,进入此阶段;

等待INITIAL_DELAY时间(最大和最小值之间的随机值);

如果此时收到Offer Service,则取消计时器,直接进入Main Phase;

如果服务请求被释放,进入Down Phase;

计时器超时后,发送第一个Find Service,进入下一阶段。

Repetition Phase
重复发送Find service,重复次数由REPETITIONS_MAX决定;

发送间隔以REPETITIONS_BASE_DELAY为基时间,每发送一次间隔加倍;

收到Offer Service,停止发送计数和计时,立即进入Main Phase;触发发送SubscribeEventgroup(延迟一定时间);

如果服务请求被释放,进入Down Phase;若有订阅,则发送StopSubscribeEventgroup。

Main Phase
不再周期发送Find Service;

收到Offer Service,触发发送SubscribeEventgroup(延迟一定时间);

如果收到StopOfferService,则停止所有计时器;

如果服务请求被释放,进入Down Phase;若有订阅,则发送StopSubscribeEventgro

  • 21
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
autosar-eth是指AUTOSAR协会下的以太网标准。AUTOSAR是汽车电子系统开发领域的一个全球化合作网络,旨在实现汽车电子系统的规范化和标准化。而autosar-eth则是AUTOSAR协会为汽车电子系统中的以太网通信提供的一个标准化方案。 autosar-eth主要涉及汽车电子系统中的以太网通信协议、硬件接口和软件架构。通过使用autosar-eth,不同供应商提供的汽车电子元件可以在同一汽车电子系统中进行无缝集成和交互。这个方案的目标是提供高效的以太网通信能力,以满足现代汽车电子系统对高带宽数据传输和实时通信的需求。 autosar-eth的主要特点包括: 1. 实时性能:autosar-eth提供了一种实时性能良好的以太网通信方案,可以满足汽车电子系统中实时数据传输的要求。 2. 可扩展性:autosar-eth支持复杂的网络拓扑结构和多种通信协议,能够适应不同规模和复杂程度的汽车电子系统。 3. 安全性:autosar-eth内置了安全机制,可以保护汽车电子系统中的数据传输和通信安全,防止恶意攻击和未授权访问。 4. 标准化:autosar-eth遵循AUTOSAR协会的标准,能够实现不同供应商之间的互操作性,促进汽车电子系统的标准化和可替代性。 总而言之,autosar-eth为汽车电子系统中的以太网通信提供了一种标准化、实时性好、安全可靠的解决方案,为汽车电子系统的开发、集成和维护提供了便利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值