本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,更具體地說,涉及一種CAN自動路由系統(tǒng)和方法。
背景技術(shù):
由于現(xiàn)有車輛前裝CAN網(wǎng)絡(luò)的設(shè)計(jì)越來越復(fù)雜,各ECU節(jié)點(diǎn)單元也越來越多,各ECU獨(dú)立單元需要對CAN網(wǎng)絡(luò)進(jìn)行對應(yīng)的設(shè)計(jì)。目前汽車產(chǎn)業(yè)更加產(chǎn)業(yè)化、智能化。其CAN網(wǎng)絡(luò)設(shè)計(jì)應(yīng)用越來越廣泛。而在整個(gè)CAN網(wǎng)絡(luò)中如何更好更快去找尋自己的ECU單元(CAN ID),如何能輕松訪問并發(fā)送數(shù)據(jù),在用戶數(shù)據(jù)多包發(fā)送更為突出,而現(xiàn)有系統(tǒng)未能整體去實(shí)現(xiàn)CAN網(wǎng)絡(luò)的應(yīng)用層、鏈路層,導(dǎo)致需要開發(fā)CAN網(wǎng)絡(luò)的廠家設(shè)計(jì)上比較困難,獨(dú)立去做的復(fù)雜度相對高,通過CAN網(wǎng)絡(luò)路由功能可實(shí)現(xiàn)應(yīng)用層輕松使用CAN網(wǎng)絡(luò),能快速實(shí)現(xiàn)網(wǎng)絡(luò)的開發(fā),最終可實(shí)現(xiàn)產(chǎn)品的快速開發(fā)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的上述缺陷,提供一種CAN自動路由系統(tǒng)和方法。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:提供一種CAN自動路由系統(tǒng),包括:硬件模塊、硬件驅(qū)動模塊、自動鏈路模塊和自動路由模塊;所述硬件模塊、所述硬件驅(qū)動模塊、所述自動鏈路模塊和所述自動路由模塊依次 連接;所述硬件模塊連接于鏈路層,用于為數(shù)據(jù)傳輸提供硬件基礎(chǔ);所述自動鏈路模塊用于標(biāo)準(zhǔn)的CAN鏈路層數(shù)據(jù)接收或發(fā)送;所述自動路由模塊用于用戶注冊,并根據(jù)所述硬件驅(qū)動模塊和所述自動鏈路模塊的工作狀態(tài)生成相應(yīng)的描述符;所述硬件驅(qū)動模塊用于根據(jù)所述描述符驅(qū)動所述硬件模塊接收或發(fā)送數(shù)據(jù)。
在本發(fā)明的CAN自動路由系統(tǒng)中,所述自動路由模塊還用于在所述硬件驅(qū)動模塊和所述自動鏈路模塊的工作狀態(tài)正常的情況時(shí)生成成功描述符;在所述硬件驅(qū)動模塊和所述自動鏈路模塊的工作狀態(tài)不正?;虍a(chǎn)生錯(cuò)誤時(shí)生成錯(cuò)誤描述符。
在本發(fā)明的CAN自動路由系統(tǒng)中,
所述自動路由模塊還用于直接將需要發(fā)送的所述數(shù)據(jù)發(fā)送至所述自動鏈路模塊;所述自動鏈路模塊還用于根據(jù)所述數(shù)據(jù)的長度大小,對所述數(shù)據(jù)進(jìn)行分包發(fā)送。
在本發(fā)明的CAN自動路由系統(tǒng)中,
用戶發(fā)送所述數(shù)據(jù)的接口為:can_write(fd,buf,len);
其中,fd為系統(tǒng)自動分派的有效描述符;buf為用戶需要發(fā)送的數(shù)據(jù)緩沖區(qū)地址;len為用戶發(fā)送數(shù)據(jù)的長度。
在本發(fā)明的CAN自動路由系統(tǒng)中,
所述自動鏈路模塊還用于自動鏈路接收所述數(shù)據(jù),并將所述數(shù)據(jù)發(fā)送到所述自動路由模塊;所述自動路由模塊還用于把接收到的數(shù)據(jù)通過所述描述符與ECU節(jié)點(diǎn)信息對應(yīng)進(jìn)行數(shù)據(jù)發(fā)送。
在本發(fā)明的CAN自動路由系統(tǒng)中,
用戶發(fā)送所述數(shù)據(jù)的接口為:can_read(fd,buf,len);
其中,fd為系統(tǒng)自動分派的有效描述符;buf為用戶需要接收的數(shù)據(jù)緩沖區(qū)地址;len為用戶接收數(shù)據(jù)的長度。
本發(fā)明還提供一種CAN自動路由方法,涉及上述的CAN自動路由系統(tǒng),包括步驟:
S1、開啟所述硬件模塊,系統(tǒng)初始化;
S2、用戶通過所述自動路由模塊進(jìn)行注冊,再通過所述自動鏈路模塊接收或發(fā)送標(biāo)準(zhǔn)的CAN鏈路層數(shù)據(jù);
S3、所述自動路由模塊根據(jù)所述硬件驅(qū)動模塊和所述自動鏈路模塊的工作狀態(tài)生成相應(yīng)的描述符;所述硬件驅(qū)動模塊根據(jù)所述描述符驅(qū)動所述硬件模塊接收或發(fā)送數(shù)據(jù)。
在本發(fā)明的CAN自動路由方法中,所述步驟S3還包括:
判斷所述硬件驅(qū)動模塊和所述自動鏈路模塊的工作狀態(tài)是否正常;若是,則生成成功描述符;若否,則生成錯(cuò)誤描述符。
在本發(fā)明的CAN自動路由方法中,所述步驟S3還包括:
所述自動路由模塊直接將需要發(fā)送的所述數(shù)據(jù)發(fā)送至所述自動鏈路模塊;所述自動鏈路模塊根據(jù)所述數(shù)據(jù)的長度大小,對所述數(shù)據(jù)進(jìn)行分包發(fā)送;
用戶發(fā)送所述數(shù)據(jù)的接口為:can_write(fd,buf,len);
其中,fd為系統(tǒng)自動分派的有效描述符;buf為用戶需要發(fā)送的數(shù)據(jù)緩沖區(qū)地址;len為用戶發(fā)送數(shù)據(jù)的長度。
在本發(fā)明的CAN自動路由方法中,所述步驟S3還包括:
所述自動鏈路模塊自動鏈路接收所述數(shù)據(jù),并將所述數(shù)據(jù)發(fā)送到所述自 動路由模塊;所述自動路由模塊把接收到的數(shù)據(jù)通過所述描述符與ECU節(jié)點(diǎn)信息對應(yīng)進(jìn)行數(shù)據(jù)發(fā)送;
用戶發(fā)送所述數(shù)據(jù)的接口為:can_read(fd,buf,len);
其中,fd為系統(tǒng)自動分派的有效描述符;buf為用戶需要接收的數(shù)據(jù)緩沖區(qū)地址;len為用戶接收數(shù)據(jù)的長度。
實(shí)施本發(fā)明的的CAN自動路由系統(tǒng)和方法具有以下有益效果:自動實(shí)現(xiàn)底層CAN網(wǎng)絡(luò)協(xié)議的鏈路層協(xié)議,可進(jìn)行有效的封裝,開發(fā)者不需要關(guān)心底層鏈路如何實(shí)現(xiàn),大大節(jié)省了開發(fā)時(shí)間。自動實(shí)現(xiàn)各ECU單元(CAN ID尋址)的自動路由供功能,讓用戶/開發(fā)者像網(wǎng)絡(luò)編程一樣簡單。讓用戶/開發(fā)者實(shí)現(xiàn)硬件的無關(guān)性,只關(guān)注應(yīng)用層的開發(fā)設(shè)計(jì),達(dá)到硬件無關(guān)性。
附圖說明
下面將結(jié)合附圖及實(shí)施例對本發(fā)明作進(jìn)一步說明,附圖中:
圖1是本發(fā)明CAN自動路由系統(tǒng)的系統(tǒng)方框圖;
圖2是本發(fā)明CAN自動路由方法的流程方框圖。
具體實(shí)施方式
本發(fā)明針對的是在現(xiàn)有技術(shù)中未能整體去實(shí)現(xiàn)CAN網(wǎng)絡(luò)的應(yīng)用層、鏈路層,導(dǎo)致需要開發(fā)CAN網(wǎng)絡(luò)的廠家設(shè)計(jì)上比較困難,獨(dú)立去做的復(fù)雜度相對高的問題,提供一種CAN自動路由系統(tǒng)和方法,能夠自動實(shí)現(xiàn)底層CAN網(wǎng)絡(luò)協(xié)議的鏈路層協(xié)議,可進(jìn)行有效的封裝,開發(fā)者不需要關(guān)心底層鏈路如何實(shí)現(xiàn),大大節(jié)省了開發(fā)時(shí)間。自動實(shí)現(xiàn)各ECU單元(CAN ID尋址)的自動路由 供功能,讓用戶/開發(fā)者像網(wǎng)絡(luò)編程一樣簡單。讓用戶/開發(fā)者實(shí)現(xiàn)硬件的無關(guān)性,只關(guān)注應(yīng)用層的開發(fā)設(shè)計(jì),達(dá)到硬件無關(guān)性。
為了對本發(fā)明的技術(shù)特征、目的和效果有更加清楚的理解,現(xiàn)對照附圖詳細(xì)說明本發(fā)明的具體實(shí)施方式。
如圖1所示,CAN(Controller Area Network),中文名稱為控制器局域網(wǎng)絡(luò),通常稱為CAN bus,即CAN總線。是目前在國際上應(yīng)用最廣泛的開放式現(xiàn)場總線之一。CAN網(wǎng)絡(luò)廣泛應(yīng)用于工業(yè)現(xiàn)場。汽車CAN網(wǎng)絡(luò)通訊目前成為車輛最穩(wěn)定的局域網(wǎng)通訊系統(tǒng),承載著汽車各ECU控制單元的控制與通訊。
本發(fā)明提供了一種CAN自動路由系統(tǒng),包括:硬件模塊10、硬件驅(qū)動模塊20、自動鏈路模塊30和自動路由模塊40;
硬件模塊10、硬件驅(qū)動模塊20、自動鏈路模塊30和自動路由模塊40依次連接;在本發(fā)明的一優(yōu)選實(shí)施例中,硬件模塊10通常包括CAN網(wǎng)絡(luò)硬件部分,如CAN控制器、收發(fā)器等。
硬件模塊10連接于鏈路層,用于為數(shù)據(jù)傳輸提供硬件基礎(chǔ);系統(tǒng)初始化時(shí),通常首先要打開CAN網(wǎng)絡(luò)設(shè)備,包括啟用硬件模塊10。
自動鏈路模塊30用于標(biāo)準(zhǔn)的CAN鏈路層數(shù)據(jù)接收或發(fā)送;對CAN底層網(wǎng)絡(luò)的數(shù)據(jù)的鏈路實(shí)現(xiàn),主要針對數(shù)據(jù)多包收發(fā)的自動化實(shí)現(xiàn)。
自動路由模塊40用于用戶注冊,并根據(jù)硬件驅(qū)動模塊20和自動鏈路模塊30的工作狀態(tài)生成相應(yīng)的描述符;實(shí)現(xiàn)系統(tǒng)自動路由功能,用戶只需要?jiǎng)討B(tài)注冊一個(gè)ECU單元,即CAN ID網(wǎng)絡(luò)節(jié)點(diǎn),CAN自動路由模塊就自動實(shí)現(xiàn)數(shù)據(jù)的收發(fā)功能。
硬件驅(qū)動模塊20用于根據(jù)描述符驅(qū)動硬件模塊10接收或發(fā)送數(shù)據(jù)。硬 件驅(qū)動模塊20提供了標(biāo)準(zhǔn)的CAN網(wǎng)絡(luò)數(shù)據(jù)接收發(fā)空,CAN網(wǎng)絡(luò)參數(shù)設(shè)置接口,如CAN網(wǎng)絡(luò)的波特率等接口。
進(jìn)一步地,自動路由模塊40還用于在硬件驅(qū)動模塊20和自動鏈路模塊30的工作狀態(tài)正常的情況時(shí)生成成功描述符。即在硬件驅(qū)動模塊20和自動鏈路模塊30的工作狀態(tài)正常的情況時(shí)自動路由模塊40自動分派路由接口,并成功返回自動鏈路描述符fd到用戶,即系統(tǒng)中唯一動態(tài)分派的路由成功標(biāo)識符,相當(dāng)于套接字描述符。在硬件驅(qū)動模塊20和自動鏈路模塊30的工作狀態(tài)不正常或產(chǎn)生錯(cuò)誤時(shí)生成錯(cuò)誤描述符。
當(dāng)用戶需要發(fā)送接收CAN數(shù)據(jù)時(shí),直接操作申請的描述符,并用自動路由模塊40成功分派的描述符調(diào)用接口進(jìn)行收發(fā)CAN數(shù)據(jù)。自動路由模塊40還用于直接將需要發(fā)送的數(shù)據(jù)發(fā)送至自動鏈路模塊30;自動鏈路模塊30還用于根據(jù)數(shù)據(jù)的長度大小,對數(shù)據(jù)進(jìn)行分包發(fā)送。通常自動鏈路模塊30根據(jù)數(shù)據(jù)的長度大小,按照CAN標(biāo)準(zhǔn)鏈路層協(xié)議對數(shù)據(jù)進(jìn)行分包發(fā)送,實(shí)現(xiàn)標(biāo)準(zhǔn)的CAN鏈路層數(shù)據(jù)發(fā)送。
用戶發(fā)送數(shù)據(jù)的接口為:can_write(fd,buf,len);
其中,fd為系統(tǒng)自動分派的有效描述符;buf為用戶需要發(fā)送的數(shù)據(jù)緩沖區(qū)地址;len為用戶發(fā)送數(shù)據(jù)的長度。
自動鏈路模塊30還用于自動鏈路接收數(shù)據(jù),并將數(shù)據(jù)發(fā)送到自動路由模塊40;當(dāng)用戶需要接收數(shù)據(jù)時(shí),只有用戶成功注冊的描述符對應(yīng)的有效CAN ID才能被有效接收,否則無法接收到底層的對應(yīng)用戶數(shù)據(jù)。自動路由模塊40還用于把接收到的數(shù)據(jù)通過描述符與ECU節(jié)點(diǎn)信息對應(yīng)進(jìn)行數(shù)據(jù)發(fā)送。即把接收的數(shù)據(jù)通過描述符與CAN ID的對應(yīng)關(guān)系進(jìn)行數(shù)據(jù)分發(fā),發(fā)送到對應(yīng)的 用戶,實(shí)現(xiàn)CAN數(shù)據(jù)的接收。
用戶發(fā)送數(shù)據(jù)的接口為:can_read(fd,buf,len);
其中,fd為系統(tǒng)自動分派的有效描述符;buf為用戶需要接收的數(shù)據(jù)緩沖區(qū)地址;len為用戶接收數(shù)據(jù)的長度。
如圖2所示,本發(fā)明還提供了一種CAN自動路由方法,包括上述的CAN自動路由系統(tǒng),包括步驟:
S1、開啟硬件模塊10,系統(tǒng)初始化;通常首先要打開CAN網(wǎng)絡(luò)設(shè)備。在本發(fā)明的一優(yōu)選實(shí)施例中,硬件模塊10通常包括CAN網(wǎng)絡(luò)硬件部分,如CAN控制器、收發(fā)器等。
S2、用戶通過自動路由模塊40進(jìn)行注冊,再通過自動鏈路模塊30接收或發(fā)送標(biāo)準(zhǔn)的CAN鏈路層數(shù)據(jù);對CAN底層網(wǎng)絡(luò)的數(shù)據(jù)的鏈路實(shí)現(xiàn),主要針對數(shù)據(jù)多包收發(fā)的自動化實(shí)現(xiàn)。
S3、自動路由模塊40根據(jù)硬件驅(qū)動模塊20和自動鏈路模塊30的工作狀態(tài)生成相應(yīng)的描述符;硬件驅(qū)動模塊20根據(jù)描述符驅(qū)動硬件模塊10接收或發(fā)送數(shù)據(jù)。實(shí)現(xiàn)系統(tǒng)自動路由功能,用戶只需要?jiǎng)討B(tài)注冊一個(gè)ECU單元,即CAN ID網(wǎng)絡(luò)節(jié)點(diǎn),CAN自動路由模塊就自動實(shí)現(xiàn)數(shù)據(jù)的收發(fā)功能。硬件驅(qū)動模塊20提供了標(biāo)準(zhǔn)的CAN網(wǎng)絡(luò)數(shù)據(jù)接收發(fā)空,CAN網(wǎng)絡(luò)參數(shù)設(shè)置接口,如CAN網(wǎng)絡(luò)的波特率等接口。
進(jìn)一步地,
判斷硬件驅(qū)動模塊20和自動鏈路模塊30的工作狀態(tài)是否正常;若是,則生成成功描述符;若否,則生成錯(cuò)誤描述符。通常在硬件驅(qū)動模塊20和自動鏈路模塊30的工作狀態(tài)正常的情況時(shí)自動路由模塊40自動分派路由接口, 并成功返回自動鏈路描述符fd到用戶,即系統(tǒng)中唯一動態(tài)分派的路由成功標(biāo)識符,相當(dāng)于套接字描述符。
進(jìn)一步地,步驟S3還包括:
當(dāng)用戶需要發(fā)送接收CAN數(shù)據(jù)時(shí),直接操作申請的描述符,并用自動路由模塊40成功分派的描述符調(diào)用接口進(jìn)行收發(fā)CAN數(shù)據(jù)。自動路由模塊40直接將需要發(fā)送的數(shù)據(jù)發(fā)送至自動鏈路模塊30;自動鏈路模塊30根據(jù)數(shù)據(jù)的長度大小,對數(shù)據(jù)進(jìn)行分包發(fā)送;通常自動鏈路模塊30根據(jù)數(shù)據(jù)的長度大小,按照CAN標(biāo)準(zhǔn)鏈路層協(xié)議對數(shù)據(jù)進(jìn)行分包發(fā)送,實(shí)現(xiàn)標(biāo)準(zhǔn)的CAN鏈路層數(shù)據(jù)發(fā)送。
用戶發(fā)送數(shù)據(jù)的接口為:can_write(fd,buf,len);
其中,fd為系統(tǒng)自動分派的有效描述符;buf為用戶需要發(fā)送的數(shù)據(jù)緩沖區(qū)地址;len為用戶發(fā)送數(shù)據(jù)的長度。
進(jìn)一步地,步驟S3還包括:
自動鏈路模塊30自動鏈路接收數(shù)據(jù),并將數(shù)據(jù)發(fā)送到自動路由模塊40;當(dāng)用戶需要接收數(shù)據(jù)時(shí),只有用戶成功注冊的描述符對應(yīng)的有效CAN ID才能被有效接收,否則無法接收到底層的對應(yīng)用戶數(shù)據(jù)。自動路由模塊40把接收到的數(shù)據(jù)通過描述符與ECU節(jié)點(diǎn)信息對應(yīng)進(jìn)行數(shù)據(jù)發(fā)送;即把接收的數(shù)據(jù)通過描述符與CAN ID的對應(yīng)關(guān)系進(jìn)行數(shù)據(jù)分發(fā),發(fā)送到對應(yīng)的用戶,實(shí)現(xiàn)CAN數(shù)據(jù)的接收。
用戶發(fā)送數(shù)據(jù)的接口為:can_read(fd,buf,len);
其中,fd為系統(tǒng)自動分派的有效描述符;buf為用戶需要接收的數(shù)據(jù)緩沖區(qū)地址;len為用戶接收數(shù)據(jù)的長度。
綜上,本發(fā)明自動實(shí)現(xiàn)底層CAN網(wǎng)絡(luò)協(xié)議的鏈路層協(xié)議,可進(jìn)行有效的封裝,開發(fā)者不需要關(guān)心底層鏈路如何實(shí)現(xiàn),大大節(jié)省了開發(fā)時(shí)間。自動實(shí)現(xiàn)各ECU單元CAN ID尋址的自動路由供功能,讓用戶/開發(fā)者像網(wǎng)絡(luò)編程一樣簡單。讓用戶/開發(fā)者實(shí)現(xiàn)硬件的無關(guān)性,只關(guān)注應(yīng)用層的開發(fā)設(shè)計(jì),達(dá)到硬件無關(guān)性。
上面結(jié)合附圖對本發(fā)明的實(shí)施例進(jìn)行了描述,但是本發(fā)明并不局限于上述的具體實(shí)施方式,上述的具體實(shí)施方式僅僅是示意性的,而不是限制性的,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明宗旨和權(quán)利要求所保護(hù)的范圍情況下,還可做出很多形式,這些均屬于本發(fā)明的保護(hù)之內(nèi)。