在以can总线为主的车载网络中,通信过程是面向信号的(除了诊断通信之外),这是一种根据发送者需求实现的通信过程,当发送者发现信号的值变化了,或者发送周期到了,就会发送信息,而不考虑接收者是否有需求。
some/ip则不同,它是在接收方有需求的时候才发送,这种方法的优点在于总线上不会出现过多不必要的数据,从而降低负载。基于经典信号(例如 can)的通信 - 不足以进行更复杂的数据通信和控制。高度计算密集型 ecu可以在需要时向其他 ecu 提供所需的情报。
以太网作为车载网络的出现是基于经典信号+动态合约+带宽的通信形式。可以使用以太网处理具有方法methods和事件events的复杂服务接口,使用 tcp/udp、ip 的面向服务的中间件协议为车辆增加新的功能和特性,集成新功能,对现有功能实现的改动最小,减少了复杂现代架构中静态定义接口和数据交换的问题,使车辆成为高度连接和数字世界的一部分。
对于soa来讲,由于采用了先进的以太网格式,以太网数据传输服务可以由server和client两个部分共同完成,因此在进行数据传输之前,需要准备一系列的工作来确认server和client之间是否已建立网络连接。其次,client还要询问server能否提供所需的服务,满足数据传输需求,并对服务的event进行订阅。这些工作都是通过some/ip服务发现(service discovery)实现的。服务是some/ip的最核心的一个概念,属于会话层的协议。
总体说来,使用some/ip具有如下特点:
采用交换式以太网:通过几个交换机可连接几十个节点,启动时各节点不同步,传输帧延迟小于几毫秒;
一个节点可以托管多个不同服务的客户端并提供多种服务,服务总数从几十到几百不等;
一个节点请求提供服务的一小部分(最多几十个),节点可能需要订阅服务才能提供自己的服务;
服务可能不会一直被使用和提供:比如模式变化、部分联网等场景;
01 基于some/ ip可扩展面向服务的中间件
事件驱动的 soa:事件与服务相遇
pdu 路由组管理需要管理启用到禁用的套接字pdu 路由,some/ip - 套接字适配器 [soad] - autosar 模型构建块,可用于通用上层支持some/ip中的服务发现。
some/ip sd报文也是一种some/ip的数据报文,是在some/ip数据报文的前提上进行了扩展需求,增加了entry、option等字段;entries用于同步服务实例的状态和发布/订阅的管理,options用于传输entries的附加信息。
type = 0x00 encodes “findservice”
type = 0x01 encodes “offerservice” and“stopofferservice”
type = 0x06 encodes “subscribeeventgroup”and “stopsubscribeeventgroup”
type = 0x07 encodes“subscribeeventgroupack” and “stopsubscribeeventgroupnack”
type = 0x02, 0x03, 0x04, 0x05 not defined
some/ip sd数据报文的serviceid(0xffff)、methodid(0x8100)、request id(0x0000)、protocolversion(0x01)、interface version(0x01)、messagetype(0x02)、returncode(0x00)等等属性都是一个固定值。
02 some/ip协议格式
从启用禁用到整个套接字的 pdu 路由,some/ip消息由报头header和有效负载payload组成。
消息id:服务id和事件/方法id的组合
长度length:包含从请求id到some/ip消息结束的长度(以字节为单位)
请求id:允许提供者和订阅者区分同一方法、事件、getter或setter的多个并行使用
协议版本:包含some/ip协议版本的8位字段
接口版本:包含服务接口主要版本的8位字段
消息类型:用于区分消息类型
返回码:用于指示请求是否已成功处理。
ap平台的方法论作为cp平台的扩展,其引入了新的概念,ap平台软件的实例是在进程的上下文中执行。ap平台引入了“机器”(machine)的概念,“机器”是虚拟化的ecu一个可以部署软件的实体。
在autosar架构中,some/ip-sd模块位于autosar bsw mode managermodule(bswm)和autosar socketadaptor module (soad)之间。bswm模块提供了通用模式请求和服务请求之间的连接。soad模块则处理以太网堆栈和sd模块之间的服务请求。通过配置soad中的socketconnection表,可以接收其他ecu的sd模块发来的单播和多播报文。用于 some/ip 的套接字适配器、com 和 rte,而sd则拥有自己的模块。
soad 层支持通过 tcp/ip 网络进行基于 pdu 的通信。autosar i-pdu 映射到由 soad 配置和维护的套接字连接。要为多个 i-pdu 使用套接字连接,可以在每个 i-pdu 前面添加 soad pdu 标头。
03 some/ip的三个原始接口服务
ap平台是一个面向服务的软件架构(soa),基于ap平台的软件开发首先需要进行服务接口的设计。服务接口可以由事件(events)、方法(methods)和字段(fields)组成是生成软件组件头文件的基础。
1、方法(methods)
调用或引用一个进程/函数/子程序,通常由client发起,并由server答复。request是最常见的一种method,由client向server请求数据;response是request的结果,由server答复client的request。而method fire & forget方式,只client向server发起,但server对该请求不回复。
2、事件(events)
一个单向的数据传输,只能是on change类型,用于server主动向订阅(subscribe)了相关服务的client发布(publish)信息。
3、字段(fields)
由以下三项内容构成:
notifier:通知,server的client订阅了服务后第一时间主动向其发送数据。
getter:获取,由client向server请求数据。
setter:设置,由client修改server的数据。
这里需要注意,notification分为event和field 两类,这两类通知都需要首先使用some/ip-sd(service discovery)来进行服务订阅,然后才能发布通知。
client可以通过some/ip-sd来实现服务发现过程,从而得以远程调用server提供的服务,或者订阅server发布的内容。区别在于,event是某一时刻的快照,只是事件通知,而field除了事件通知之外,还具有getter和setter的功能,即对信息进行读写的操作。
04 高级自动驾驶架构下的some/ip的通信机制
如下图显示了一种面向服务中典型的基于some/ip进行有效通信的连接架构,就智能驾驶来讲,各ecu端均通过交换机switch向相关联的端口发送相应的请求端口号及服务内容。
这里我们举一个例子,假如需要实现自车安全停车(safe stop)逻辑,同时通过抬头显示单元进行显示。这里假如车辆控制单元vdc进行车辆前端感知、融合及后端规控,那么整个控制过程则需要首先由自动驾驶域控制器作为客户端,则需要首先由请求端vehicle contol通过some/ip封装的相应的服务端口及地址。
中央控制器单元通过采用定义三种不服务接口(其中event group包含垂直方向数据,fields包含障碍物类型数据,methods包含通知/获取/设置等相关内容信息)向对应的端口port(如摄像头端口port=30501,雷达端口port=30501,通常传感器使用相同的端口,通过不同的ip地址加以区分)和ip地址(ip=192.168.10.100,ip=192.168.10.101)发起请求传感器检测的目标数据服务provided serviceinterface。
传感器作为服务端接收到该请求后,将带有event group属性的信息(比如distance_data、object_event_grp_1)和fields属性的信息(比如front_distance(notifier_1)、rear_distance(notifier_2)、object_new_position、object_new_blurred)回传给域控制器。
另一个例子,比如订阅机制中,高精地图server向外提供高精地图数据(offer service),adas控制单元想要订阅其车道线相关信息(subscribe eventgroup),高精地图server同意其订阅请求(subscribe eventgroup ack),而后server开始发布高精地图的车道线数据给adas控制单元。
再如,请求与响应机制,hu想要获取dvr内存信息,此时dvr是server,hu是client,由hu向dvr发出request,dvr收到请求后,根据自身当前状态,回复response。
区块链技术怎样去保存信息
人类医生与机器人医生的组合,完美地实现了优势互补
单相桥式半控整流电路实验
32位MCU将成主流SoC应用平台,您准备好了吗?
二极管在射频微波领域中的应用
基于SOME/ IP可扩展面向服务的中间件
基于DS2786电路的编程及测试
浅谈移动机器人室外AGV的新趋势
三星高性能有机光电二极管或实现下一代全屏指纹技术
台积电加码半导体封装!
为吸引AI人才 索尼将新员工最高年薪提升至730万日元
微型防身电击器,High-voltage generator
电脑硬盘选择有技巧,西数蓝盘和黑盘有什么区别
复合材料有什么好处
海信LED65E7C电视采用四核Mali-T720 MP2图形处理器,物理分辨率高达3840*2160
Rust如何实现A*算法
1m测长机如何测量长度?
英特尔推出英特尔 XMM 7560无线调制解调器 支持下一代LTE Advanced移动终端设备
vhdl数码管动态扫描程序设计(四种设计方案)
华为nova2s拍照评测 打造既专业又惬意的拍摄体验