具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本公开实施例提供了一种通信方法,所述通信方法应用于车辆,例如所述车辆为自动驾驶车辆。所述车辆包括电子控制单元(Electronic Control Unit,ECU),如图1所示,所述ECU与至少一个以太网(Ethernet)节点及至少一个控制器局域网(Controller AreaNetwork,CAN)节点通信连接。需要说明的是,所述ECU在一些实施例中也可以称为以太网-CAN控制器或以太网-CAN转换器等,本公开实施例对此不做具体限定。
下面结合附图,通过一些实施例及其应用场景对本申请实施例提供的通信方法进行详细地说明。
请参照图2,图2是本公开实施例提供的一种通信方法的流程图,如图2所示,所述方法包括以下步骤:
步骤S201、ECU接收目标以太网节点发送的第一请求报文,所述第一请求报文为基于SOA通信协议的报文,所述至少一个以太网节点包括所述目标以太网节点。
需要说明地,所述以太网节点是指能够挂接在以太网中的通信单元,并能够通过以太网实现各个以太网节点之间的通信。所述CAN节点是指能够挂接在CAN总线上的单元,并能够通过CAN总线实现各个CAN节点间的通信。
本公开实施例中,部署在车辆以太网上的目标以太网节点向ECU发送第一请求报文,该第一请求报文为基于SOA通信协议的报文,例如所述第一请求报文为基于网际互连协议的可扩展的面向服务的中间件(Scalable Service-Oriented MiddlewarE overInternet Protocol,SOME/IP)格式的报文。
需要说明地,所述目标以太网节点的数量可以是一个,也可以是一个以上,本公开对此不做具体限定。
步骤S202、所述ECU将所述第一请求报文转换成第二请求报文,并向第一目标CAN节点发送所述第二请求报文,所述第二请求报文为基于CAN通信协议的报文,所述至少一个CAN节点包括所述第一目标CAN节点。
本公开实施例中,ECU在接收到目标以太网节点发送的第一请求报文后,将基于SOA通信协议的第一请求报文转换为基于CAN通信协议的第二请求报文,并将所述第二请求报文发送给第一目标CAN节点。
可选地,ECU在将第一请求报文转换为第二请求报文的过程中,可以仅是对报文的格式进行转换,并不会对报文内容进行更改。也就是说,第一请求报文和第二请求报文实质上所表征的内容是一样的,仅是报文格式的不同。这样,车辆通过ECU对第一请求报文的格式进行转换,以将以太网节点发送的基于SOA通信协议形成的报文格式转换为基于CAN通信协议的报文格式,进而ECU也就能够向CAN节点发送转换后的报文(也即第二请求报文),以确保CAN节点能够准确读取所述第二请求报文的内容。
其中,ECU在获取到第一请求报文,可以是基于所述第一请求报文的请求内容来确定第一目标CAN节点。例如,所述第一请求报文请求的是服务A,该服务A由CAN节点1提供,则ECU将CAN节点1确定为第一目标CAN节点,并向该CAN节点1发送第二请求报文,以向该CAN节点1请求服务A。
需要说明地,所述第一目标CAN节点的数量可以是一个,也可以是一个以上,本公开对此不做具体限定。
步骤203、所述ECU接收所述第一目标CAN节点响应于所述第二请求报文发送的第一响应报文,所述第一响应报文为基于CAN通信协议的报文。
在该步骤中,第一目标CAN节点在接收到ECU发送的第二请求报文后,若所述第一目标CAN节点确定能够对所述第二请求报文所请求的内容进行响应,例如能够提供某服务,则第一目标CAN节点向ECU反馈第一响应报文,以对所述第二请求报文进行响应。
步骤S204、所述ECU将所第一响应报文转换为第二响应报文,并向所述目标以太网节点发送所述第二响应报文,以对所述第一请求报文进行响应,所述第二响应报文为基于SOA通信协议的报文。
在该步骤中,ECU在接收到第一目标CAN节点发送的第一响应报文后,将基于CAN通信协议的第一响应报文转换为基于SOA通信协议的第二响应报文,并将该第二响应报文发送给目标以太网节点,进而以对目标以太网节点发送的第一请求报文进行响应。
可选地,ECU在将第一响应报文转换为第二响应报文的过程中,可以仅是对报文的格式进行转换,并不会对报文内容进行更改。也就是说,第一响应报文和第二响应报文实质上所表征的内容是一样的,仅是报文格式的不同。这样,车辆通过ECU对第一响应报文的格式进行转换,从而将第一目标CAN节点发送的基于CAN通信协议形成的报文格式转换为基于SOA通信协议的报文格式,进而ECU也就能够向目标以太网节点发送转换后的报文(也即第二响应报文),以确保目标以太网节点能够准确读取所述第二响应报文的内容。
本公开实施例中,ECU在接收目标以太网发送的第一请求报文后,将基于SOA通信协议的第一请求报文转换为基于CAN通信协议的第二请求报文,并将第二请求报文发送给第一目标CAN节点,当ECU接收到第一目标CAN反馈的第一响应报文,能够将基于CAN通信协议的第一响应报文转换为基于SOA通信协议的第二响应报文,并将所述第二响应报文发送给所述目标以太网节点,以对第一请求报文进行响应。这样,也就使得车辆能够通过ECU实现了基于SOA通信协议的报文与基于CAN通信协议的报文之间的转换,也即通过ECU实现了以太网节点与CAN节点之间的通信,使得CAN网络的功能服务能够参与到以太网的SOA通信中的目的,从而有效利用了车辆上的CAN网络,提出了一种新的应用于车辆上的SOA通信方式。
可选地,所述ECU接收目标以太网节点发送的第一请求报文之前,所述方法还包括:
所述ECU向所述至少一个以太网节点广播服务注册表,所述服务注册表用于表征所述至少一个CAN节点和/或所述ECU所对应的服务。
本公开实施例中,ECU可以是先向所有的以太网节点广播服务注册表,也即通过该服务注册表来告知以太网节点所述至少一个CAN节点和/或所述ECU所具有的服务,进而使得以太网节点能够基于接收到的所述服务注册表来确定是否发起第一请求报文。例如,若目标以太网节点想要请求的服务包括在所述服务注册表中,则目标以太网节点可以向ECU发送第一请求报文,进而以通过ECU与第一目标CAN节点之间的通信来接收第一响应报文,以获得相应的服务。
这样,所述ECU通过将服务注册表广播给所述至少一个以太网节点,也就使得以太网节点能够获知所述ECU和/或所述至少一个CAN节点所具有的服务,也就使得以太网节点能够基于所述服务注册表来确定能够获得的服务,以避免以太网节点向ECU请求CAN节点和/或ECU没有的服务的请求报文,避免无效通信,提升通信准确率。
需要说明的是,所述服务注册表可以是车辆在首次上电的情况下,通过采集所有CAN节点对应的服务来注册完成。所述服务注册表可以是存在ECU的非易失存储器中的服务列表。所述服务注册表能够降低车辆因每次复位或故障恢复后,各个控制器上报自身具有的服务而造成CAN总线瞬时负载较高,也能够在车辆启动或重启等操作后,便于以太网节点根据服务注册表中注册的服务进行服务的定位查找和订阅等操作。
可选地,所述第一请求报文可以是用于表征所述目标以太网节点请求订阅第一服务的报文,这种情况下,所述步骤S204之后,所述方法还包括:
在发生第一服务的情况下,所述ECU接收所述第一目标CAN节点发送的第一服务报文,所述第一服务报文为基于CAN通信协议的报文;
所述ECU将所述第一服务报文转换为第二服务报文,并向所述目标以太网节点发送所述第二服务报文,所述第二服务报文为基于SOA通信协议的报文;
其中,所述第二服务报文用于表征所述目标以太网节点请求订阅的第一服务已发生。
本公开实施例中,若目标以太网节点发送的第一请求报文为用于请求订阅第一服务的报文,ECU在接收到该第一请求报文后,基于该第一请求报文所述请求的服务确定提供第一服务的节点为第一目标CAN节点,例如ECU可以是基于服务注册表来确定能够第一服务的第一目标CAN节点,服务注册表中可以是注册或者说存储了第一服务与第一目标CAN节点之间的对应关系。进一步地,ECU向第一目标CAN节点发送转换成了基于CAN通信协议的第二请求报文,以向第一目标CAN节点请求订阅第一服务。这种情况下,第一目标CAN节点向ECU反馈的第一响应报文,可以是用于表征第一服务订阅成功的响应报文,ECU将第一响应报文转换为基于SOA通信协议的第二响应报文后,将第二响应报文发送给所述目标以太网节点,以告知目标以太网节点该第一服务订阅成功。
进一步地,当第一服务发生的情况下,由于目标以太网节点向第一目标CAN节点订阅了该第一服务,则第一目标CAN节点向ECU发送第一服务报文,ECU将该基于CAN通信协议的第一服务报文转换为基于SOA通信协议的第二服务报文,并将该第二服务报文发送给所述目标以太网节点,以通过该第二服务报文告知目标以太网节点所述第一服务已发生。这样,也就使得所述目标以太网节点能够及时获知第一服务的发生。
需要说明地是,所述第二服务报文与第一服务报文可以仅是报文格式的不同,第一服务报文与第二服务报文所表征的内容可以是相同的。可选地,所述第一服务报文和第二服务报文还可以是包括所述第一服务的相关内容,例如所述第一服务的发生时间、所述第一服务的结果、所述第一服务的服务对象等。
可选地,所述ECU向所述以太网节点广播服务注册表之前,所述方法还包括:
所述ECU向所述至少一个CAN节点发送服务注册请求;
所述ECU接收所述至少一个CAN节点响应于所述服务注册请求上报的第一服务信息;
所述ECU基于所述第一服务信息进行服务注册,生成所述服务注册表。
例如,在车辆首次上电,或者说ECU首次上电的情况下,此时ECU还没有生成服务注册表,或者说ECU中已经存储有服务注册表,但服务注册表为空,例如服务注册表中所有字节均填充为0,目标标志位(例如more标识位)也置为0。这种情况下,ECU可以是向所有的CAN节点发送服务注册请求,例如所述服务注册请求可以是包括所述空的服务注册表。
可选地,ECU在发送服务注册请求时,可以是通过查询服务注册表中的条目车辆身份标识号(bus Identity document,bus ID)识别,将所述服务注册请求发送到所属通道,通过节点ID(NodeID)识别该服务注册请求发送到相应的CAN节点。
CAN节点在接收到所述服务注册请求后,获取所述服务注册请求所述携带的服务注册表,通过识别目标标志位是否为0来确定是否需要发送第一服务信息,例如若目标标识位为0,则表示服务注册表中没有注册该CAN节点所对应的服务信息,则所述CAN节点向ECU反馈该节点所对应的第一服务信息。
需要说明的是,每个CAN节点所发送的第一服务信息可以是不同的,或者,也可以是部分CAN节点发送的第一服务信息是相同的。所述第一服务信息用于表征CAN节点所具有的服务,或者说能够提供的服务,例如当有多个CAN节点所对应的服务相同的情况下,则这几个CAN节点发送的第一服务信息可以是相同的。
ECU在接收到所有CAN节点发送的第一服务信息后,也即能够基于收集到的第一服务信息来生成服务注册表,也就使得该服务注册表中也就存储了所有CAN节点所对应的服务。进而,当ECU接收到以太网节点发送的第一请求报文时,也就能够根据所述第一请求报文所请求的服务,来确定能够提供该服务的CAN节点,并将第一请求报文转换为第二请求报文,以向该CAN节点发送所述第二请求报文来请求相应的服务。
本公开实施例中,ECU通过向所有的CAN节点广播服务注册请求,进而使得CAN节点能够将自身所对应的服务上报给ECU,以使得ECU完成CAN节点对应服务的注册,并生成服务注册表,这样也就通过ECU实现了以太网节点与CAN节点之间的通信,使得CAN网络的功能服务能够参与到以太网的SOA通信中的目的,从而有效利用了车辆上的CAN网络。
可选地,所述ECU基于所述第一服务信息进行服务注册,生成所述服务注册表之后,所述方法还包括:
所述ECU向所述至少一个CAN节点广播所述服务注册表;
所述ECU接收第二目标CAN节点上报的第二服务信息,所述第二服务信息为所述服务注册表中没有的服务信息,所述至少一个CAN节点包括所述第二目标CAN节点;
所述ECU基于所述第二服务信息对所述服务注册表进行更新。
本公开实施例中,ECU在生成所述服务注册表后,ECU能够再向所有的CAN节点广播所述服务注册表。例如,所述服务注册表是在车辆首次上电后生成的,当车辆发生故障而下电后再次上电,或者车辆系统更新而再次上电后,ECU可以是将已经生成存储的服务注册表广播给所有的CAN节点。
CAN节点在接收到所述服务注册表后,可以是识别所述服务注册表中是否注册有自身所对应的服务,若没有注册,则该CAN节点可以是将自身对应的服务以第二服务信息的形式上报给ECU。进而所述ECU基于接收到的第二服务信息对所述服务注册表进行更新,也即将所述第二服务信息写入所述服务注册表,进而更新后的服务注册表也就包括了新写入的第二服务信息。这样,也就能够及时对ECU的服务注册表进行查漏补缺,以确保所述服务注册表能够囊括所有的CAN节点所对应的服务,从而能够更多地对以太网节点发送的请求报文进行响应。
需要说明的是,若CAN节点在接收到所述服务注册表后,若识别到所述服务注册表中已经注册有自身所对应的服务,则CAN节点可以是对该广播不进行响应,例如CAN节点可以是不向ECU发送任何信息。这样,也就能够避免重复向ECU发送相同的服务信息,从而能够降低传输能耗,同时ECU也能够避免对相同的服务信息进行重复注册,降低ECU的资源消耗。
可选地,所述ECU向所述至少一个CAN节点广播所述服务注册表,包括:
所述ECU向所述至少一个CAN节点广播所述服务注册表,并向所述至少一个以太网节点广播第一消息。
其中,所述第一消息用于表征所述服务注册表处于第一状态,在所述服务注册表处于第一状态的情况下,所述CAN节点对所述第二请求报文不进行响应。
本公开实施例中,所述ECU向所有的CAN节点广播服务注册表,进而CAN节点能够将服务注册表中没有的第二服务信息上报给ECU,以使得ECU能够对服务注册表进行更新,这种情况下也即服务注册表处于更新状态,则此时CAN节点对于ECU发送的第二请求报文不会进行响应,也即相当于对以太网节点的第一请求报文不进行响应。因此,ECU在向所述至少一个CAN节点广播服务注册表时,同时向所有的以太网节点广播第一消息,以通过所述第一消息告知以太网节点当前服务注册表处于第一状态,以太网节点如需要订阅或者请求服务需要稍后进行。
这样,也就能够在CAN节点在向ECU上报服务,ECU在对服务注册表进行更新的过程中,避免ECU需要对以太网节点的服务请求进行响应而造成ECU通信混乱,进而以有效保证ECU与CAN节点和以太网节点之间的通信顺畅性。
可选地,所述ECU向所述至少一个以太网节点广播服务注册表,包括:
在所述服务注册表处于第二状态的情况下,所述ECU向所述至少一个以太网节点广播所述服务注册表;
其中,在所述服务注册表处于第二状态的情况下,所述CAN节点能够对所述第二请求报文进行响应。
本公开实施例中,当ECU向所有的以太网节点广播服务注册表时,说明此时服务注册表已经处于更新完的状态(也即所述第二状态),ECU当前能够接收以太网节点发送的第一请求报文,CAN节点能够对第二请求报文金星秀响应,也即ECU能够对以太网节点发送的第一请求报文进行响应。
可选地,ECU在向所述至少一个以太网节点广播服务注册表时,可以是同步向所有的以太网节点发送第二消息,以告知所有的以太网节点,当前的服务注册表已经完成了更新。
本公开实施例中,在服务注册表处于第二状态的情况下,ECU才向所述至少一个以太网节点广播服务注册表,这样能够确保ECU是在服务注册表完成更新的情况下对以太网节点的服务请求进行响应,也即确保了当前的服务注册表是囊括了所有CAN节点所对应的服务,进而以确保能够更全面地对以太网节点的服务请求进行响应。
需要说明地,本公开实施例中的CAN节点可以是灵活数据的CAN(CAN FlexibleData,CAN FD)节点。由于CAN报文数据域长度仅为8字节(byte),为了降低总线负载率,本公开中选用数据域长度更大的CAN FD报文,也即使用64bytes的CAN FD的报文。也就是说,本公开实施例中的基于CAN通信协议的报文,如第二请求报文和第一响应报文为CAN FD格式的报文。
请参照图3a,图3a所示是一帧CAN FD报文的示意图,CAN FD报文的数据长度为64bytes,其中未使用的字节可以是填充0xFF,如图3a中所示的第四行至第七行对应的字节即为未使用的字节。
下面依次介绍各个字节域的具体含义。
Flag
Flag长度为1个字节,8比特(bit),分为三部分:更多(More),包装类型(PackageType)和车辆身份标识号(Bus ID)。以下对这三部分进行分别介绍。
More:长度为1bit,在进行服务注册表的广播或者更新反馈的过程中,用于表示是否有更多连续报文需要发送或者接收。例如More为1表示有后续连续的报文需要发送或者接收;More为0表示该报文为最后一帧。
PackageType:长度为3bit,用于表示CAN FD报文的类型。可选地,该字节中各数字的含义如下:0表示ECU广播服务注册表的报文;1表示CAN FD节点发送服务更新内容,这种情况下CANID可以使用节点ID(NodeID);2表示方法请求(method request);3表示方法响应(method response);4表示订阅事件组请求;5表示订阅事件组响应;6表示事件组发布;7表示预留位。
Bus ID:表示CAN FD通道数。
NodeID
NodeID表示CAN FD节点编号,每个通道是独立的。
服务ID(ServiceID)
表示服务编号,也即CAN FD节点所对应的服务的编号,该编号在整车范围内是唯一的。
方法/事件ID(MethodID/EventID)
表示该服务的methodID或eventID,每个服务对应的MethodID/EventID也是独立的。
服务实例(InstanceID)
表示该服务的服务实例编号,每个服务对应的InstanceID是独立的。
版本号(Version)
表示该服务实例的版本号。
变更类型(ChangeType)
表示服务变更的类型,例如0x01表示服务增加,0x02表示服务变更,0x03表示服务删减。
预留(Reserved)
表示预留字节。
以下对上述PackageType为不同数值时所表征的报文类型进行具体说明。
PackageType=0表示广播服务注册表的报文:
该报文由ECU发送给CAN节点。ECU在发送该报文时,可以通过识别服务注册表中的BusID识别通道,并根据这个数据打包一个或者多个CAN FD报文,CAN FD报文中未使用的字节可以是填充0xFF。对于需要发送多帧报文时,可以是按照10ms周期发送。
由于ECU在复位、车辆关闭(BusOff)恢复后,将自身存储的服务注册表广播告知所有的CAN节点,可以是按照通道以指数周期广播发送服务注册表中服务信息。
其中,ECU第一次上电,服务注册表为空,也需要该报文,所有字节可以是均填充0xFF,more置位0。
ECU在发送该报文时,通过查询服务注册表中的条目busID识别发送该服务的所属通道,通过NodeID识别发送该服务到所属CAN节点。CAN节点在接收到该报文后,通过识别该报文中的more标志位来识别是否广播完成,例如more为0表示该报文为最后一帧,广播已经完成,more为1表示后续还有报文需要接收或者发送,广播未完成。
PackageType=1表示反馈服务表更的报文:
该报文由CAN节点发送给ECU,用于CAN节点在收到广播服务注册表后,根据自身服务对比后反馈服务变更。如果有服务发生变更,通过该报文反馈至ECU,如果没有服务发生变更,则将该报文的more置0,未使用字节可以是填充0xFF。
需要多帧CAN FD报文时,可以是以10ms周期发送,最后一帧more置0,未使用字节可以是填充0xFF。
ECU可以是通过more识别是否是最后一帧反馈报文。ECU根据服务变更项对服务注册表进行增减、修改等变更反馈。
PackageType=2表示Method请求报文:
该报文由ECU发送给CAN节点,用于ECU收到其他以太网节点的服务请求时,转发请求报文到CAN节点,即以太网节点作为客户(Client)向CAN节点发送请求报文。
需要说明的是,ECU需要将以太网节点发送的请求报文进行格式转换,也即将SOME/IP报文中的Method Request报文解析并组包成CAN数据报文后转发给CAN节点,也即上述方法实施例中的将第一请求报文转换为第二请求报文后发送给CAN节点。
PackageType=3表示Method响应报文:
该报文由CAN节点发送给ECU,用于CAN节点反馈method的响应报文。
PackageType=4表示订阅请求报文:
该报文由ECU发送给CAN节点,用于ECU向其他以太网节点对CAN节点发送订阅请求报文。其中,ECU需要将SOME/IP的订阅报文重组成CAN订阅请求报文,也即上述方法实施例中的将第一请求报文转换为第二请求报文。
PackageType=5表示订阅响应报文:
该报文由CAN节点发送给ECU,用于CAN节点向ECU发送订阅响应报文,进而通过ECU转发至有订阅需求的以太网节点。其中,ECU需要将CAN订阅响应报文重组成SOME/IP的订阅响应报文,也即上述方法实施例中的将第一响应报文转换为第二响应报文,进而以转发给发起订阅请求的以太网节点。
PackageType=6表示事件发布报文:
该报文由CAN节点发送给ECU,用于CAN节点发布以太网节点已订阅的事件。
PackageType=7表示预留报文:
该报文为预留报文,暂不限定应用场景。
本公开实施例中,服务注册表的更新可以是包括新增、修改和删除,以下对这几种情况进行具体说明。
请参照图3b,当服务注册表的更新为增加服务时,增加的服务可以是追加在服务注册表的最后,如图3b中所述的第n+1行、第n+2行也即是增加的服务所对应的数据内容。可选地,服务注册表可以是对应预留4k的存储空间,以便能够存储不少于500个服务条目。服务注册表启动后应该通过独权非易失存储器以在随机存取存储器(RAM)中建立其映射表,在休眠、追加、删减或修改等情形下更新到非易失存储器中。
请参照图3c,当服务注册表的更新为修改服务时,可以是在接收到相应的报文后立即进行修改,并存储在非易失性存储器中。如图3c所示,所述修改服务也即对第2行和第n行中5bytes对应的版本(version)进行了修改。
请参照图3d,当服务注册表的更新为删减服务时,删减后的空间应该在下次存储到非易失存储器时压紧删减的存储空间。如图3d所示,对第3行的服务内容进行了删减,对应的总空间也就减少了一行。
需要说明地,CAN报文、服务注册表和SOME/IP报文映射关系中,CAN报文为8bytes存储一个条目,如上所述其中bytes6用于表示该服务的变更类型,不会存储在服务注册表中,其他内容都会存储在服务注册表中。请参照图3e,以太网节点对应的SOME/IP报文中的服务ID(ServerID)、MethodID/EventID、客户ID(ClientID)均为2个bytes,为此补充0xFF表示该部分内容来源服务注册表,同时满足了SOME/IP的数据长度填充规则。SOME/IP的其他部分,如长度(length)、会话号(SessionID)、协议版本(ProtocolVersion)、版本(Version)、消息类型(MessageType)、重编码类型(RecodeType),由SOME/IP协议填充。
请参照图3f,服务注册表对应也为8bytes,每个字节域的内容可以是参照上述CANFD报文的描述,此处不再赘述。
ECU发送至CAN节点的报文,可以是各个CAN通道使用的CANID一致,例如使用优先级最高的0x000,防止造成数据传输时延较大。由CAN节点发送给ECU的报文,可以是与CAN数据帧中的NodeID保持一致。
如上方法实施例中所述的,服务注册表包括第一状态和第二状态,为更好地描述,后续实施例中将以lock状态来表征第一状态,ready状态来表征第二状态;lock状态是指CAN节点的服务注册更新尚未完成的状态,ready状态是指CAN节点的服务注册更新已经完成的状态;在lock和ready状态下,ECU自身的服务正常参与SOA通信服务。
在ECU启动且具有发送能力后,ECU可以是在CAN网段以指数增长的周期发送服务注册表广播报文,可以是一共发送3个周期,以防止部分CAN节点启动速度慢,无法正常接收到服务注册表。
ECU在上电、复位或者故障恢复后,需要向各个CAN节点广播服务注册表,该过程在lock状态下进行。
在lock状态下,ECU可以是以100ms周期广播SOME/IP-SD关闭服务(OfferService)报文,如图3g所示,该报文长度为20bytes,且Reserved字节域填充为0x000000,该报文的目的是告知所有其他以太网节点CAN节点的服务注册表当前处于Lock状态,以太网节点如需订阅或者请求服务都需要稍后重试。
等待CAN节点反馈服务变更反馈均完成后,ECU广播发送SOME/IP-SDOfferService报文,数据域可以是填充为0xFFFFFF告知所有以太网节点的所有服务处于ready状态。
需要说明地,lock和ready的状态切换,不影响ECU自身服务与其他以太网节点间的SOME/IP通信。
在ready状态下,CAN节点作为服务者(Server),以太网节点作为客户(Client)的应用情形包括以下几种场景。
场景一
请参照图3h,进入ready状态后,ECU主动发送OfferService告知以太网节点服务注册表中具有的服务。以太网节点作为client可以向ECU发送订阅事件(SubScribeEvent)报文,订阅服务注册表中具有的服务。ECU接收到订阅报文后,立即将订阅事件传递到相应的CAN节点;CAN节点收到订阅请求后,反馈订阅响应(SubScribeEvent_Ack)报文,并发送初始化状态报文,该报文应该在订阅事件响应(SubScribeEvent_Ack)后立即发送;此后,每次事件发生时,发送Event事件报文。
场景二
请参照图3i,在ready状态下,以太网节点作为client可以是向ECU发送请求(request)报文,ECU接收到request报文后,立即转换成CAN通信协议的报文后传递给CAN节点,CAN节点收到请求后,反馈响应(response)报文,ECU接收到响应报文后,将该响应报文重组成SOME/IP报文并转发给相应的发起request请求的以太网节点。
场景三
请参照图3j,在ready状态下,CAN节点作为server,在事件(或者说服务)发生时,将event报文发送至ECU,ECU接收到event报文后,立即重组成SOME/IP报文并发送至相应的订阅了该事件(服务)的以太网节点。
场景四
请参照图3k,在ready状态下,在以太网节点对CAN节点的区域(field)进行写入(setter)请求时,以太网节点向ECU发送写入请求(Setter_request)报文,ECU将该报文重组成CAN通信协议格式的报文后发送至CAN节点,setter过程完成后,CAN节点发送写入响应(Setter_response)报文至ECU,ECU重组成SOME/IP报文后发送至发起该请求的以太网节点。
在以太网节点对CAN节点的field进行读取(getter)请求时,以太网节点向ECU发送读取请求(Getter_request)报文,ECU将该请求报文重组成CAN通信协议格式的报文后发送至CAN节点,CAN节点发送响应(Getter_response)报文至ECU,ECU重组成SOME/IP报文后发送至发起该请求的以太网节点。
当field事件发生时,CAN节点主动发送通知(Notifer)报文至ECU,ECU接收并重组成SOME/IP报文后发送至相应的发起过setter请求的以太网节点。
请参照图4,本公开实施例还提供了一种通信装置,所述装置应用于车辆,所述车辆包括ECU,所述ECU与至少一个以太网节点及至少一个CAN节点通信连接。如图4所示,通信装置400包括:
第一接收模块401,用于通过所述ECU接收目标以太网节点发送的第一请求报文,所述第一请求报文为基于SOA通信协议的报文,所述至少一个以太网节点包括所述目标以太网节点;
第一发送模块402,用于通过所述ECU将所述第一请求报文转换成第二请求报文,并向第一目标CAN节点发送所述第二请求报文,所述第二请求报文为基于CAN通信协议的报文,所述至少一个CAN节点包括所述第一目标CAN节点;
第二接收模块403,用于通过所述ECU接收所述第一目标CAN节点响应于所述第二请求报文发送的第一响应报文,所述第一响应报文为基于CAN通信协议的报文;
第二发送模块404,用于通过所述ECU将所第一响应报文转换为第二响应报文,并向所述目标以太网节点发送所述第二响应报文,以对所述第一请求报文进行响应,所述第二响应报文为基于SOA通信协议的报文。
可选地,所述装置还包括:
第一广播模块,用于通过所述ECU向所述至少一个以太网节点广播服务注册表,所述服务注册表用于表征所述至少一个CAN节点和/或所述ECU所对应的服务。
可选地,所述第一请求报文用于表征所述目标以太网节点请求订阅第一服务的报文;所述装置还包括:
第三接收模块,用于在发生第一服务的情况下,通过所述ECU接收所述第一目标CAN节点发送的第一服务报文,所述第一服务报文为基于CAN通信协议的报文;
第三发送模块,用于通过所述ECU将所述第一服务报文转换为第二服务报文,并向所述目标以太网节点发送所述第二服务报文,所述第二服务报文为基于SOA通信协议的报文;
其中,所述第二服务报文用于表征所述目标以太网节点请求订阅的第一服务已发生。
可选地,所述装置还包括:
第四发送模块,用于通过所述ECU向所述至少一个CAN节点发送服务注册请求;
第四接收模块,用于通过所述ECU接收所述至少一个CAN节点响应于所述服务注册请求上报的第一服务信息;
生成模块,用于通过所述ECU基于所述第一服务信息进行服务注册,生成所述服务注册表。
可选地,所述装置还包括:
第二广播模块,用于通过所述ECU向所述至少一个CAN节点广播所述服务注册表;
第五接收模块,用于通过所述ECU接收第二目标CAN节点上报的第二服务信息,所述第二服务信息为所述服务注册表中没有的服务信息,所述至少一个CAN节点包括所述第二目标CAN节点;
更新模块,用于通过所述ECU基于所述第二服务信息对所述服务注册表进行更新。
可选地,所述第二广播模块还用于:
通过所述ECU向所述至少一个CAN节点广播所述服务注册表,并向所述至少一个以太网节点广播第一消息;
其中,所述第一消息用于表征所述服务注册表处于第一状态,在所述服务注册表处于第一状态的情况下,所述CAN节点对所述第二请求报文不进行响应。
可选地,所述第一广播模块还用于:
在所述服务注册表处于第二状态的情况下,通过所述ECU向所述至少一个以太网节点广播所述服务注册表;
其中,在所述服务注册表处于第二状态的情况下,所述CAN节点能够对所述第二请求报文进行响应。
本公开实施例中,所述装置能够通过ECU实现了基于SOA通信协议的报文与基于CAN通信协议的报文之间的转换,也即通过ECU实现了以太网节点与CAN节点之间的通信,使得CAN网络的功能服务能够参与到以太网的SOA通信中的目的。
需要说明地,本公开实施例提供的通信装置400能够实现上述图2所述方法实施例中的全部技术过程,并能达到相同的技术效果,为避免重复,此处不再赘述。
本公开实施例还提供了一种自动驾驶车辆,能够被配置为执行上述图2所述方法实施例中的全部技术过程,并能达到相同的技术效果,为避免重复,此处不再赘述。
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图5所示,电子设备500包括计算单元501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储电子设备500操作所需的各种程序和数据。计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
电子设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许电子设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如上述通信方法。例如,在一些实施例中,通信方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到电子设备500上。当计算机程序加载到RAM 503并由计算单元501执行时,可以执行上文描述的通信方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行上述通信方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。