大数跨境

SOME/IP SD的通信行为

SOME/IP SD的通信行为 怿星科技
2020-01-17
3
导读:你用与不用,SD一直在那里。简单车载网络可以考虑不使用SD,原因是完全发挥不了SD的优势;而车载网络越复杂,越能体现SD的强大优势。

亲们,我们曾经有篇文章SOME/IP有那么难吗?,详细讲了SOME/IP SD的基本概念、格式等内容,这次我们聊一聊SD的通信行为。


经常会有人问:“车载以太网中只使用SOME/IP,不用SD可不可以?”回答这个问题之前我们先看下SD的优点。


上电启动时,车内各ECU的启动电压和启动时间各不相同,ECU通过SD就可以灵活的官宣其Service的可用状态;

车辆变型(可以是同款车型的不同配置,或者是车型沿用)时,可以灵活的适应功能/配置的变化,减少前期的配置工作;

错误处理,当提供的Service出现问题时,可以通过SD即刻了解Service的不可用状态,接收方就可以做出相应的处理了;

能源效率,需要的时候才会提供/订阅服务,减少能量消耗。


总结一下就是:你用与不用,SD一直在那里。简单车载网络可以考虑不使用SD,原因是完全发挥不了SD的优势;而车载网络越复杂,越能体现SD的强大优势。


SD通信主要涉及到3类报文:Find ServiceOffer ServiceSubscribe报文。


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





  服务端的通信行为  

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


Initial Wait Phase

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

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

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

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


Repetition Phase

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

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

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

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

  • 如果收到StopSubscribeEventgroup后,停止此订阅EntryTTL计时器;

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


Main Phase

  • 此阶段将周期性发送OfferService,周期时间为CYCLIC_OFFER_DELAY;

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

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

  • 收到StopSubscribeEventgroup后,停止此订阅EntryTTL计时器;

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


服务端通信行为


服务端状态机转换图



  客户端的通信行为  


Down Phase

  • 服务未被应用请求;

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


Initial Wait Phase

  • 服务被请求后,进入此阶段;

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

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

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

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


客户端通信阶段(在Initial Phase收到offer service)


Repetition Phase

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

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

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

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


客户端通信阶段(在Repetition Phase收到offer service)


Main Phase

  • 不再周期发送Find Service;

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

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

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



客户端状态机转换图


SD的通信行为有些复杂,小编废了这么多口水,险些把自己绕晕,建议大家收藏呦,有需要可随时查阅~



相关精彩推荐:

SOME/IP有那么难吗?

新型汽车通信技术以太网100BASE-T1

汽车以太网测试之UpperTester

CAN总线测试与汽车以太网测试的区别

怿星公开课——两天搞定汽车以太网

1000M汽车以太网技术

汽车以太网对TCP/IP协议簇的应用

10M汽车以太网竟然是总线型的!




【声明】内容源于网络
0
0
怿星科技
让智能汽车研发更高效!
内容 428
粉丝 0
怿星科技 让智能汽车研发更高效!
总阅读795
粉丝0
内容428