车载以太网已成为汽车行业关注的焦点。车企和供应商厂商都在硬件、软件甚至系统平台上打响了争夺战,针对于车载以太网——SOME/IP协议,蔚赫提供自研SOME/IP库+Speedgoat+Simulink解决方案,一秒实现SOME/IP协议,解决您的烦恼。
SOME/IP 报文在车载以太网中的作用是什么?SOME/IP 是车载以太网通信引入的一个概念。以CAN总线为主的车载网络,当ECU发送节点发现某信号值变化了,或者发送周期到了,就会发送CAN报文,以这种方式发送数据,总线上可能存在不必要的数据。而SOME/IP是面向服务的,它是在接收方有需求的时候才发送,这种方法的优点在于总线上不会出现过多不必要的数据,从而降低负载。如在车载网络中,某个ECU有时会需要调用实现在其他ECU上的服务,而SOME/IP就是实现这种远程服务调用的接口,如图1所示。
图1 SOME/IP使用原理
详细以太网报文概念:车载以太网通信的“套娃游戏”
如何通过Speedgoat实现收发SOME/IP报文? 0 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。
02
模块介绍基于MATLAB/SIMULINK,通过使用蔚赫封装的SOME/IP库,即可实现SOME/IP报文发送及接收,该库提供自动及手动发送两种模式,手动发送模式下,首先需要确认报文类型(SOME/IP或SOME/IP-SD),然后需要在对应PACKING模块中填写报文相关信息,若发送的报文较多,则使用自动打包模块库,导入报文数据库文件,其数据库格式有FIBEX(FIBEX4.1或更高版本)和ARXML(AUTOSAR4.1或更高版本),选择需要的报文数据,一键发送。
本次实例使用的模块:
SOME/IP PACKING 模块
图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 模块
图3 SOME/IP-SD PACK模块
该模块功能是需要传输的数据信息以SOME/IP-SD报文格式进行封装,输入为SOME/IP-SD服务条目及选项,输出为SOME/IP-SD报文(即UDP报文的数据场),模块选项则定义了服务条目、服务相关信息、选项条目、选项相关参数等信息。
BYTE PACKING模块
图4 BYTE PACK模块
此模块用于将原始数据转换为UDP发送模块可用的数据类型。
UDP Configure模块
图5 UDPConfigure模块
该模块为UDP配置模块,主要参数为本地IP地址、子网掩码、网关、以及网卡信息(PCI BUS、Slot、Function)
UDP Send模块(也可为TCP Send,此次使用UDP)
图6 UDP Send模块
UDP发送模块功能为发送UDP报文,主要参数为:本地IP地址、本地端口号、目标IP地址、目标端口号、采样时间。输入参数为需要发送的数据DATA、以及该DATA数据的长度。
UDP Receive模块(也可为TCP Receive,此次使用UDP)
图7 UDP Receive模块
UDP接收模块功能为接收Client/Server端发送过来的数据、主要参数为:本地IP地址、本地端口号、接收数据长度、目标IP地址、采样时间等。该模块有两个输出,Data为UDP报文数据,Length为该报文长度。
Width模块
图8 Width模块
Width模块功能为输出指定信号的宽度。
0 3 SOME/IP 实现流程图(基于SOME/IP的摄像头协议ISO 17215)以SOMP/IP摄像头协议为例,从发现Camera到视频流开始的示例序列,如图9:
由ECU(客户端)向摄像头(服务端)发送发现服务报文
摄像头收到请求之后,检测自身是否支持该服务,若支持则提供该服务给ECU
ECU获取到该服务之后,向摄像头发送获取摄像头数据库请求
摄像头收到请求后,将自身数据库反馈给ECU
ECU向摄像头请求获取摄像头状态信息
摄像头反馈此时状态
ECU请求设置视频格式
摄像头反馈响应状态
ECU请求订阅视频流
摄像头反馈是否订阅成功
摄像头开始向ECU发送主视频流
图9 从发现Camera到接收视频流开始流程图
0 4 具体模型实例上述流程我们可以通过Simulink仿真客户端及服务端(即ECU和摄像头)实现。由于此次仿真不涉及实际控制器,我们此次所使用SOME/IP报文均为手动填写,报文数据满足SOME/IP报文格式,数据场不带表任何实际意义。
3.1模型结构
Simulink中,我们建立两个子系统分别仿真ECU及摄像头,如图10所示:
图10 客户端服务端仿真
Client及Server使用UDP格式进行数据传输。分别拥有Send子系统、Receive子系统,Send子系统和Receive子系统内部,分别为具体的报文实现。(Server同Client一样)。如图11所示:
图11 具体报文实现
3.2报文SEND及RECEIVE具体实现
1)客户端仿真
仿真客户端(ECU)节点,客户端有两个需求:
1.客户端可以发送任意请求报文
2.对接收到的服务端报文进行解析
Send子系统,以Findservice为例,通过使用SOME/IP-SD PACK模块将源数据打包,并输入该模块相关参数(参数如上图所示)。通过UDP SEND模块将该帧报文发送出去,即可实现Findservice。具体模型如图12所示:
图12 UDP SEND SOME/IP报文实现
Receive子系统,以解析offerservice为例,通过使用Recive UDP模块及UNPACK模块将接收到的UDP报文进行解包,而后对解包出来的数据按SOME/IP协议进行解析,输出SOME/IP报文中的各项参数。如图13所示:
图13 UDP Receive SOME/IP报文解析实现
2)服务端仿真
仿真服务端(摄像头)节点,服务端有两个需求:
1.解析客户端的请求报文
2.根据客户端的请求,反馈相应的报文。
服务端与客户端不同之处在于,服务端需要根据客户端的请求,回复相关报文。首先,我们需要先解析客户端发送的报文数据,确认客户端的意图之后,我们控制服务端回复相关报文,我们通过图14模型结构来实现:若收到FindService服务请求,检测服务端是否有相关服务报文,若有则提供该服务,若无,则无响应(该策略供测试使用,无实际意义)
图14 服务端响应客户端报文实现
SERVER中SOME/IP SEND子系统和RECEIVE子系统均和Client SEND子系统和RECEIVE子系统相同。
0 3报文监控
Simulink Real-Time Explorer插件可以与目标计算机和在目标计算机上运行的实时应用程序进行交互,它可以监视和跟踪信号,调整参数,制作UI界面,以及导出和运行Explorer配置作为独立的可执行文件。此次使用此插件监控数据。
我们将模型编译并下载到Speedgoat中,在Panel界面中拖入相关控件即可实现报文数据监控。
图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