2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 面向服务通信与面向信号通信

面向服务通信与面向信号通信

时间:2020-11-28 10:54:48

相关推荐

面向服务通信与面向信号通信

汽车电子行业中因为汽车以太网技术的引进,也引进了一些传统IT行业的概念。比如面向服务的通信概念,以前在汽车诊断领域虽有所应用,但并未如现在这般被系统地提出来,在汽车电控的各领域中得以应用,并推出了各种相关的规范和标准。面向服务通信的概念是与传统汽车电子行业的面向信号通信的概念相对应的一个概念,今天就二者做一个简单的对比。

CAN为总线式通信,采用广播式的通信方式。针对这种通信方式,CAN总线在信息传输时通常采用的是面向信号的通信方式(Signal-Oriented Communication)。面向信号的通信,顾名思义,这种通信是为了将信号进行传输,比如节点B需要节点A的某一个信息(即一个信号值),节点A就直接把这个信号同其他信号一起,打包成报文丢到总线上,节点B收到之后就能够获得该信号了。用某些传统IT人士的说法,这是一种简单粗暴式的通信方法。

在这种传输情况下最核心的就是通信矩阵,在通信矩阵中以信号作为主要对象,体现出信号被封装到哪条报文中,信号被哪个节点发送,被哪个节点接收。

目前用的最多的是将通信矩阵做成数据库的方式,在仿真、代码实现、测试等阶段都能够使用,也就是诸如*.dbc文件的CAN总线数据库。下图是从Vector的CANdb++工具中打开的某CAN总线数据库文件中截取的通信矩阵:第一列为通信矩阵的关键列-信号名称,表头为总线上所有节点名称,蓝色字体带有<Tx>标志的为发送节点所发送的报文名称,括号中0x开头的为信号所在的报文,黑色的为接收节点所接收的报文名称。当然工具不同体现形式不同,但是通信矩阵包含的核心内容基本上是一致的。

汽车以太网目前采用交换机式网络,采用点对点的通信方式。在这种通信方式下,最经典的就是面向服务的通信方式(Service-Oriented Communication),当然也会有面向信号方式的存在。

面向服务的通信,顾名思义,这种通信是为了对服务的相关信息进行传输。服务是什么呢?简单理解就是某一段代码所能够提供的某些功能。比如你在餐厅点餐,服务员(Server)就提供了一种“点餐”的服务(Service),你作为一个客户(Client),就能够使用这些服务。服务的相关信息有哪些呢?就是各种属性信息、控制信息等内容。如果服务与服务使用者同在一台电脑上,那么可以直接通过程序接口实现过程调用,如图中A区域所示。但是如果服务与服务使用者位于不同的电脑,则需要进行远程调用,如图中B区域所示。在远程调用时,就需要借助中间件及网络传输实现信息传输,如图中C区域所示,这种通信就是面向服务的通信,就是要通过一定的方式对服务的相关信息进行打包,打包后再把这些信息在网络上进行传递。

在汽车以太网中目前采用的较多的是AUTOSAR组织提出的SOME/IP通信方式。这种通用方式是一种远程过程调用RPC(Remote Procedure Call远程过程调用)。在这种面向服务通信的方式中有三个比较关键的内容:服务接口、服务发现、信息打包方式(SOME/IP的一些其他内容以后再慢慢展开)。

服务接口(Service Interface):直白理解就是服务与外界通信的接口,也就是说服务模块与外界沟通的基本出入口。可以简单理解为你问服务员,我要鱼丸粗面。服务员说,木有粗面。这种对话方式及内容就是服务接口。而至于为什么木有粗面,那就是服务员在接收到你的信息之后,根据他的大脑分析得到的结果,也就是服务的内部代码处理的结果。在通信方面,我们更多关注的是服务接口,而不是服务的内部代码分析过程。SOME/IP中规定的服务接口包含:双向方法(Request & Response Method)、单向方法(Fire & Forget Method)、事件(Event)、属性(Field)等几项内容。

服务发现(Service Discovery,简称SD)用于协助客户端去寻找可用服务的一种机制。服务(Service)部署在服务器端(Server),在具体实现时(实例化)会有些参数比如网络地址可能会发生变化。为了能够让客户端随时找到服务器上的服务,因此需要这种服务发现机制。可以简单理解为服务发现(SD)是Service的秘书。SD清楚的知道Service的地址、状态等内容。就像你要找大领导签字,你先问一下秘书,领导在吗、什么时间有空。秘书会告诉你,领导今天在哪个会议室开会,什么时间段有空。在SOME/IP SD包含了发现服务、提供服务、停止提供服务、订阅事件组、停止订阅事件组等7种类型的服务发现相关报文。

信息打包方式用于将服务信息和服务发现的信息进行打包,并通过网络进行传输。针对不同的应用场合服务接口的内容会有所不同,因此也就会有不同的打包协议,不同协议对这些信息的打包方式均有所不同。比如在SOME/IP中,打包的内容就包括:报文ID、请求ID、协议版本、接口版本以及处理之后(序列化)的服务接口信息等内容。SOME/IP协议中对请求、无返回的请求、通知、响应、错误等五种类型的信息进行打包,即SOME/IP有上述五种报文类型。而前边提到的SOME/IP SD信息的打包,就是使用的通知(Notification)的报文类型。

下图是Vector的AUTOSAR协议栈中截取的一部分,图中红色框出来三个模块就涉及到了上文提到的三个部分。SW-C的全称为Software Component,包含的服务代码实现了服务,其对外接口就是服务接口;SD模块实现了服务发现的内容,管理服务的地址信息、状态信息等内容;SOME/IP模块实现了数据的传输控制,用于服务接口数据的上下传递。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。