一種基于can總線的主從機(jī)串行通信方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及CAN總線技術(shù)領(lǐng)域,尤其涉及一種基于CAN總線的主從機(jī)串行通信方法。
【背景技術(shù)】
[0002]CAN (Controller Area Network,控制器局域網(wǎng)絡(luò))是目前國(guó)際上應(yīng)用最為廣泛的現(xiàn)場(chǎng)總線之一。在初期階段控制器局域網(wǎng)絡(luò)CAN被應(yīng)用于汽車內(nèi)部的現(xiàn)場(chǎng)總線。隨著科學(xué)技術(shù)的不斷發(fā)展,控制器局域網(wǎng)絡(luò)CAN也逐步應(yīng)用到醫(yī)療設(shè)備、工業(yè)生產(chǎn)、樓宇設(shè)施、交通運(yùn)輸?shù)阮I(lǐng)域中。
[0003]目前,現(xiàn)有通信技術(shù)中多采用RS232串行通信、RS485串行通信及通用CAN總線通信。但上述通信方式均存在一定程度的不足。首先RS232串行通信只允許點(diǎn)對(duì)點(diǎn)通信,且距離有限;數(shù)據(jù)傳輸速率低且容易產(chǎn)生干擾,此外接口電路的芯片由于接口信號(hào)的高電平也極易造成損壞。其次,RS485串行通信配置較為繁瑣,耗時(shí)較長(zhǎng);通用CAN總線數(shù)據(jù)通信節(jié)點(diǎn)沒(méi)有主從之分,任意節(jié)點(diǎn)可以向任何其他節(jié)點(diǎn)發(fā)起數(shù)據(jù)通信,因此需要每個(gè)消息節(jié)點(diǎn)處理大量數(shù)據(jù),并由此造成了總線節(jié)點(diǎn)數(shù)目較多,進(jìn)而會(huì)出現(xiàn)數(shù)據(jù)擁堵的情況。
【發(fā)明內(nèi)容】
[0004]本發(fā)明是為了解決現(xiàn)有技術(shù)中的上述不足而完成的,本發(fā)明的目的在于提出一種基于CAN總線的主從機(jī)的串行通信方法,該方法解決了現(xiàn)有通信方式,尤其是通用CAN總線通信在使用過(guò)程中出現(xiàn)的總線節(jié)點(diǎn)數(shù)目較多,數(shù)據(jù)造成擁堵的問(wèn)題。
[0005]為達(dá)此目的,本發(fā)明采用以下技術(shù)方案:
[0006]—種CAN總線的主從機(jī)串行通信方法,包括:
[0007]主機(jī)節(jié)點(diǎn)接入CAN總線,并在主機(jī)節(jié)點(diǎn)中配置主機(jī)總線地址和從機(jī)總線地址池;
[0008]主機(jī)節(jié)點(diǎn)監(jiān)聽(tīng)CAN總線,獲取至少一個(gè)從機(jī)節(jié)點(diǎn)發(fā)送的廣播消息;
[0009]所述主機(jī)節(jié)點(diǎn)根據(jù)所述廣播消息中的從機(jī)節(jié)點(diǎn)物理地址和網(wǎng)絡(luò)連接狀態(tài),為所述從機(jī)節(jié)點(diǎn)配置目標(biāo)主機(jī)總線地址和從機(jī)總線地址;
[0010]所述主機(jī)節(jié)點(diǎn)根據(jù)所述從機(jī)總線地址和網(wǎng)絡(luò)連接狀態(tài)與所述從機(jī)節(jié)點(diǎn)進(jìn)行點(diǎn)對(duì)點(diǎn)通信。
[0011]本發(fā)明所述的一種CAN總線的主從機(jī)串行通信方法,通過(guò)主機(jī)節(jié)點(diǎn)接入并監(jiān)聽(tīng)CAN總線,獲取從機(jī)節(jié)點(diǎn)發(fā)送的廣播消息,并以此配置目標(biāo)主機(jī)總線及從機(jī)總線地址,最終根據(jù)從機(jī)總線地址與網(wǎng)絡(luò)連接狀態(tài)實(shí)現(xiàn)與從機(jī)節(jié)點(diǎn)的點(diǎn)對(duì)點(diǎn)通信。本方法利用了 CAN的通信協(xié)議,通過(guò)主機(jī)配置從機(jī)的地址,實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信,解決了現(xiàn)有CAN總線通信方式中,需要大量數(shù)據(jù)節(jié)點(diǎn)并由此帶來(lái)的數(shù)據(jù)擁堵的問(wèn)題。
【附圖說(shuō)明】
[0012]為了更加清楚地說(shuō)明本發(fā)明示例性實(shí)施例的技術(shù)方案,下面對(duì)描述實(shí)施例中所需要用到的附圖做一簡(jiǎn)單介紹。顯然,所介紹的附圖只是本發(fā)明所要描述的一部分實(shí)施例的附圖,而不是全部的附圖,對(duì)于本領(lǐng)域普通技術(shù)人員,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖得到其他的附圖。
[0013]圖1是本發(fā)明實(shí)施例一提供的一種CAN總線的主從機(jī)串行通信方法的流程圖。
【具體實(shí)施方式】
[0014]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,以下將結(jié)合本發(fā)明實(shí)施例中的附圖,通過(guò)【具體實(shí)施方式】,完整地描述本發(fā)明的技術(shù)方案。顯然,所描述的實(shí)施例是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例,基于本發(fā)明的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下獲得的所有其他實(shí)施例,均落入本發(fā)明的保護(hù)范圍之內(nèi)。
[0015]實(shí)施例一:
[0016]圖1給出了本實(shí)施例一提供的一種CAN總線的主從機(jī)串行通信方法的流程圖。
[0017]如圖1,本實(shí)施例一提供的CAN總線的主從機(jī)串行通信方法,包括:
[0018]S100、主機(jī)節(jié)點(diǎn)接入CAN總線,并在主機(jī)節(jié)點(diǎn)中配置主機(jī)總線地址和從機(jī)總線地址池。
[0019]其中,主機(jī)總線地址是指主機(jī)節(jié)點(diǎn)的總線地址。該總線地址由2個(gè)字節(jié)組成并且具有唯一性,也就是說(shuō),主機(jī)節(jié)點(diǎn)為CAN總線多個(gè)節(jié)點(diǎn)中的主要節(jié)點(diǎn),且只有一個(gè)。
[0020]從機(jī)總線地址池是指從機(jī)節(jié)點(diǎn)的總線地址池。該總線地址池為從機(jī)節(jié)點(diǎn)可分配的有效地址范圍。
[0021]S200、主機(jī)節(jié)點(diǎn)監(jiān)聽(tīng)CAN總線,獲取至少一個(gè)從機(jī)節(jié)點(diǎn)發(fā)送的廣播消息。
[0022]首先從機(jī)節(jié)點(diǎn)接入CAN總線,之后會(huì)以廣播的形式發(fā)送廣播消息。其中,廣播消息包括從機(jī)節(jié)點(diǎn)的物理地址和網(wǎng)絡(luò)連接狀態(tài)。
[0023]需要說(shuō)明的是,在從機(jī)節(jié)點(diǎn)未獲取從機(jī)總線地址的情況下,從機(jī)節(jié)點(diǎn)的物理地址是其識(shí)別從機(jī)節(jié)點(diǎn)的唯一標(biāo)記。物理地址可以是MAC地址,由6個(gè)字節(jié)組成。
[0024]S300、所述主機(jī)節(jié)點(diǎn)根據(jù)所述廣播消息中的從機(jī)節(jié)點(diǎn)物理地址和網(wǎng)絡(luò)連接狀態(tài),為所述從機(jī)節(jié)點(diǎn)配置目標(biāo)主機(jī)總線地址和從機(jī)總線地址。
[0025]其中,為所述從機(jī)節(jié)點(diǎn)配置目標(biāo)主機(jī)總線地址和從機(jī)總線地址的過(guò)程包括:
[0026]所述主機(jī)節(jié)點(diǎn)從所述廣播消息中獲取從機(jī)節(jié)點(diǎn)物理地址和網(wǎng)絡(luò)連接狀態(tài),并對(duì)所述網(wǎng)絡(luò)連接狀態(tài)進(jìn)行識(shí)別。
[0027]識(shí)別的內(nèi)容包括:
[0028]所述主機(jī)節(jié)點(diǎn)按照目標(biāo)主機(jī)總線地址是否配置、從機(jī)總線地址是否配置、以及網(wǎng)絡(luò)是否連接的順序獲取識(shí)別結(jié)果。
[0029]識(shí)別的結(jié)果包括如下幾種:
[0030]目標(biāo)總線地址未配置,從機(jī)總線地址未配置,網(wǎng)絡(luò)未連接;
[0031]目標(biāo)總線地址已配置,從機(jī)總線地址未配置,網(wǎng)絡(luò)未連接;
[0032]目標(biāo)總線地址已配置,從機(jī)總線地址已配置,網(wǎng)絡(luò)未連接;
[0033]目標(biāo)總線地址已配置,從機(jī)總線地址已配置,網(wǎng)絡(luò)已連接。
[0034]所述主機(jī)節(jié)點(diǎn)根據(jù)識(shí)別結(jié)果產(chǎn)生配置指令,廣播或單播發(fā)送給所述從機(jī)節(jié)點(diǎn),以指示所述從機(jī)節(jié)點(diǎn)根據(jù)所述配置指令進(jìn)行配置和更改網(wǎng)絡(luò)連接狀態(tài)。從機(jī)節(jié)點(diǎn)可以根據(jù)配置指令的指令類型確定應(yīng)進(jìn)行何種配置。
[0035]根據(jù)上述的識(shí)別結(jié)果產(chǎn)生對(duì)應(yīng)的配置指令,最終期望從機(jī)節(jié)點(diǎn)利用該配置指令達(dá)到從機(jī)節(jié)點(diǎn)的目標(biāo)主機(jī)節(jié)點(diǎn)總線地址與其自身的總線地址已配置,從機(jī)節(jié)點(diǎn)與主機(jī)節(jié)點(diǎn)正常點(diǎn)對(duì)點(diǎn)連接的效果。
[0036]此外,所述主機(jī)節(jié)點(diǎn)按照目標(biāo)主機(jī)總線地址是否配置、從機(jī)總線地址是否配置、以及網(wǎng)絡(luò)是否連接的順序獲取識(shí)別結(jié)果之后,還包括:
[0037]所述主機(jī)節(jié)點(diǎn)根據(jù)識(shí)別結(jié)果將所述從機(jī)節(jié)點(diǎn)的網(wǎng)絡(luò)連接狀態(tài)記錄至從機(jī)節(jié)點(diǎn)管理列表中。
[0038]其中,主機(jī)建立從機(jī)管理列表的目的在于,通過(guò)控制與所述主機(jī)節(jié)點(diǎn)通信的從機(jī)節(jié)點(diǎn)的數(shù)量,監(jiān)聽(tīng)所述主機(jī)節(jié)點(diǎn)的CAN總線地址,管理從機(jī)節(jié)點(diǎn)的物理地址和CAN總線地址。
[0039]S400、所述主機(jī)節(jié)點(diǎn)根據(jù)所述從機(jī)總線地址和網(wǎng)絡(luò)連接狀態(tài)與所述從機(jī)節(jié)點(diǎn)進(jìn)行點(diǎn)對(duì)點(diǎn)通信。
[0040]當(dāng)主機(jī)節(jié)點(diǎn)與從機(jī)節(jié)點(diǎn)可以進(jìn)行點(diǎn)對(duì)點(diǎn)通信之后,所述從機(jī)總線地址和網(wǎng)絡(luò)連接狀態(tài)與所述從機(jī)節(jié)點(diǎn)進(jìn)行點(diǎn)對(duì)點(diǎn)通信包括:
[0041]所述主機(jī)節(jié)點(diǎn)接收外部接口發(fā)送至從機(jī)節(jié)點(diǎn)的數(shù)據(jù);
[0042]所述主機(jī)節(jié)點(diǎn)根據(jù)所述從機(jī)節(jié)點(diǎn)的網(wǎng)路連接狀態(tài)和從機(jī)總線地址,將所述數(shù)據(jù)點(diǎn)對(duì)點(diǎn)發(fā)送至所述從機(jī)節(jié)點(diǎn)。
[0043]例如:當(dāng)需要完成從機(jī)節(jié)點(diǎn)與外部裝置之間數(shù)據(jù)傳輸?shù)臅r(shí)候,主機(jī)會(huì)利用其外部數(shù)據(jù)接口接收外部裝置中的待發(fā)數(shù)據(jù),并利用其與從機(jī)節(jié)點(diǎn)之間的點(diǎn)對(duì)點(diǎn)通信將數(shù)據(jù)傳輸至從機(jī)節(jié)點(diǎn)。
[0044]本發(fā)明實(shí)施例一提出了一種CAN總線的主從機(jī)串行通信方法,通過(guò)主機(jī)節(jié)點(diǎn)監(jiān)聽(tīng)CAN總線,獲取從機(jī)節(jié)點(diǎn)發(fā)送的廣播消息,并以此配置目標(biāo)主機(jī)總線及從機(jī)總線地址,最終通過(guò)從機(jī)總線地址與網(wǎng)絡(luò)連接狀態(tài)實(shí)現(xiàn)與從機(jī)節(jié)點(diǎn)的點(diǎn)對(duì)點(diǎn)通信,并進(jìn)一步實(shí)現(xiàn)從機(jī)節(jié)點(diǎn)與外部裝置的數(shù)據(jù)傳輸,進(jìn)而克服了現(xiàn)有CAN總線通信方式中,需要大量數(shù)據(jù)節(jié)點(diǎn)來(lái)處理數(shù)據(jù),并由此帶來(lái)的數(shù)據(jù)擁堵的問(wèn)題。
[0045]實(shí)施例二:
[0046]本發(fā)明實(shí)施例二是在實(shí)施例一的基礎(chǔ)上,進(jìn)一步指出:所述主機(jī)節(jié)點(diǎn)根據(jù)識(shí)別結(jié)果產(chǎn)生配置指令,廣播發(fā)送給所述從機(jī)節(jié)點(diǎn),以指示所述從機(jī)節(jié)點(diǎn)根據(jù)所述配置指令進(jìn)行配置和更改網(wǎng)絡(luò)連接狀態(tài)包括:
[0047]如果識(shí)別到所述網(wǎng)絡(luò)連接狀態(tài)為目標(biāo)主機(jī)總線地址未配置,則所述主機(jī)節(jié)點(diǎn)產(chǎn)生目標(biāo)主機(jī)總線地址配置指令,將本地的主機(jī)總線地址和所述從機(jī)節(jié)點(diǎn)的物理地址添加到所述目標(biāo)主機(jī)總線地址配置指令中,進(jìn)行廣播發(fā)送。
[0048]主機(jī)節(jié)點(diǎn)通過(guò)從機(jī)節(jié)點(diǎn)管理列表監(jiān)聽(tīng)整個(gè)CAN網(wǎng)絡(luò)總線數(shù)據(jù),進(jìn)而獲取從機(jī)節(jié)點(diǎn)的廣播消息。這個(gè)廣播消息包括從機(jī)節(jié)點(diǎn)的物理地址和網(wǎng)絡(luò)連接狀態(tài)。其中,若監(jiān)聽(tīng)到網(wǎng)絡(luò)連接狀態(tài)中的目標(biāo)主機(jī)總線地址未配置,主機(jī)節(jié)