车载ECU的订阅发布通信方法、服务器及系统与流程

文档序号:28611267发布日期:2022-01-22 12:29阅读:222来源:国知局
车载ECU的订阅发布通信方法、服务器及系统与流程
车载ecu的订阅发布通信方法、服务器及系统
技术领域
1.本技术涉及数据通信技术领域,尤其涉及一种车载ecu的订阅发布通信方法、服务器及系统。


背景技术:

2.随着物联网技术的发展,推动着汽车向智能化和网络化发展,汽车的智能座舱、自动驾驶等功能的多样性、丰富性、安全性等需求变得越来越高,从而汽车内部通信的数据量逐渐增大。
3.其中,汽车内部的ecu(electronic control unit,电子控制单元)之间的数据长期以来是采用can(controller area network,控制器域网)网络进行通信。在整车的can网络中,一旦多个ecu同时通信的时候,大量的数据在网络中传输,产生多余的信息量,从而会导致信号延迟阻塞的可能。随着some/ip(scalable service-oriented middleware over ip,位于ip协议层以上的一种面向服务的可伸缩的中间件)这一汽车以太网协议的应用,虽然解决了can网络的广播式通信造成带宽的过多占用的问题,但是some/ip以太网协议只定义了比较基础的规范,应用互操作性难以得到保证,并且难以应对汽车越来越多的大数据和高并发的场景。
4.因此,相关技术的ecu间的通信方法,实现较为复杂且应用场景受限。


技术实现要素:

5.为解决或部分解决相关技术中存在的问题,本技术提供一种车载ecu的订阅发布通信方法、服务器及系统,能够实现车载ecu间的轻量级通信及提高场景适用性。
6.本技术第一方面提供一种车载ecu的订阅发布通信方法,包括:
7.接收发送方通过预设协议发送的数据帧;
8.根据数据帧的数据头识别出所述数据帧对应订阅功能或发布功能;
9.在识别出对应订阅功能后向所述发送方发送订阅功能响应结果,或在识别出对应发布功能后向接收方发送发布数据。
10.在一实施方式中,所述在识别出对应订阅功能后向所述发送方发送订阅功能响应结果,包括:
11.在所述发送方是订阅方时,在识别出对应订阅功能后向所述订阅方发送订阅功能响应;或,
12.在所述发送方是订阅方时,在识别出对应订阅功能后向所述订阅方发送订阅功能响应和缓存的发布数据。
13.在一实施方式中,所述在所述发送方是订阅方时,在识别出对应订阅功能后向所述订阅方发送订阅功能响应之后,还包括:
14.在接收到发布方根据订阅功能发送的发布数据后,向所述订阅方发送发布数据。
15.在一实施方式中,所述在识别出对应发布功能后向接收方发送发布数据,包括:
16.在所述发送方是发布方时,在识别出对应发布功能后向订阅方发送发布数据。
17.在一实施方式中,所述接收的数据帧由所述发布方在接收到订阅方的对应订阅功能的数据帧后发送;或,
18.所述接收的数据帧由所述发布方在发布数据发生更新后发送。
19.在一实施方式中,所述根据数据帧的数据头识别出所述数据帧对应订阅功能或发布功能,包括:
20.根据数据帧的数据头中的头部状态id的不同取值,识别出所述数据帧对应订阅功能或发布功能。
21.在一实施方式中,所述头部状态id的取值对应订阅功能时,根据不同取值分别对应订阅状态、取消订阅状态、订阅结果状态、取消订阅结果状态。
22.在一实施方式中,所述根据数据帧的数据头识别出所述数据帧对应订阅功能或发布功能之后,还包括:
23.根据数据帧的数据体识别出所述订阅功能或发布功能对应的指定功能类型;
24.所述在识别出对应订阅功能后向所述发送方发送订阅功能响应结果,或在识别出对应发布功能后向接收方发送发布数据,包括:
25.在识别出对应订阅功能和指定功能类型后向所述发送方发送订阅功能响应结果,或在识别出对应发布功能和指定功能类型后向接收方发送发布数据。
26.在一实施方式中,所述数据帧的数据体包括方法id或所述数据体包括方法id和有效负载,
27.其中所述方法id根据不同取值分别对应不同指定功能类型,所述有效负载承载不同指定功能类型对应的数据。
28.本技术第二方方面提供一种服务器,包括:
29.接收模块,用于接收发送方通过预设协议发送的数据帧;
30.识别模块,用于根据所述接收模块接收的数据帧的数据头识别出所述数据帧对应订阅功能或发布功能;
31.处理模块,用于在所述识别模块识别出对应订阅功能后向所述发送方发送订阅功能响应结果,或在识别出对应发布功能后向接收方发送发布数据。
32.本技术第第三方面提供一种车载ecu的订阅发布通信系统,包括服务器、订阅方ecu和发布方ecu,
33.所述服务器,用于接收订阅方ecu或发布方ecu通过预设协议发送的数据帧;根据数据帧的数据头识别出所述数据帧对应订阅功能或发布功能;在识别出对应订阅功能后向所述订阅方ecu发送订阅功能响应结果,或在识别出对应发布功能后向订阅方ecu发送发布数据;
34.订阅方ecu,用于向所述服务器发送数据帧,其中数据帧的数据头对应订阅功能,接收所述服务器返回的订阅功能响应结果,或接收所述服务器发送的发布数据;
35.发布方ecu,用于向所述服务器发送数据帧,其中数据帧的数据头对应发布功能。
36.在一实施方式中,所述服务器在识别出对应订阅功能后向所述订阅方ecu发送订阅功能响应;或,所述服务器在识别出对应订阅功能后向所述订阅方ecu发送订阅功能响应和缓存的发布数据;或,
37.所述服务器在识别出对应发布功能后向所述订阅方ecu发送发布数据。
38.本技术第四方面提供一种计算机可读存储介质,其上存储有可执行代码,当所述可执行代码被车辆设备的处理器执行时,使所述处理器执行如上所述的方法。
39.本技术提供的技术方案可以包括以下有益效果:
40.本技术提供的方案,通过预设协议传输数据帧,可以根据数据帧的数据头识别出所述数据帧对应订阅功能或发布功能,然后在识别出对应订阅功能后向所述发送方发送订阅功能响应结果,或在识别出对应发布功能后向接收方发送发布数据。通过数据帧的数据头来对订阅功能或发布功能进行标识和区分,从而便于服务器根据不同功能可以快速做出不同响应,从而可以方便实现不同的ecu之间的轻量级数据通信,达到低延迟、高可靠且容易实现的效果;另外根据识别出的订阅功能或发布功能,可以快速分发和管理,使得在高并发的场景下也能使用,从而提高场景适用性。
41.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
42.通过结合附图对本技术示例性实施方式进行更详细地描述,本技术的上述以及其它目的、特征和优势将变得更加明显,其中,在本技术示例性实施方式中,相同的参考标号通常代表相同部件。
43.图1是本技术示出的车载ecu的订阅发布通信方法的流程示意图;
44.图2是本技术示出的车载ecu的订阅发布通信方法的另一流程示意图;
45.图3是本技术示出的数据帧的数据结构示意图;
46.图4是本技术示出的数据帧中头部状态id和方法id的取值定义示意图;
47.图5是本技术示出的数据帧传输过程概览示意图;
48.图6是本技术示出的车载ecu的订阅发布通信方法的另一流程示意图;
49.图7是本技术示出的车载ecu的订阅发布通信方法的另一流程示意图;
50.图8是订阅方、发布方与服务器的数据交互示意图;
51.图9是本技术示出的服务器的结构示意图;
52.图10是本技术示出的车载ecu的订阅发布通信系统的结构示意图;
53.图11是本技术示出的电子设备的结构示意图。
具体实施方式
54.下面将参照附图更详细地描述本技术的实施方式。虽然附图中显示了本技术的实施方式,然而应该理解,可以以各种形式实现本技术而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本技术更加透彻和完整,并且能够将本技术的范围完整地传达给本领域的技术人员。
55.在本技术使用的术语是仅仅出于描述特定示例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
56.应当理解,尽管在本技术可能采用术语“第一”、“第二”、“第三”等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
57.相关技术中,在车载ecu间进行数据通信时,传统的can车载协议通信的广播方式会造成多余信息量,some/ip以太网协议难以应对汽车越来越多的大数据和高并发的场景。针对上述问题,本技术提供一种车载ecu的订阅发布通信方法,能够实现车载ecu间的轻量级通信及提高场景适用性。
58.以下结合附图详细描述本技术的技术方案。
59.图1是本技术示出的车载ecu的订阅发布通信方法的流程示意图。该方法可以应用于服务器,例如应用于分发服务器。
60.参见图1,本技术的车载ecu的订阅发布通信方法,包括:
61.s110,接收发送方通过预设协议发送的数据帧。
62.ecu可以作为订阅方或发布方。在发送方是订阅方时,服务器接收订阅方通过预设协议发送的数据帧。在发送方是发布方时,服务器接收发布方通过预设协议发送的数据帧。其中,接收的数据帧可以由发布方在接收到订阅方的对应订阅功能的数据帧后发送;或,接收的数据帧可以由发布方在发布数据发生更新后发送。
63.其中,本技术的预设协议可以是一种基于以太网协议的中间件通信协议,可以在整车的各ecu之间实现简单轻量级的订阅-发布式的通信机制,可应用于汽车内部以太网终端器件,解决相关技术中的车载协议can的广播方式造成多余信息量的问题,以及可以简化相关技术中的some/ip汽车以太网的应用操作性,能应对汽车越来越多的大数据和高并发的场景。
64.s111,根据数据帧的数据头识别出数据帧对应订阅功能或发布功能。
65.该步骤s111中,可以根据数据帧的数据头中的头部状态id的不同取值,识别出数据帧对应订阅功能或发布功能。例如,头部状态id的取值不等于0时,对应订阅功能,头部状态id的取值等于0时,对应发布功能。
66.头部状态id的取值对应订阅功能时,进一步根据不同取值分别对应订阅状态、取消订阅状态、订阅结果状态、取消订阅结果状态。
67.s112,在识别出对应订阅功能后向发送方发送订阅功能响应结果,或在识别出对应发布功能后向接收方发送发布数据。
68.其中,在识别出对应订阅功能后向发送方发送订阅功能响应结果,包括:在发送方是订阅方时,在识别出对应订阅功能后向订阅方发送订阅功能响应;或,在发送方是订阅方时,在识别出对应订阅功能后向订阅方发送订阅功能响应和缓存的发布数据。
69.另外,在发送方是订阅方时,在识别出对应订阅功能后向订阅方发送订阅功能响应之后,还可以包括:在接收到发布方根据订阅功能发送的发布数据后,向订阅方发送发布数据。
70.其中,在识别出对应发布功能后向接收方发送发布数据,包括:在发送方是发布方
时,在识别出对应发布功能后向订阅方发送发布数据。
71.需说明的是,在根据数据帧的数据头识别出数据帧对应订阅功能或发布功能之后,还可以包括:根据数据帧的数据体识别出订阅功能或发布功能对应的指定功能类型;则在识别出对应订阅功能后向发送方发送订阅功能响应结果,或在识别出对应发布功能后向接收方发送发布数据,可以包括:在识别出对应订阅功能和指定功能类型后向发送方发送订阅功能响应结果,或在识别出对应发布功能和指定功能类型后向接收方发送发布数据。
72.其中,数据帧的数据体包括方法id或数据体包括方法id和有效负载,其中方法id根据不同取值分别对应不同指定功能类型,有效负载承载不同指定功能类型对应的数据。例如,方法id取值为0
×
01表示对应订阅车速类型,取值为0
×
02表示对应订阅仪表亮度类型等。
73.从该示例可以看出,本技术提供的方案,通过预设协议传输数据帧,可以根据数据帧的数据头识别出数据帧对应订阅功能或发布功能,然后在识别出对应订阅功能后向发送方发送订阅功能响应结果,或在识别出对应发布功能后向接收方发送发布数据。通过数据帧的数据头对订阅功能或发布功能进行标识和区分,从而便于服务器根据不同功能可以快速做出不同响应,可以方便实现不同ecu之间的轻量级数据通信,达到低延迟、高可靠且容易实现的效果;另外根据识别出的订阅功能或发布功能,可以快速分发和管理,使得在高并发的场景下也能使用,从而提高场景适用性。
74.图2是本技术示出的车载ecu的订阅发布通信方法的另一流程示意图,以下实施例主要用于说明服务器与订阅方的通信。
75.参见图2,本技术车载ecu的订阅发布通信方法,包括:
76.s210,服务器接收订阅方通过预设协议发送的数据帧。
77.本技术提供的数据帧,可以包括数据头和数据体。
78.其中,数据头可以包括头部状态id(即state id),头部状态id的不同取值分别表示数据帧对应订阅功能或发布功能,在头部状态id的取值对应订阅功能时,根据不同取值分别对应订阅状态、取消订阅状态、订阅结果状态、取消订阅结果状态。state id可以占据一个字节,从而可以便于服务器快速识别。
79.其中,数据体可以包括方法id(即method id)或数据体可以包括方法id和有效负载(即payload),其中方法id根据不同取值分别对应不同指定功能类型,有效负载承载不同指定功能类型对应的数据。例如,方法id取值为0
×
01表示对应订阅车速类型,取值为0
×
02表示对应订阅仪表亮度类型等。
80.可以理解,车辆上安装有不同功能的ecu,主要是利用各种传感器、总线的数据采集与交换,来判断车辆状态以及驾驶员的意图并通过执行器来操控车辆,控制汽车的行驶状态以及实现其各种功能。同一个ecu即可以作为订阅方,也可以作为发布方,例如ecu-a是“车速”数据的订阅方,ecu-c是“车速”数据的发布方,ecu-a的“车速”数据来源于ecu-c的采集;另外ecu-a还是“车内温度”数据的发布方,从而实现不同的ecu之间的数据交换。进一步地,作为订阅方,同一个ecu可以不仅限于订阅一个指定功能类型数据,即可以订阅一个或多个不同类型的指定功能数据。作为发布方,同一个ecu根据自身实际具有的功能,可以对应发布一个或多个不同类型的指定功能类型数据。
81.s211,服务器根据数据帧的数据头中的头部状态id的不同取值,识别出数据帧对
应订阅功能。
82.为了便于识别订阅方的请求事项,可以根据头部状态id(即state id)的不同取值进行识别。
83.根据数据帧的数据头中的头部状态id的不同取值,可以识别出数据帧对应订阅功能或发布功能。例如,state id的取值不等于0时,识别出对应订阅功能,也即对应的是订阅功能请求,该数据帧为状态消息。例如,state id的取值等于0(取值为0
×
00)时,识别出对应发布功能,也即对应的是发布功能请求,该数据帧为数据消息。需说明的是,上述定义只是举例说明但不局限于此,也可以相反的定义,例如state id的取值不等于0时,对应发布功能,state id的取值等于0时,对应订阅功能。
84.当state id的取值不等于0表示对应订阅功能时,state id的不同取值可以分别对应订阅状态、取消订阅状态、订阅结果状态、取消订阅结果状态等。其中,state id可以采用十六进制数例如0
×
01、0
×
02、0
×
03、0
×
04、0
×
05、...、0
×
0f进行表示。也就是说,state id可以不限数量的扩展、修改或者重新定义其对应的含义。
85.图3是数据帧的数据结构示意图。如图3所示,当数据帧(msg)的头部状态id(state id)不等于0的时候,该数据帧为“状态消息”;当state id等于0的时候,该数据帧为“数据消息”。需说明的是,该定义只是举例说明。
86.图4是数据帧中头部状态id和方法id的取值定义示意图。如图4所示,state id不等于0的时候,“状态消息”可以包括4种状态,分别是:订阅状态、取消订阅状态、订阅结果状态t/f(true/false),取消订阅结果状态t/f(true/false);其中,前2种状态属于客户端向服务器发布的注册数据,后2种状态属于前2种状态对应的反馈信号。
87.例如,state id取值为0
×
01表示订阅状态,取值为0
×
03表示服务器反馈的订阅结果状态,订阅结果状态为真时表示订阅成功,订阅结果状态为假时表示订阅失败;取值为0
×
02表示取消订阅状态,取值为0
×
04表示服务器反馈取消订阅结果状态,取消订阅结果状态为真时表示取消订阅成功,取消订阅结果状态为假时表示取消订阅失败。取值为0
×
05-0
×
0f可以作为保留状态,供根据不同情况进行定义。
88.s212,服务器根据数据帧的数据体中的方法id的不同取值,识别出订阅功能所对应的指定功能类型。
89.数据体中的方法id(即method id)表示某一项功能索引,方法id根据不同取值分别对应不同指定功能类型。例如,如图4所示,method id取值为0
×
01表示订阅车速类型,取值为0
×
02表示订阅仪表亮度类型等。需说明的是,method id取值对应的功能定义可以根据需要进行设置或调整。
90.s213,服务器根据头部状态id和方法id的识别结果,向订阅方发送订阅功能响应。
91.例如,识别出的state id取值为0
×
01表示对应订阅状态,则服务器向订阅方发送state id取值为0
×
03的数据帧,表示服务器反馈的订阅结果状态(true/false),该订阅结果状态为真(true)时表示订阅成功,订阅结果状态为假(false)时表示订阅失败。
92.例如,识别出的state id取值为0
×
02表示对应取消订阅状态,则服务器向订阅方发送state id取值为0
×
04的数据帧,表示服务器反馈取消订阅结果状态(true/false),取消订阅结果状态为真(true)时表示取消订阅成功,取消订阅结果状态为假(true)时表示取消订阅失败。
93.s214,服务器接收发布方的发布数据后向订阅方发送,或将缓存的发布数据向订阅方发送。
94.为了减小协议的复杂度,本技术与some/ip中需执行较繁琐的sd(service discover,服务发现)处理并不同,本技术是由服务器统一记录订阅方与methodid的关系,当有ecu向服务器发送包含“stateid=0x00+已经被订阅的methodid+payload”的数据帧时,服务器就将该数据帧转发给订阅方。
95.可以理解,为了明确各订阅方与指定功能类型数据的映射关系,即订阅方是否订阅或取消订阅对应的指定功能类型数据,可以通过数据库进行关系的统一记录与调整。表1举例说明了服务器需要在网络的生命周期里面保留的数据。
[0096][0097]
表1
[0098]
如上表1所示,通过以上述预设格式的列表形式对数据进行统一管理,例如表1中method id为0
×
01,对应的指定功能类型为“车速”,“车速”采用的数据类型格式为uint8、对应的数据内容为80,订阅方ecu为仪表和中控。由上表1可知,如果新的订阅方进行了指定功能类型数据的订阅,则可以更新订阅方ecu名单;如果已订阅的订阅方取消订阅指定功能类型数据,同样对上表中的订阅方ecu名单进行更新。这样的设计,可以降低通信协议的复杂度,采用一个数据库就可以将method id与订阅方进行关系的绑定或解除绑定,则便于服务器进行快速识别和数据分发。
[0099]
需说明的是,功能数据(即data)可以采用以下相关技术中的一种或多种数据类型格式:can的dbc(database can,can数据库)、json(javascript object notation,js对象简谱)、boolean、uint8、uint16、uint32、uint64、sint8、sint16、sint32、sint64、float32、float64、struct、string、array、enumeration、bitfield及union等格式。不同类型的功能数据具有各自对应的数据类型格式,互不影响。可以理解,本技术方法的代码实现可以包括但不限于c/c++形式。
[0100]
如图5所示,图5为数据帧传输过程概览示意图。本技术采用基于车载以太网的网络结构模型,可以包括应用层、表示层、会话层、传输层、网络层、数据链路层及物理层等结构。其中,发送端依次按照应用层、表示层、会话层、传输层、网络层、数据链路层及物理层的顺序,对数据进行逐层打包后发送,接收端按照相反顺序进行逐层拆包。其中,采用的预设协议是基于以太网协议的中间件通信协议。该预设协议与其他应用层协议类似,也是基于tcp(transmission control protocol,传输控制协议)/udp(user data protocol,用户数据报协议)协议进行制定。
[0101]
参见图5,在一个预设协议网络可以设置一套method id列表,method id列表相当
于一套data base(数据库),其中每个method id对应的指定功能类型是确定的。数据帧中的数据体的有效负载(payload)在传输过程中,由发布方ecu通过序列化操作(逐层打包)之后发布到服务器(例如分发服务器),服务器不进行payload数据的解析,直接将原数据(method id+payload)转发给订阅方ecu,订阅方ecu端执行payload的反序列操作(逐层拆包),从而完成数据的传输。这样的设计,可以实现数据轻量化且可靠传输的效果。
[0102]
进一步举例说明,若某个ecu需要在车载以太网上订阅某个指定功能类型的数据时,那么将该数据帧的stateid设为0x01表示对应订阅状态,所携带的methodid(s)设为其需要订阅的功能id,例如设为0x01表示对应订阅车速,设为0x02表示对应订阅仪表亮度等。methodid(s)可以有多个。该ecu将打包好的数据帧发送至分发服务器,分发服务器将这些注册信号信息记录在其数据库,注册成功后,分发服务器发送包含stateid为0x03的数据帧反馈给该ecu,其中携带true(真)或者false(假)的状态,表示订阅成功与否,也即订阅结果状态为真(true)时表示订阅成功,订阅结果状态为假(false)时表示订阅失败stateid。stateid为0x02、0x04的情况类似,此处不再赘述。
[0103]
另外,若某个ecu需要发布数据时,那么将该数据帧的stateid设为0x00,所携带的methodid表示该数据帧是传递对应的指定功能类型,例如设为0x01表示对应车速,而payload(有效负载)是该数据帧传输的实际数据。对于数据格式的定义,本技术并不加以限定,可以适合各种格式的数据类型格式。
[0104]
从该示例可以看出,本技术的技术方案,服务器通过识别state id和methodid,可以分别执行订阅操作或发布操作,从而将对应的指定功能类型数据发送给订阅方,或者取消订阅方已有的指定功能类型数据订阅,从而实现订阅方ecu的快速订阅;与此同时,通过具有预设格式的数据库将各methodid和订阅方进行订阅关系的绑定或解绑,从而可以简易便捷地对订阅方进行管理,且可以根据绑定关系及时由服务器将更新的发布数据针对性地发送至订阅方,相比于can车载协议通信的广播方式,通过针对性地发送,可以减少冗余数据的产生,减少对带宽的占用,从而避免信号的延迟发送。另外根据识别出的订阅功能或发布功能,可以快速分发和管理,使得在高并发的场景下也能使用,从而提高场景适用性。
[0105]
图6是本技术示出的车载ecu的订阅发布通信方法的另一流程示意图。以下实施例用于说明服务器与发布方的通信。
[0106]
参见图6,本技术车载ecu的订阅发布通信方法,包括:
[0107]
s610,服务器接收发布方通过预设协议发送的数据帧。
[0108]
本技术提供的数据帧,可以包括数据头和数据体。关于数据帧的格式可以参见s210中的描述,此处不再赘述。
[0109]
s611,服务器根据数据帧的数据头中的头部状态id的不同取值,识别出数据帧对应发布功能。
[0110]
根据数据帧的数据头中的头部状态id(即state id)的不同取值,可以识别出数据帧对应订阅功能或发布功能。例如,state id的取值等于0(取值为0
×
00)时,对应发布功能,也即对应的是发布功能请求,该数据帧为数据消息。
[0111]
关于state id的取值,可以参见s211中的描述,此处不再赘述。
[0112]
s612,服务器根据数据帧的数据体中的方法id的不同取值,识别出发布功能所对应的指定功能类型。
[0113]
数据体中的方法id(即method id)表示某一项功能索引,方法id根据不同取值分别对应不同指定功能类型。例如,如图4所示,method id取值为0
×
01表示订阅车速类型,取值为0
×
02表示订阅仪表亮度类型等。
[0114]
s613,服务器根据头部状态id和方法id的识别结果,将发布数据向订阅方发送。
[0115]
各订阅方与指定功能类型数据的映射关系的相关描述,可以参见s214中的描述,此处不再赘述。
[0116]
该步骤中,服务器不进行payload数据的解析,可以直接将原数据(method id+payload)转发给订阅方。后续订阅方执行payload的反序列操作(逐层拆包),从而完成数据的传输。这样的设计,可以实现数据轻量化且可靠传输的效果。
[0117]
从该示例可以看出,本技术提供的方案,服务器通过识别state id和methodid,可以分别执行订阅操作或发布操作,便于服务器根据不同功能可以快速做出不同响应,可以方便实现不同ecu之间的轻量级数据通信,达到低延迟、高可靠且容易实现的效果;另外根据识别出的订阅功能或发布功能,可以快速分发和管理,使得在高并发的场景下也能使用,从而提高场景适用性。
[0118]
图7是本技术示出的车载ecu的订阅发布通信方法的另一流程示意图,图8是订阅方、发布方与服务器的数据交互示意图,以下实施例用于说明订阅方、发布方与服务器的交互。
[0119]
参见图7和图8,本技术车载ecu的订阅发布通信方法,包括:
[0120]
s710,多个订阅方分别向服务器发送对应订阅功能的数据帧。
[0121]
例如,订阅方包括ecu-a和ecu-b,分别向服务器订阅指定功能类型数据“车速”。其中,订阅方可以主动向服务器发送数据帧,数据帧中的stateid设为0x01表示订阅状态,所携带的methodid(s)设为其需要订阅的功能id,例如设为0x01表示订阅的是车速。
[0122]
s711,服务器从数据帧中识别出对应订阅功能和订阅功能所对应的指定功能类型。
[0123]
服务器分别对接收的数据帧中的stateid和methodid进行识别,根据stateid设为0x01识别为对应订阅状态,根据methodid设为0x01识别为对应表示订阅的是车速。
[0124]
s712,服务器将订阅方的数据帧转发给发布方。
[0125]
服务器可以直接将订阅方的数据帧转发给发布方ecu-c。
[0126]
s713,服务器向多个订阅方发送订阅功能响应。
[0127]
服务器将订阅方的注册信号信息记录在其数据库,注册成功后,服务器发送包含stateid为0x03的数据帧反馈给订阅方,其中携带true(真)或者false(假)的状态,表示订阅的成功与否,也即订阅结果状态为真(true)时表示订阅成功,订阅结果状态为假(false)时表示订阅失败stateid。
[0128]
s714,发布方向服务器发送对应发布功能的数据帧或更新的数据帧,其中的数据帧包含发布数据。
[0129]
发布方分别对服务器转发的数据帧中的stateid和methodid进行识别,根据stateid设为0x01识别为对应订阅状态,根据methodid为0x01识别为对应表示订阅的是车速。
[0130]
根据识别结果,发布方向服务器发送包括订阅方所需的指定功能类型数据的数据
帧。发布方向服务器发送的数据帧中,将stateid设为0
×
00表示对应发布功能,所携带的methodid(s)设为传递对应的实际功能id,例如设为0x01表示传递的是车速,通过payload携带车速数据。
[0131]
s715,服务器将包含发布数据的数据帧发送给订阅方。
[0132]
服务器接收到发布方发送的数据帧,根据stateid识别出对应发布功能后,不进行payload数据的解析,直接将原数据(method id+payload)转发给订阅方。后续订阅方执行payload的反序列操作(逐层拆包),从而完成数据的传输。这样的设计,可以实现数据轻量化且可靠传输的效果。
[0133]
需说明的是,如果服务器本地缓存有对应的指定功能类型数据“车速”,服务器可以直接将本地缓存的“车速”数据发送给对应的订阅方。
[0134]
可以理解,当发布方发送更新的包含指定功能类型数据的发布数据至服务器后,服务器可以将指定功能类型数据转发至对应的订阅方。其中,发布方作为对应的指定功能类型数据的提供者,可以实时主动将更新的指定功能类型数据上传至服务器,服务器将更新的功能数据分发至对应的订阅方。
[0135]
例如,发布方ecu-c将更新的指定功能类型数据“车速”上传至服务器后,服务器受到更新数据的触发,自动将该更新的“车速”数据转发给订阅方ecu-a和ecu-b。
[0136]
通过上述内容可以发现,本技术提供的订阅发布通信方法可以概括为:“主动订阅,被动接收;主动发布,触发分发”。也就是说,例如ecu-a、ecu-b主动向服务器service订阅某methodid,若service存在该methodid的缓存,则可以立即发给ecu-a、ecu-b,之后不断检测service发来的更新数据。当ecu-c有更新某methodid的数据时,主动向service发布,触发了service分发数据给订阅方也即ecu-a、ecu-b。
[0137]
从上述实例可以看出,本技术的方案,订阅方只需一次主动向服务器订阅,即可收到服务器分发的发布数据或发布数据的更新数据;另外,发布方主动将更新的包含指定功能类型数据的发布数据发送至服务器,服务器则可以分发至对应的订阅方,从而达到“主动订阅,被动接收;主动发布,触发分发”的效果,使得ecu间的数据通信可以低延迟、高可靠、易实现。
[0138]
与前述应用功能实现方法示例相对应,本技术还提供一种服务器、车载ecu的订阅发布通信系统及相应的示例。
[0139]
图9是本技术示出的服务器的结构示意图。
[0140]
参见图9,本技术提供的一种服务器90,包括:接收模块91、识别模块92、处理模块93。
[0141]
接收模块91,用于接收发送方通过预设协议发送的数据帧。接收模块91在发送方是订阅方时,接收订阅方通过预设协议发送的数据帧。在发送方是发布方时,接收模块91接收发布方通过预设协议发送的数据帧。其中,接收的数据帧可以由发布方在接收到订阅方的对应订阅功能的数据帧后发送;或,接收的数据帧可以由发布方在发布数据发生更新后发送。其中,预设协议是一种基于以太网协议的中间件通信协议,可以在整车的各ecu之间实现简单轻量级的订阅-发布式的通信机制。
[0142]
识别模块92,用于根据接收模块91接收的数据帧的数据头识别出数据帧对应订阅功能或发布功能。识别模块92可以根据数据帧的数据头中的头部状态id的不同取值,识别
出数据帧对应订阅功能或发布功能。例如,头部状态id的取值不等于0时,对应订阅功能,头部状态id的取值等于0时,对应发布功能。头部状态id的取值对应订阅功能时,进一步根据不同取值分别对应订阅状态、取消订阅状态、订阅结果状态、取消订阅结果状态。
[0143]
处理模块93,用于在识别模块92识别出对应订阅功能后向发送方发送订阅功能响应结果,或在识别出对应发布功能后向接收方发送发布数据。处理模块93在发送方是订阅方时,在识别出对应订阅功能后向订阅方发送订阅功能响应;或,在发送方是订阅方时,在识别出对应订阅功能后向订阅方发送订阅功能响应和缓存的发布数据。处理模块93在发送方是发布方时,在识别出对应发布功能后向订阅方发送发布数据。
[0144]
识别模块92在根据数据帧的数据头识别出数据帧对应订阅功能或发布功能之后,还可以根据数据帧的数据体识别出订阅功能或发布功能对应的指定功能类型;则处理模块93可以在识别模块92识别出对应订阅功能和指定功能类型后向发送方发送订阅功能响应结果,或在识别模块92识别出对应发布功能和指定功能类型后向接收方发送发布数据。其中,数据帧的数据体包括方法id或数据体包括方法id和有效负载,其中方法id根据不同取值分别对应不同指定功能类型,有效负载承载不同指定功能类型对应的数据。例如,方法id取值为0
×
01表示对应订阅车速类型,取值为0
×
02表示对应订阅仪表亮度类型等。
[0145]
服务器90还可以包括存储模块94,用于存储method id与订阅方的关系。存储模块94可以通过具有预设格式的数据库将各methodid和订阅方进行订阅关系的绑定或解绑,从而可以简易便捷地对订阅方进行管理。
[0146]
从上述示例可以看出,本技术提供的方案,通过预设协议传输数据帧,可以根据数据帧的数据头识别出数据帧对应订阅功能或发布功能,然后在识别出对应订阅功能后向发送方发送订阅功能响应结果,或在识别出对应发布功能后向接收方发送发布数据。通过数据帧的数据头来对订阅功能或发布功能进行标识和区分,从而便于服务器根据不同功能可以快速做出不同响应,从而可以方便实现不同的ecu之间的轻量级数据通信,达到低延迟、高可靠且容易实现的效果;另外根据识别出的订阅功能或发布功能,可以快速分发和管理,使得在高并发的场景下也能使用,从而提高场景适用性。
[0147]
图10是本技术示出的车载ecu的订阅发布通信系统的结构示意图。
[0148]
参见图10,本技术提供的一种车载ecu的订阅发布通信系统100,包括:服务器90、订阅方ecu101和发布方ecu102。
[0149]
服务器90,用于接收订阅方ecu101或发布方ecu102通过预设协议发送的数据帧;根据数据帧的数据头识别出数据帧对应订阅功能或发布功能;在识别出对应订阅功能后向订阅方ecu101发送订阅功能响应结果,或在识别出对应发布功能后向订阅方ecu101发送发布数据。
[0150]
订阅方ecu101,用于向服务器90发送数据帧,其中数据帧的数据头对应订阅功能,接收服务器返回的订阅功能响应结果,或接收服务器发送的发布数据。
[0151]
发布方ecu102,用于向服务器90发送数据帧,其中数据帧的数据头对应发布功能。
[0152]
服务器90在识别出对应订阅功能后向订阅方ecu101发送订阅功能响应;或,服务器90在识别出对应订阅功能后向订阅方ecu101发送订阅功能响应和缓存的发布数据;或,服务器90在识别出对应发布功能后向订阅方ecu101发送发布数据。
[0153]
订阅方ecu101可以主动向服务器90发送数据帧,数据帧中的stateid设为0x01表
示订阅状态,所携带的methodid(s)设为其需要订阅的功能id,例如设为0x01表示订阅的是车速。服务器90分别对接收的数据帧中的stateid和methodid进行识别,根据stateid设为0x01识别为对应订阅状态,根据methodid设为0x01识别为对应表示订阅的是车速。服务器90将订阅方的注册信号信息记录在其数据库,注册成功后,服务器90发送包含stateid为0x03的数据帧反馈给订阅方ecu101,其中携带true(真)或者false(假)的状态,表示订阅的成功与否,也即订阅结果状态为真(true)时表示订阅成功,订阅结果状态为假(false)时表示订阅失败stateid。
[0154]
发布方ecu102向服务器90发送的数据帧中,将stateid设为0
×
00表示对应发布功能,所携带的methodid(s)设为传递对应的实际功能id,例如设为0x01表示传递的是车速,通过payload携带车速数据。服务器90接收到发布方ecu102发送的数据帧,根据stateid识别出对应发布功能后,不进行payload数据的解析,直接将原数据(method id+payload)转发给订阅方ecu101。后续订阅方ecu101执行payload的反序列操作(逐层拆包),从而完成数据的传输。
[0155]
关于上述示例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的示例中进行了详细描述,此处将不再做详细阐述说明。
[0156]
图11是本技术示出的电子设备的结构示意图。该电子设备例如可以是服务器或ecu。
[0157]
参见图9,电子设备1000包括存储器1010和处理器1020。
[0158]
处理器1020可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0159]
存储器1010可以包括各种类型的存储单元,例如系统内存、只读存储器(rom)和永久存储装置。其中,rom可以存储处理器1020或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器1010可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(例如dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器1010可以包括可读和/或写的可移除的存储设备,例如激光唱片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、min sd卡、micro-sd卡等)、磁性软盘等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
[0160]
存储器1010上存储有可执行代码,当可执行代码被处理器1020处理时,可以使处理器1020执行上文述及的方法中的部分或全部。
[0161]
此外,根据本技术的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本技术的上述方法中部分或全部步骤的计算机程序代码指令。
[0162]
或者,本技术还可以实施为一种计算机可读存储介质(或非暂时性机器可读存储介质或机器可读存储介质),其上存储有可执行代码(或计算机程序或计算机指令代码),当可执行代码(或计算机程序或计算机指令代码)被车辆设备(或服务器等)的处理器执行时,使处理器执行根据本技术的上述方法的各个步骤的部分或全部。
[0163]
以上已经描述了本技术的各示例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各示例。在不偏离所说明的各示例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各示例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各示例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1