ip报文格式_基于Speedgoat的SOME/IP协议实现

2dcc721b0fed53b0590d904dc5a00798.png

   载以太网已成为汽车行业关注的焦点。车企和供应商厂商都在硬件、软件甚至系统平台上打响了争夺战,针对于车载以太网——SOME/IP协议,蔚赫提供自研SOME/IP库+Speedgoat+Simulink解决方案,一秒实现SOME/IP协议,解决您的烦恼。

2dcc721b0fed53b0590d904dc5a00798.png SOME/IP 报文在车载以太网中的作用是什么? c48e51338a0cddd58d473de0b2a97332.gif

      SOME/IP  是车载以太网通信引入的一个概念。以CAN总线为主的车载网络,当ECU发送节点发现某信号值变化了,或者发送周期到了,就会发送CAN报文,以这种方式发送数据,总线上可能存在不必要的数据。而SOME/IP是面向服务的,它是在接收方有需求的时候才发送,这种方法的优点在于总线上不会出现过多不必要的数据,从而降低负载。如在车载网络中,某个ECU有时会需要调用实现在其他ECU上的服务,而SOME/IP就是实现这种远程服务调用的接口,如图1所示。     

84ebbe866b16b670ae260491f59fbb0e.png

  图1 SOME/IP使用原理

详细以太网报文概念:车载以太网通信的“套娃游戏”

如何通过Speedgoat实现收发SOME/IP报文? c48e51338a0cddd58d473de0b2a97332.gif0 1硬件环境(Speedgoat)介绍

    Speedgoat版本:Baseline real-time target machine - S(基本版实时目标机)

    该版本目标机支持1路Intel千兆以太网用于上位机通讯及XCP Slave、2路千兆Ethernet端口支持real-time UDP 及 EtherCAT Master通讯,电源采用9-36V直流供电和额外的交流电适配器。无风扇设计。携带方便,故作为本次测试机。

    若需扩展Ethernet端口,Speedgoat提供扩展模块。

    扩展模块:IO712、IO713

    IO712:千兆Ethernet I/O模块,提供2个端口用于与其它节点通讯,支持的协议包括EtherCAT Master,Real-time UDP或Raw Ethernet。

    IO713:千兆Ethernet I/O模块,提供4个端口用于与其它节点通讯,支持的协议包括EtherCAT Master,Real-time UDP或Raw Ethernet。

d3c50dd800a00d1b0258b26ef3592042.png

23ed3d63ec670f12ff2820b9e597a0f6.png

02

模块介绍

基于MATLAB/SIMULINK,通过使用蔚赫封装的SOME/IP库,即可实现SOME/IP报文发送及接收,该库提供自动及手动发送两种模式,手动发送模式下,首先需要确认报文类型(SOME/IP或SOME/IP-SD),然后需要在对应PACKING模块中填写报文相关信息,若发送的报文较多,则使用自动打包模块库,导入报文数据库文件,其数据库格式有FIBEX(FIBEX4.1或更高版本)和ARXML(AUTOSAR4.1或更高版本),选择需要的报文数据,一键发送。

本次实例使用的模块:

  • SOME/IP PACKING 模块

5d19aae27c871060500a530a49ad44c9.png

图2 SOME/IP PACK模块

该模块功能是需要传输的数据信息以SOME/IP报文格式进行封装,输入为SOME/IP数据场数据Data,输出为SOME/IP报文(即UDP报文的数据场),模块选项则定义了相关参数:Service ID、Method ID、Length、ClientID、SessionID、Protocol Version、InterfaceVersion、Message Type、ReturnCode等信息。

  • SOME/IP-SD PACKING 模块

bd4f6f4832997c74d3c87fa6f1e8c731.png

图3 SOME/IP-SD PACK模块

该模块功能是需要传输的数据信息以SOME/IP-SD报文格式进行封装,输入为SOME/IP-SD服务条目及选项,输出为SOME/IP-SD报文(即UDP报文的数据场),模块选项则定义了服务条目、服务相关信息、选项条目、选项相关参数等信息。

  • BYTE PACKING模块

18b5347a91c86486fded7925c27f76ea.png

图4 BYTE PACK模块

此模块用于将原始数据转换为UDP发送模块可用的数据类型。

  • UDP Configure模块

35632de1a9f68cb43aba0b348ab34913.png

  图5 UDPConfigure模块

该模块为UDP配置模块,主要参数为本地IP地址、子网掩码、网关、以及网卡信息(PCI BUS、Slot、Function)

  • UDP Send模块(也可为TCP Send,此次使用UDP)

2185a1c9bdaf13c3550fc929ed11c23d.png

图6 UDP Send模块

UDP发送模块功能为发送UDP报文,主要参数为:本地IP地址、本地端口号、目标IP地址、目标端口号、采样时间。输入参数为需要发送的数据DATA、以及该DATA数据的长度。

  • UDP Receive模块(也可为TCP Receive,此次使用UDP)

bb4e2f060d0d55a86c029491c4cc0955.png

图7 UDP Receive模块

UDP接收模块功能为接收Client/Server端发送过来的数据、主要参数为:本地IP地址、本地端口号、接收数据长度、目标IP地址、采样时间等。该模块有两个输出,Data为UDP报文数据,Length为该报文长度。

  •  Width模块

0ec1e9323ec4138416cc429384eb70bc.png

图8 Width模块

Width模块功能为输出指定信号的宽度。

0 3 SOME/IP 实现流程图(基于SOME/IP的摄像头协议ISO 17215)

以SOMP/IP摄像头协议为例,从发现Camera到视频流开始的示例序列,如图9:

  • 由ECU(客户端)向摄像头(服务端)发送发现服务报文

  • 摄像头收到请求之后,检测自身是否支持该服务,若支持则提供该服务给ECU

  • ECU获取到该服务之后,向摄像头发送获取摄像头数据库请求

  • 摄像头收到请求后,将自身数据库反馈给ECU

  • ECU向摄像头请求获取摄像头状态信息

  • 摄像头反馈此时状态

  • ECU请求设置视频格式

  • 摄像头反馈响应状态

  • ECU请求订阅视频流

  • 摄像头反馈是否订阅成功

  • 摄像头开始向ECU发送主视频流

0ee561396b45b6198472f12f2d3a68d5.png

图9 从发现Camera到接收视频流开始流程图

0 4 具体模型实例

上述流程我们可以通过Simulink仿真客户端及服务端(即ECU和摄像头)实现。由于此次仿真不涉及实际控制器,我们此次所使用SOME/IP报文均为手动填写,报文数据满足SOME/IP报文格式,数据场不带表任何实际意义。

3.1

模型结构

Simulink中,我们建立两个子系统分别仿真ECU及摄像头,如图10所示:

666d84064aec93a9740e7ae9fb36f1ed.png

图10 客户端服务端仿真

Client及Server使用UDP格式进行数据传输。分别拥有Send子系统、Receive子系统,Send子系统和Receive子系统内部,分别为具体的报文实现。(Server同Client一样)。如图11所示:

cef0996a8086bbfcbcfab9a4ef8c2ea1.pngfac20cff55b7cc97ebca29578db54c4b.png

图11 具体报文实现

3.2

报文SEND及RECEIVE具体实现

1)客户端仿真

仿真客户端(ECU)节点,客户端有两个需求:

1.客户端可以发送任意请求报文

2.对接收到的服务端报文进行解析

       Send子系统,以Findservice为例,通过使用SOME/IP-SD PACK模块将源数据打包,并输入该模块相关参数(参数如上图所示)。通过UDP SEND模块将该帧报文发送出去,即可实现Findservice。具体模型如图12所示:

86a5650543d07fb42d398a3b7477f24a.png

图12 UDP SEND SOME/IP报文实现

    Receive子系统,以解析offerservice为例,通过使用Recive UDP模块及UNPACK模块将接收到的UDP报文进行解包,而后对解包出来的数据按SOME/IP协议进行解析,输出SOME/IP报文中的各项参数。如图13所示:

529716ea482a42c73c66fb40517a9e45.png

图13 UDP Receive SOME/IP报文解析实现

2)服务端仿真

仿真服务端(摄像头)节点,服务端有两个需求:

1.解析客户端的请求报文

2.根据客户端的请求,反馈相应的报文

服务端与客户端不同之处在于,服务端需要根据客户端的请求,回复相关报文。首先,我们需要先解析客户端发送的报文数据,确认客户端的意图之后,我们控制服务端回复相关报文,我们通过图14模型结构来实现:若收到FindService服务请求,检测服务端是否有相关服务报文,若有则提供该服务,若无,则无响应(该策略供测试使用,无实际意义)

9ab89c58ae9b17581cdf18a04da9aadf.png

图14 服务端响应客户端报文实现

       SERVER中SOME/IP SEND子系统和RECEIVE子系统均和Client SEND子系统和RECEIVE子系统相同。                   

0 3

报文监控

 Simulink Real-Time Explorer插件可以与目标计算机和在目标计算机上运行的实时应用程序进行交互,它可以监视和跟踪信号,调整参数,制作UI界面,以及导出和运行Explorer配置作为独立的可执行文件。此次使用此插件监控数据。

 我们将模型编译并下载到Speedgoat中,在Panel界面中拖入相关控件即可实现报文数据监控。

e4140fcb9f96a39621a78fe65c00c2b6.png

图15 SOME/IP报文监控

0 5小结

至此我们已经通过Simulink与Speedgoat仿真了ECU和摄像头基于SOME/IP协议的通信过程。若想详细了解如何使用Speedgoat实现SOME/IP协议,请联系蔚赫信息。

基于Speedgoat的SOMP/IP协议有哪些优点:

  • SOME/IP报文收发自动化

  • Simulink模块库功能强大、简单易用

  • 可支持多种通信协议

  • 蔚赫自研的SOME/IP库使用简单、高效

除此之外,Simulink软件结合Speedgoat硬件不仅能完美实现基于SOME/IP的以太网通信,还支持对ECU控制算法验证,以及ECU硬件在环测试(ECU功能测试),在整个V型开发流程中,无论您处于什么阶段、无论您是ADAS控制器或其他控制器,都可借助Matlab/Simulink 与 Speedgoat 来完成您的测试需求。

往期文章回顾:

1.自动化诊断测试工具Vader

2.使用FIRE2实现车载以太网通信

3.基于Speedgoat实时机的倒立摆实验系统

4.当Vehicle Spy遇到MATLAB/Simulink模型

5.车载以太网通信的“套娃游戏6.高效稳定的网络管理测试软件-Vinner
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值