本發明涉及一種基于獨立網關的診斷路由方法及系統。
背景技術:
隨著汽車技術的日新月異的發展,整車電器功能需求不斷增多,信號交互越來越多,基本現有的國外國內車型,CAN網絡通訊已經實現了標配,整車基本所有電器節點都連接整車CAN網絡,實現信號的高速傳輸。
因此,作為整車CAN網絡的信號路由器網關的開發越來越受重視,對網關的驗證尤其是信號測試成為整車開發驗證過程中的一個重要環節。
針對網關的功能測試主要包含對各CAN路進行路由測試和診斷功能測試,而其中的診斷功能測試主要的是通過使用診斷工具連接整車OBD(車載診斷口),依據整車廠定義的診斷服務進行測試。我們將診斷功能中的“支持將某一條CAN路信息直接復制至診斷路由的功能”稱之為鏡像映射功能(mirror function),目前所有的跨國公司的獨立網關都支持該功能。
但是這類將整條CAN路信息復制到診斷路由的方式,無疑會大大增加診斷CAN的負載,導致實際檢測會出現超出診斷CAN負載率和丟幀的情況,檢測出錯率高。
技術實現要素:
本發明的一個目的是要提供一種基于獨立網關的診斷路由方法,其能夠清晰判斷信息源、信息接收者,并減少了診斷網絡CAN-D的負載,增加了監測的實時性和安全性,滿足了更加精細的測試要求。
特別地,本發明提供了一種基于獨立網關的診斷路由方法,包括:
獨立網關;
多條CAN線,與所述獨立網關相連,所述多條CAN線包括一條診斷CAN和至少兩條CAN網路;
診斷工具,所述診斷工具具有車載診斷口,所述車載診斷口與所述診斷CAN相連;
其中,所述診斷路由方法選定所述至少兩條CAN網路中的特定節點作為診斷節點,將所述診斷節點所發出的報文映射至所述車載診斷口所在的診斷CAN。
進一步地,所述至少兩條CAN網路上設有若干個節點,所述診斷路由方法在所述若干個節點中選定至少一個節點作為需要觀察跟蹤的節點,并在進行診斷路由過程中將所述至少一個節點發出的報文映射至所述車載診斷口所在的診斷CAN。
進一步地,所述若干個節點分別配置有不同的節點ID,所述診斷路由方法根據診斷需求一一配置指定對應的節點ID,用于選定所述診斷節點。
進一步地,選定出所述診斷節點后,將所述診斷節點發出的所有報文在可配置區域中標記,再將標記后的所述所有報文經所述診斷CAN發送至所述診斷工具。
進一步地,所述若干個節點分別依序配置節點ID和其所在的CAN網路的名稱,所述診斷路由方法根據診斷需求選擇指定的CAN網路名稱并節選所需診斷的所述節點ID的范圍,用于選定多個所述診斷節點。
進一步地,選定出所述多個診斷節點后,將每個所述診斷節點發出的所有報文在可配置區域中分別標記,再將標記后的所述所有報文經所述診斷CAN發送至所述診斷工具。
一種基于獨立網關的診斷路由系統,包括:
獨立網關;
多條CAN線,與所述獨立網關相連,所述多條CAN線包括一條診斷CAN和至少兩條CAN網路;
診斷工具,所述診斷工具具有車載診斷口,所述車載診斷口與所述診斷CAN相連;和
節點選擇控制單元,根據用戶輸入選定所述至少兩條CAN網路中的特定節點作為診斷節點,并將所述診斷節點所發出的報文映射至所述車載診斷口所在的診斷CAN。
進一步地,所述至少兩條CAN網路上設有若干個節點,所述診斷路由方法在所述若干個節點中選定至少一個節點作為需要觀察跟蹤的節點,并在進行診斷路由過程中將所述至少一個節點發出的報文映射至所述車載診斷口所在的診斷CAN。
進一步地,所述若干個節點分別配置有不同的節點ID,所述診斷路由方法根據診斷需求一一配置指定對應的節點ID,用于選定所述診斷節點。
進一步地,所述若干個節點分別依序配置節點ID和其所在的CAN網路的名稱,所述診斷路由方法根據診斷需求選擇指定的CAN網路名稱并節選所需診斷的所述節點ID的范圍,用于選定多個所述診斷節點。
本發明的診斷路由方法及系統,其基于獨立網關,通過以選定節點的方式進行映射,即通過診斷服務向網關配置幾個需要觀察跟蹤的節點ID,網關會將所配置斷定的診斷節點所發出的報文全部映射至車載診斷口(OBD)所在的診斷CAN,而不是相關CAN路上的所有報文,如此,就能夠便于清晰判斷信息源和信息接收者,同時也減少了診斷網絡中診斷CAN的負載,增加了監測的實時性和安全性,滿足了更加精細化的測試要求。
根據下文結合附圖對本發明具體實施例的詳細描述,本領域技術人員將會更加明了本發明的上述以及其他目的、優點和特征。
附圖說明
后文將參照附圖以示例性而非限制性的方式詳細描述本發明的一些具體實施例。附圖中相同的附圖標記標示了相同或類似的部件或部分。本領域技術人員應該理解,這些附圖未必是按比例繪制的。附圖中:
圖1是根據本發明一個實施例的診斷路由方法中的映射路由方式的示意圖;
圖2是傳統的診斷路由方法中的映射路由方式的示意圖。
具體實施方式
實施例1:
圖2是傳統的診斷路由方法中的映射路由方式的示意圖。如圖2所示,網關連接有4條網路:CAN1、CAN2、CAN3和1條診斷CAN(CAN-D),診斷工具通過OBD(車載診斷口)連接到網關診斷網路CAN-D上,其中CAN1上有4個節點,分別為:節點A、節點E、節點F、節點G,正常運行時CAN1網段的負載率為40%;當開啟傳統映射路由方式時,網關會將CAN1節點A、節點E、節點F、節點G的所有報文全部映射(即"復制")至CAN-D OBD上,此時CAN-D OBD上的負載率將達到40%。
因此,在傳統的診斷路由方法中,根據實際診斷測試需求,由于受CAN網段負載率的制約,在排查同網絡或不同網絡多個ID的情況下,實際檢測可能會出現超出診斷CAN負載率和丟幀的情況。
本實施例所描述的基于獨立網關的診斷路由方法,包括:
獨立網關;
多條CAN線,與所述獨立網關相連,所述多條CAN線包括一條診斷CAN和至少兩條CAN網路;
診斷工具,所述診斷工具具有車載診斷口,所述車載診斷口與所述診斷CAN相連;
其中,所述診斷路由方法選定所述至少兩條CAN網路中的特定節點作為診斷節點,將所述診斷節點所發出的報文映射至所述車載診斷口所在的診斷CAN。
所述至少兩條CAN網路上設有若干個節點,所述診斷路由方法在所述若干個節點中選定至少一個節點作為需要觀察跟蹤的節點,并在進行診斷路由過程中將所述至少一個節點發出的報文映射至所述車載診斷口所在的診斷CAN。
圖1是根據本發明一個實施例的診斷路由方法中的映射路由方式的示意圖。在本實施例中,如圖1所示,設網絡CAN1的A節點發送Message給CAN2上的B節點和CAN3上的C節點接收,當只需要觀察節點A的情況時,可采用改進型節點映射路由方式,網關只會把CAN1節點A的所有報文全部映射(即"復制")至CAN-D OBD上,此時CAN-D OBD上的負載率將只達到10%。
不難理解,本實施例通過以選定節點的方式進行映射,即通過診斷服務向網關配置幾個需要觀察跟蹤的節點ID,網關會將所配置斷定的診斷節點所發出的報文全部映射至車載診斷口(OBD)所在的診斷CAN,而不是相關CAN路上的所有報文,如此,就能夠便于清晰判斷信息源和信息接收者,同時也減少了診斷網絡中診斷CAN的負載,增加了監測的實時性和安全性,滿足了更加精細化的測試要求。
進一步地,所述若干個節點分別配置有不同的節點ID,所述診斷路由方法根據診斷需求一一配置指定對應的節點ID,用于選定所述診斷節點。
下表為該網關系統當前的路由表:
從表中可以看出節點Node_A發到CAN2上的有6條報文,我們將這6條報文在可配置區域中標記為ECU0;同時節點Node_A發到CAN3上的有4條報文,我們將這4條報文在可配置區域中標記為ECU1。節點Node_B發到CAN3上的有5條報文,我們將這5條報文在可配置區域中標記為ECU2。
假設該可配置矩陣表的映射診斷服務DID:6A30,診斷操作步驟為:
Setp1:讓網關進入默認模式;
Setp2:讓網關進入擴展模式;
Setp3:進行安全認證;
Setp4:先讀取并記錄一下當前的車輛名稱;
Setp5:根據需要配置診斷服務為Configuration DID信息(DID:6A30);
Setp6:再次讀取Configuration DID信息以確認;
診斷命令行如下:
Byte0,bit0:ECU0 0=Disable,1=Enable;
Byte0,bit1:ECU1 0=Disable,1=Enable;
Byte0,bit2:ECU2 0=Disable,1=Enable;
Byte0,bit3:ECU3 0=Disable,1=Enable;
Byte0,bit4:ECU4 0=Disable,1=Enable;
Byte0,bit5:ECU5 0=Disable,1=Enable;
Byte0,bit6:ECU6 0=Disable,1=Enable;
Byte0,bit7:ECU7 0=Disable,1=Enable;
Byte1,bit0:ECU8 0=Disable,1=Enable;
Byte1,bit1:ECU9 0=Disable,1=Enable;
Byte1,bit2:ECU10 0=Disable,1=Enable;
Byte1,bit3:ECU11 0=Disable,1=Enable;
Byte1,bit4:ECU12 0=Disable,1=Enable;
Byte1,bit5:ECU13 0=Disable,1=Enable;
Byte1,bit6:ECU14 0=Disable,1=Enable;
Byte1,bit7:ECU15 0=Disable,1=Enable;
Byte2,bit0:ECU16 0=Disable,1=Enable;
Byte2,bit1:ECU17 0=Disable,1=Enable;
Byte2,bit2:ECU18 0=Disable,1=Enable;
Byte2,bit3:ECU19 0=Disable,1=Enable;
Byte2,bit4:ECU20 0=Disable,1=Enable;
Byte2,bit5:ECU21 0=Disable,1=Enable;
Byte2,bit6:ECU22 0=Disable,1=Enable;
Byte2,bit7:ECU23 0=Disable,1=Enable;
Byte3,bit0:ECU24 0=Disable,1=Enable;
Byte3,bit1:ECU25 0=Disable,1=Enable;
Byte3,bit2:ECU26 0=Disable,1=Enable;
Byte3,bit3:ECU27 0=Disable,1=Enable;
Byte3,bit4:ECU28 0=Disable,1=Enable;
Byte3,bit5:ECU29 0=Disable,1=Enable;
Byte3,bit6~bit7:Reserved。
如此,則網關可配置矩陣表中內容在診斷操作完成后會形成如下表所示:
以圖1所示的映射路由方式為例,通過診斷協議中的2E或31服務去寫模塊軟件預留中的可配置區域Configuration Byte(可以有多個字節),Configuration Byte中的每個bit(位)代表一個路由消息組(或者是一個ECU的發送消息組),0表示禁止映射,1表示使能映射。達到對當前路由信息開關的控制。
假設有30個ECU的消息需要映射到診斷CAN-D,那Configuration Byte就需要4個Byte來表示(4*8=32bit)。
ECU1的發送消息組為:0x200,0x201,0x202,0x203,0x204,0x205
ECU2的發送消息組為:0x206,0x207,0x208,0x209
ECU3的發送消息組為:0x210,0x211,0x212,0x213,0x214
將Configuration Byte寫成0x00000003則表示將ECU1和ECU2的消息組同時映射到CAN-D;將Configuration Byte寫成0x0000000E則表示將ECU1,ECU2,ECU3的消息組同時映射到CAN-D。如果要禁止此功能,就將Configuration Byte所有內容寫為0。
需要注意的是,還存在另外一種選定節點的方式,即按照選定網段,ID的方式進行映射。在所述若干個節點中分別依序配置節點ID和其所在的CAN網路的名稱,所述診斷路由方法根據診斷需求選擇指定的CAN網路名稱并節選所需診斷的所述節點ID的范圍,用于選定多個所述診斷節點。例如:配置"CAN6,0x221,0x27F",則網關會將CAN 6的ID等于0x221,或等于0x27F的報文全部路由至診斷CAN-D。也可通過診斷配置網絡,指定ID范圍實現,例如:配置"CAN 7,0x085,0x120;CAN 8,0x125,0x225"后,網關會將CAN7的ID大于等于0x085至ID小于等于0x120,以及CAN8上ID大于等于0x125至ID小于等于0x225所有報文,映射到OBD所在的CAN-D,同樣也減少了診斷網絡CAN-D的負載,增加了監測實時性和安全性。
綜上,本發明能夠清晰判斷信息源、信息接收者,并減少了診斷網絡CAN-D的負載,增加了監測的實時性和安全性,滿足了更加精細的測試要求。
實施例2:
本實施例描述了一種基于獨立網關的診斷路由系統,一般性地可以包括:獨立網關;多條CAN線,與所述獨立網關相連,所述多條CAN線包括一條診斷CAN和至少兩條CAN網路;診斷工具,所述診斷工具具有車載診斷口,所述車載診斷口與所述診斷CAN相連;和節點選擇控制單元,根據用戶輸入選定所述至少兩條CAN網路中的特定節點作為診斷節點,并將所述診斷節點所發出的報文映射至所述車載診斷口所在的診斷CAN。
所述至少兩條CAN網路上設有若干個節點,所述診斷路由方法在所述若干個節點中選定至少一個節點作為需要觀察跟蹤的節點,并在進行診斷路由過程中將所述至少一個節點發出的報文映射至所述車載診斷口所在的診斷CAN。
所述若干個節點分別配置有不同的節點ID,所述診斷路由方法根據診斷需求一一配置指定對應的節點ID,用于選定所述診斷節點。
也可采用另一種選擇方式,所述若干個節點分別依序配置節點ID和其所在的CAN網路的名稱,所述診斷路由方法根據診斷需求選擇指定的CAN網路名稱并節選所需診斷的所述節點ID的范圍,用于選定多個所述診斷節點。
至此,本領域技術人員應認識到,雖然本文已詳盡示出和描述了本發明的多個示例性實施例,但是,在不脫離本發明精神和范圍的情況下,仍可根據本發明公開的內容直接確定或推導出符合本發明原理的許多其他變型或修改。因此,本發明的范圍應被理解和認定為覆蓋了所有這些其他變型或修改。