專(zhuān)利名稱(chēng)::自適應(yīng)通信主體物理拓?fù)浣Y(jié)構(gòu)的多ecu消息通信方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及多電子控制單元(簡(jiǎn)稱(chēng)ECU)組成的汽車(chē)電子分布式嵌入式系統(tǒng),尤其是涉及一種自適應(yīng)通信主體物理拓?fù)浣Y(jié)構(gòu)的多ECU消息通信方法。技術(shù)背景隨著汽車(chē)電子技術(shù)和產(chǎn)品在汽車(chē)產(chǎn)業(yè)中的廣泛應(yīng)用,汽車(chē)上應(yīng)用的分布式嵌入式系統(tǒng)的規(guī)模越來(lái)越大、性能越來(lái)越好。目前一輛汽車(chē)上所包含的ECU數(shù)量,已經(jīng)從幾個(gè)、十幾個(gè),迅速擴(kuò)大到幾十個(gè)、上百個(gè)。與之同時(shí),汽車(chē)電子嵌入式系統(tǒng)的開(kāi)發(fā)和更新周期越來(lái)越短。這些都要求汽車(chē)電子嵌入式系統(tǒng)的開(kāi)發(fā)成本越來(lái)越低,效率越來(lái)越高。多ECU的分布式系統(tǒng)協(xié)同工作的重要基礎(chǔ)是多個(gè)ECU上不同的通信主體的之間的消息傳遞。這些通信主體,有的共存于同一個(gè)ECU之內(nèi),也有可能存在于不同的ECU之內(nèi);甚至于,在一組相互通信的通信主體中,有的存在于同一個(gè)ECU內(nèi),有的存在于不同ECU上。同一個(gè)ECU上通信主體間的通信,可以通過(guò)共同內(nèi)存地址等方式;不同ECU上通信主體的通信,則需要通過(guò)總線(xiàn)連接。如圖1所示,介紹現(xiàn)有技術(shù)下多ECU系統(tǒng)中通信模式。圖1所示系統(tǒng)有3個(gè)ECU,分別為ECU1、ECU2、ECU3;有5個(gè)通信主體,分別為通信主體一、通信主體二、通信主體三、通信主體四、通信主體五,其中通信主體一和通信主體二分布在ECU1上,通信主體三和通信主體四分布在ECU2上,通信主體五分布在ECU3上;有兩條總線(xiàn),分別為總線(xiàn)一、總線(xiàn)二,其中ECU1與ECU2連接到總線(xiàn)一上,ECU2與ECU3連接到總線(xiàn)二上。圖1所示,通信主體一與通信主體二之間,以及通信主體三與通信主體四之間的通信是同ECU內(nèi)通信主體之間的通信,使用內(nèi)部通信接口;而某一通信主體與其他ECU上的通信主體的通信需要通過(guò)外部通信接口調(diào)用總線(xiàn)驅(qū)動(dòng)來(lái)進(jìn)行;ECU2上存在兩個(gè)總線(xiàn)驅(qū)動(dòng),因此通信主體三和通信主體四需要分別與兩個(gè)總線(xiàn)驅(qū)動(dòng)建立調(diào)用關(guān)系,當(dāng)通信主體三或通信主體同通信主體一或通信主體二進(jìn)行通信時(shí),調(diào)用總線(xiàn)一驅(qū)動(dòng),當(dāng)與通信主體五通信時(shí),調(diào)用總線(xiàn)二驅(qū)動(dòng);通信主體一或通信主體二與通信主體五之間的通信,需要ECU2上實(shí)現(xiàn)有路由程序?qū)⑼ㄐ艃?nèi)容在總線(xiàn)一與總線(xiàn)二之間轉(zhuǎn)發(fā)。當(dāng)前的汽車(chē)電子分布式嵌入式系統(tǒng)中,同ECU內(nèi)和不同ECU上通信主體的通信,因?yàn)閷?shí)現(xiàn)技術(shù)不同,所以采用的接口往往也不同。這會(huì)造成兩方面的弊端其一,接口的復(fù)雜會(huì)帶來(lái)開(kāi)發(fā)成本的提高;其二,當(dāng)系統(tǒng)升級(jí),通信主體的物理分布拓?fù)浣Y(jié)構(gòu)改變后,原本在同ECU內(nèi)的通信主體有可能分布在不同ECU上,原本不在同一個(gè)ECU上的通信主體也有可能被分布在同一個(gè)ECU上,升級(jí)前原有代碼不能被復(fù)用。
發(fā)明內(nèi)容為解決汽車(chē)電子領(lǐng)域多ECU分布式嵌入式系統(tǒng)開(kāi)發(fā)中ECU內(nèi)和多ECU間通信接口設(shè)計(jì)問(wèn)題,本發(fā)明的目的在于提供一種自適應(yīng)通信主體物理拓?fù)浣Y(jié)構(gòu)的多ECU消息通信方法。本發(fā)明為解決該技術(shù)問(wèn)題所采用的技術(shù)方案。對(duì)于多ECU組成的分布式嵌入式系統(tǒng),提供統(tǒng)一的接口同時(shí)用于同一ECU內(nèi)通信主體之間的內(nèi)部通信和不同ECU內(nèi)通信主體之間的外部通信;通信主體通過(guò)ECU內(nèi)通信層來(lái)與其他通信主體通信;通信主體僅向通信層發(fā)送消息并僅從通信層獲取消息;通信層負(fù)責(zé)消息的傳送,進(jìn)而屏蔽各通信主體物理分布拓?fù)湫畔?,以及ECU上總線(xiàn)數(shù)量與類(lèi)型信息。具體步驟如下1)設(shè)計(jì)各通信主體間通信時(shí)使用的消息,每個(gè)消息指定唯一的消息編號(hào);2)根據(jù)消息編號(hào)、通信主體在各ECU間分布情況,為每個(gè)ECU上的通信層生成消息配置信息;3)通信層根據(jù)消息配置信息來(lái)確定當(dāng)通信主體申請(qǐng)發(fā)送消息和從接收到消息時(shí)對(duì)消息進(jìn)行的操作。所述的消息配置信息包括1)ECU內(nèi)通信層維護(hù)一個(gè)消息配置信息表,表中每一個(gè)表項(xiàng)對(duì)應(yīng)于此ECU需要對(duì)之進(jìn)行操作的消息,表項(xiàng)包括消息編號(hào)、本地通信主體接收數(shù)量、本地通信主體接收列表、外部總線(xiàn)轉(zhuǎn)發(fā)標(biāo)識(shí)、外部總線(xiàn)轉(zhuǎn)發(fā)列表;2)其中每個(gè)表項(xiàng)中的本地通信主體接收列表包括一系列表項(xiàng),表項(xiàng)數(shù)目等于ECU中接收此消息的通信主體數(shù)目,每個(gè)表項(xiàng)包括通信主體標(biāo)識(shí)符、通信主體通知接口、通信主體消息傳遞渠道;3)消息配置信息表項(xiàng)中的外部總線(xiàn)轉(zhuǎn)發(fā)列表包括一些表項(xiàng),表項(xiàng)數(shù)目等于ECU中外部總線(xiàn)的數(shù)量,每個(gè)表項(xiàng)內(nèi)容包括是否在此總線(xiàn)轉(zhuǎn)發(fā)標(biāo)識(shí)、總線(xiàn)轉(zhuǎn)發(fā)函數(shù)接口。所述的通信層收到通信主體的發(fā)送消息請(qǐng)求后的處理步驟如下l)査看是否有本ECU內(nèi)的通信主體接收此消息,即此消息對(duì)應(yīng)的消息配置信息表中的表項(xiàng)本地通信主體接收數(shù)量的值是否為o,若有,則根據(jù)該表項(xiàng)中的本地通信主體接收列表各表項(xiàng)的設(shè)置進(jìn)行消息發(fā)送,然后執(zhí)行第二步;若無(wú),則直接執(zhí)行第二步;2)查看是否需要向外部總線(xiàn)轉(zhuǎn)發(fā)此消息,查看該消息對(duì)應(yīng)的消息配置信息表的表項(xiàng)中外部轉(zhuǎn)發(fā)標(biāo)識(shí)的值,若有,則根據(jù)該表項(xiàng)中的外部轉(zhuǎn)發(fā)列表中各表項(xiàng)設(shè)置進(jìn)行轉(zhuǎn)發(fā);3)發(fā)送處理完畢。通信層接收到從外部總線(xiàn)提交的接收消息請(qǐng)求后的處理步驟如下1)査看是否有本ECU內(nèi)的通信主體接收此消息,即此消息對(duì)應(yīng)的消息配置信息表中的表項(xiàng)本地通信主體接收數(shù)量的值是否為O,若有,則根據(jù)該表項(xiàng)中的本地通信主體接收列表各表項(xiàng)的設(shè)置進(jìn)行消息發(fā)送,然后執(zhí)行第二步。若無(wú),則直接執(zhí)行第二步;2)查看是否需要向外部總線(xiàn)轉(zhuǎn)發(fā)此消息,査看該消息對(duì)應(yīng)的消息配置信息表的表項(xiàng)中外部轉(zhuǎn)發(fā)標(biāo)識(shí)的值,若有,則根據(jù)該表項(xiàng)中的外部轉(zhuǎn)發(fā)列表中各表項(xiàng)設(shè)置進(jìn)行轉(zhuǎn)發(fā);3)接收處理完畢。本發(fā)明具有的有益效果是1)統(tǒng)一的內(nèi)部通信和外部通信接口,接口簡(jiǎn)單,方便系統(tǒng)開(kāi)發(fā);2)向通信主體完全屏蔽系統(tǒng)物理分布拓?fù)浣Y(jié)構(gòu)和本ECU總線(xiàn)情況,當(dāng)系統(tǒng)升級(jí)導(dǎo)致系統(tǒng)物理分布拓?fù)浣Y(jié)構(gòu)或本ECU總線(xiàn)情況改變后,通信主體代碼不需要修改,可以直接被復(fù)用;3)自動(dòng)實(shí)現(xiàn)路由功能,通信層實(shí)現(xiàn)消息轉(zhuǎn)發(fā)過(guò)程中自動(dòng)實(shí)現(xiàn)了路由功能,不需要單獨(dú)的路由程序。具有多條總線(xiàn)的ECU上的通信層,在收到一條外部總線(xiàn)上發(fā)來(lái)的消息之后,會(huì)自動(dòng)選擇是否需要向另外的總線(xiàn)轉(zhuǎn)發(fā)消息,進(jìn)而實(shí)現(xiàn)了路由功能。圖1是現(xiàn)有技術(shù)下多ECU系統(tǒng)中通信模式。圖2是本發(fā)明設(shè)計(jì)的多ECU系統(tǒng)通信模式。圖3是本發(fā)明設(shè)計(jì)的消息格式。圖4是ECU內(nèi)通信層消息配置信息數(shù)據(jù)結(jié)構(gòu)。具體實(shí)施方式下結(jié)合附圖和實(shí)施例對(duì)發(fā)明作進(jìn)一步說(shuō)明。在整個(gè)系統(tǒng)層面的軟件體系結(jié)構(gòu)設(shè)計(jì)上,將通信主體一下的通信層與底層通信總線(xiàn)視作虛擬通信總線(xiàn)。虛擬通信總線(xiàn)向上層通信主體提供發(fā)送/接受消息的接口;所有通信主體通過(guò)且僅通過(guò)虛擬通信總線(xiàn)與其他通信主體進(jìn)行通信。虛擬通信總線(xiàn)自行維護(hù)關(guān)于通信主體物理分布的拓?fù)浣Y(jié)構(gòu),并據(jù)此選擇恰當(dāng)?shù)耐忿D(zhuǎn)發(fā)消息,并向正確的目標(biāo)通信主體發(fā)送消息。在某一個(gè)具體ECU上,虛擬通信總線(xiàn)的概念具體實(shí)現(xiàn)為一個(gè)底層總線(xiàn)驅(qū)動(dòng)和基于其上的通信層來(lái)實(shí)現(xiàn)。ECU內(nèi)的通信層,維護(hù)有本ECU內(nèi)所有通信主體可能發(fā)送、接受以及本ECU需要負(fù)責(zé)轉(zhuǎn)發(fā)的消息信息,包括-(1)每個(gè)消息是否有本ECU內(nèi)的通信主體接收,哪個(gè)通信主體接收;(2)以及是否有其他ECU上通信主體接收,通過(guò)哪條總線(xiàn)發(fā)出;(3)收到的消息是否需要向其他總線(xiàn)轉(zhuǎn)發(fā),向哪條總線(xiàn)轉(zhuǎn)發(fā)。本發(fā)明實(shí)現(xiàn)的具體步驟如下-1、設(shè)計(jì)規(guī)劃系統(tǒng)內(nèi)所有消息的類(lèi)型和用途,為每個(gè)消息分配一個(gè)消息編號(hào);2、根據(jù)消息編號(hào),結(jié)合通信主體的物理分布拓?fù)湫畔?,為每一個(gè)ECU的通信層生成消息配置信息;3、通信主體通過(guò)消息發(fā)送接口向通信層發(fā)送消息。通信層收到消息后,根據(jù)消息編號(hào)査找本地的配置信息。如果有本地通信主體需要接收此消息,則調(diào)用通信層接收消息的接口向?qū)?yīng)的通信主體發(fā)送消息。如果有其他ECU上通信主體需要接收此消息,則在對(duì)應(yīng)總線(xiàn)上發(fā)送消息;4、通信層從總線(xiàn)上獲得外部發(fā)送來(lái)的消息后,根據(jù)消息編號(hào)查找本地配置信息,如果有本地通信主體需要接收此消息,則調(diào)用通信層接收消息的接口向?qū)?yīng)的通信主體發(fā)送消息。如果此消息需要被轉(zhuǎn)發(fā),則調(diào)用響應(yīng)總線(xiàn)的驅(qū)動(dòng)程序進(jìn)行消息發(fā)送;5、通信層接收消息的接口收到消息后,根據(jù)消息編號(hào)査找本地配置信息,通過(guò)配置信息中設(shè)置的數(shù)據(jù)緩沖區(qū)或者管道將消息內(nèi)的數(shù)據(jù)發(fā)送給通信主體,通過(guò)配置信息中設(shè)置的響應(yīng)函數(shù)通知通信主體新消息的到達(dá);6、當(dāng)系統(tǒng)需要對(duì)物理拓?fù)浣Y(jié)構(gòu)重新進(jìn)行設(shè)計(jì)分配時(shí),只要將消息編號(hào)信息與新的通信主體物理分布拓?fù)浣Y(jié)構(gòu)一起生成新的ECU通信層配置信息,即可在不修改通信主體代碼的前提下,完成系統(tǒng)重新設(shè)計(jì)和部署。如圖2所示,介紹本發(fā)明中設(shè)計(jì)的通信機(jī)制和接口。圖2所示ECU、通信主體、總線(xiàn)數(shù)量和分布情況同圖1。軟件結(jié)構(gòu)上,在圖1中的通信主體與總線(xiàn)驅(qū)動(dòng)之間增加一個(gè)通信層,提供統(tǒng)一通信接口。所有通信主體,與且僅與所在ECU的通信層通過(guò)統(tǒng)一通信接口進(jìn)行通信。由通信層負(fù)責(zé)判斷目的通信主體是在同ECU上還是其他ECU上,在同ECU上時(shí)在ECU內(nèi)部轉(zhuǎn)發(fā)消息,在其他ECU上選擇某以總線(xiàn)發(fā)送消息。如圖3所示,介紹本發(fā)明中設(shè)計(jì)的通信機(jī)制所使用的消息格式。本發(fā)明中的通信機(jī)制所使用的消息,僅包含兩個(gè)部分消息編號(hào)和消息數(shù)據(jù)。如圖4所示,介紹本發(fā)明中ECU上的通信層維護(hù)消息配置信息時(shí)所使用的數(shù)據(jù)結(jié)構(gòu)。每個(gè)ECU上的通信層都維護(hù)有一個(gè)消息配置信息表,表中的每一個(gè)表項(xiàng)對(duì)應(yīng)與一條消息。本ECU上可能發(fā)送、接收、轉(zhuǎn)發(fā)的每條消息都有且僅有一條表項(xiàng)與之對(duì)應(yīng),通信層對(duì)于沒(méi)有表項(xiàng)的消息不予處理。消息配置信息表里每條表項(xiàng)中的本地通信主體接收列表分別指向另外一個(gè)列表,類(lèi)型為本地通信主體接收列表。這個(gè)列表中每條表項(xiàng)對(duì)應(yīng)于一個(gè)接收此消息的通信主體,表項(xiàng)中規(guī)定了該通信主體接收此消息時(shí)被調(diào)用的通知接口和消息數(shù)據(jù)的傳遞渠道。列表中表項(xiàng)的數(shù)量等于本地接收此消息的通信主體的數(shù)量。消息配置信息表里每一條表項(xiàng)中的外接總線(xiàn)轉(zhuǎn)發(fā)列表分別指向一個(gè)列表,類(lèi)型為外部總線(xiàn)轉(zhuǎn)發(fā)列表。這些外部總線(xiàn)轉(zhuǎn)發(fā)列表內(nèi)的列表項(xiàng)數(shù)目相同,等于ECU內(nèi)外部總線(xiàn)的數(shù)量。每個(gè)列表中的每個(gè)表項(xiàng),分別保存有該消息在該總線(xiàn)上是否需要被轉(zhuǎn)發(fā),以及轉(zhuǎn)發(fā)時(shí)使用的函數(shù)接口。表1數(shù)據(jù)結(jié)構(gòu)成員說(shuō)明<table>tableseeoriginaldocumentpage8</column></row><table>權(quán)利要求1、一種自適應(yīng)通信主體物理拓?fù)浣Y(jié)構(gòu)的多ECU消息通信方法,其特征在于對(duì)于多ECU組成的分布式嵌入式系統(tǒng),提供統(tǒng)一的接口同時(shí)用于同一ECU內(nèi)通信主體之間的內(nèi)部通信和不同ECU內(nèi)通信主體之間的外部通信;通信主體通過(guò)ECU內(nèi)通信層來(lái)與其他通信主體通信;通信主體僅向通信層發(fā)送消息并僅從通信層獲取消息;通信層負(fù)責(zé)消息的傳送,進(jìn)而屏蔽各通信主體物理分布拓?fù)湫畔?,以及ECU上總線(xiàn)數(shù)量與類(lèi)型信息。2、根據(jù)權(quán)利要求1所述的一種自適應(yīng)通信主體物理拓?fù)浣Y(jié)構(gòu)的多ECU消息通信方法,其特征在于具體步驟如下1)設(shè)計(jì)各通信主體間通信時(shí)使用的消息,每個(gè)消息指定唯一的消息編號(hào);2)根據(jù)消息編號(hào)、通信主體在各ECU間分布情況,為每個(gè)ECU上的通信層生成消息配置信息;3)通信層根據(jù)消息配置信息來(lái)確定當(dāng)通信主體申請(qǐng)發(fā)送消息和接收到消息時(shí)對(duì)消息進(jìn)行的操作。3、根據(jù)權(quán)利要求2所述的一種自適應(yīng)通信主體物理拓?fù)浣Y(jié)構(gòu)的多ECU消息通信方法,其特征在于所述的消息配置信息包括1)ECU內(nèi)通信層維護(hù)一個(gè)消息配置信息表,表中每一個(gè)表項(xiàng)對(duì)應(yīng)于此ECU需要對(duì)之進(jìn)行操作的消息,表項(xiàng)包括消息編號(hào)、本地通信主體接收數(shù)量、本地通信主體接收列表、外部總線(xiàn)轉(zhuǎn)發(fā)標(biāo)識(shí)、外部總線(xiàn)轉(zhuǎn)發(fā)列表;2)其中每個(gè)表項(xiàng)中的本地通信主體接收列表包括一系列表項(xiàng),表項(xiàng)數(shù)目等于ECU中接收此消息的通信主體數(shù)目,每個(gè)表項(xiàng)包括通信主體標(biāo)識(shí)符、通信主體通知接口、通信主體消息傳遞渠道;3)消息配置信息表項(xiàng)中的外部總線(xiàn)轉(zhuǎn)發(fā)列表包括一些表項(xiàng),表項(xiàng)數(shù)目等于ECU中外部總線(xiàn)的數(shù)量,每個(gè)表項(xiàng)內(nèi)容包括是否在此總線(xiàn)轉(zhuǎn)發(fā)標(biāo)識(shí)、總線(xiàn)轉(zhuǎn)發(fā)函數(shù)接口。4、根據(jù)權(quán)利要求1所述的一種自適應(yīng)通信主體物理拓?fù)浣Y(jié)構(gòu)的多ECU消息通信方法,其特征在于所述的通信層收到通信主體的發(fā)送消息請(qǐng)求后的處理步驟如下l)査看是否有本ECU內(nèi)的通信主體接收此消息,即此消息對(duì)應(yīng)的消息配置信息表中的表項(xiàng)本地通信主體接收數(shù)量的值是否為o,若有,則根據(jù)該表項(xiàng)中的本地通信主體接收列表各表項(xiàng)的設(shè)置進(jìn)行消息發(fā)送,然后執(zhí)行第二步;若無(wú),則直接執(zhí)行第二步;2)查看是否需要向外部總線(xiàn)轉(zhuǎn)發(fā)此消息,查看該消息對(duì)應(yīng)的消息配置信息表的表項(xiàng)中外部轉(zhuǎn)發(fā)標(biāo)識(shí)的值,若有,則根據(jù)該表項(xiàng)中的外部轉(zhuǎn)發(fā)列表中各表項(xiàng)設(shè)置進(jìn)行轉(zhuǎn)發(fā);3)發(fā)送處理完畢。5、根據(jù)權(quán)利要求1所述的一種自適應(yīng)通信主體物理拓?fù)浣Y(jié)構(gòu)的多ECU消息通信方法,其特征在于通信層接收到從外部總線(xiàn)提交的接收消息請(qǐng)求后的處理步驟如下1)査看是否有本ECU內(nèi)的通信主體接收此消息,即此消息對(duì)應(yīng)的消息配置信息表中的表項(xiàng)本地通信主體接收數(shù)量的值是否為O,若有,則根據(jù)該表項(xiàng)中的本地通信主體接收列表各表項(xiàng)的設(shè)置進(jìn)行消息發(fā)送,然后執(zhí)行第二步。若無(wú),則直接執(zhí)行第二步;2)査看是否需要向外部總線(xiàn)轉(zhuǎn)發(fā)此消息,查看該消息對(duì)應(yīng)的消息配置信息表的表項(xiàng)中外部轉(zhuǎn)發(fā)標(biāo)識(shí)的值,若有,則根據(jù)該表項(xiàng)中的外部轉(zhuǎn)發(fā)列表中各表項(xiàng)設(shè)置進(jìn)行轉(zhuǎn)發(fā);3)接收處理完畢。全文摘要本發(fā)明公開(kāi)了一種自適應(yīng)通信主體物理拓?fù)浣Y(jié)構(gòu)的多ECU消息通信方法,提供統(tǒng)一的接口同時(shí)用于同一ECU內(nèi)通信主體之間的內(nèi)部通信和不同ECU內(nèi)通信主體之間的外部通信;通信主體通過(guò)ECU內(nèi)通信層來(lái)與其他通信主體通信;通信主體僅向通信層發(fā)送消息并僅從通信層獲取消息;通信層負(fù)責(zé)消息的傳送,進(jìn)而屏蔽各通信主體物理分布拓?fù)湫畔ⅲ约癊CU上總線(xiàn)數(shù)量與類(lèi)型信息。本發(fā)明統(tǒng)一了內(nèi)部通信和外部通信接口;向通信主體完全屏蔽系統(tǒng)物理分布拓?fù)浣涌诤捅綞CU總線(xiàn)情況;自動(dòng)實(shí)現(xiàn)路由功能,通信層實(shí)現(xiàn)消息轉(zhuǎn)發(fā)過(guò)程中自動(dòng)實(shí)現(xiàn)了路由功能,不需要單獨(dú)的路由程序。文檔編號(hào)H04L29/08GK101222525SQ200810059488公開(kāi)日2008年7月16日申請(qǐng)日期2008年1月24日優(yōu)先權(quán)日2008年1月24日發(fā)明者凱劉,攀呂,吳朝暉,趙民德,郭晞文,威鮑,龍榮深申請(qǐng)人:浙江大學(xué)