專利名稱:一種小型can總線網(wǎng)絡(luò)組網(wǎng)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及CAN總線技術(shù)領(lǐng)域,尤其涉及一種小型CAN總線網(wǎng)絡(luò)組網(wǎng)的方法。
技術(shù)背景
CAN即控制器局域網(wǎng)絡(luò),屬于工業(yè)現(xiàn)場總線的范疇。與一般的通信總線相比,CAN 總線的數(shù)據(jù)通信具有突出的可靠性、實(shí)時(shí)性和靈活性。由于其良好的性能及獨(dú)特的設(shè)計(jì), CAN總線越來越受到人們的重視。其應(yīng)用范圍目前已不再局限于汽車行業(yè),而向自動(dòng)控制、 航空航天、航海、過程工業(yè)、機(jī)械工業(yè)、紡織機(jī)械、農(nóng)用機(jī)械、機(jī)器人、數(shù)控機(jī)床、醫(yī)療器械及傳感器等領(lǐng)域發(fā)展。
一般在組成CAN網(wǎng)絡(luò)時(shí),需要先定義好CAN網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)的ID,這樣使得CAN網(wǎng)絡(luò)的建立需要大量的準(zhǔn)備時(shí)間,需要有專業(yè)人員設(shè)置好每個(gè)節(jié)點(diǎn)的ID。對于一般的CAN網(wǎng)絡(luò),用戶無法使自行完成CAN網(wǎng)絡(luò)中ID的分配。
雖然現(xiàn)有的CAN組網(wǎng)的方法中,也可由網(wǎng)絡(luò)分配ID,但多采用一個(gè)主機(jī)來管理和分配地址,各個(gè)節(jié)點(diǎn)需要依次連接到網(wǎng)絡(luò),在節(jié)點(diǎn)接入過程中容易在網(wǎng)絡(luò)中引入干擾,組網(wǎng)復(fù)雜度較高,操作較不方便。發(fā)明內(nèi)容
本發(fā)明的目的在于針對上述問題而設(shè)計(jì)了一種能自行分配ID,實(shí)現(xiàn)CAN網(wǎng)絡(luò)通訊的小型CAN總線網(wǎng)絡(luò)組網(wǎng)的方法,主要針對網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)目較少的場合,本方法無需主機(jī)分配地址,各個(gè)節(jié)點(diǎn)在組網(wǎng)時(shí)都已經(jīng)接入CAN總線網(wǎng)絡(luò),不需要依次連接到網(wǎng)絡(luò),算法簡單, 操作簡單,在現(xiàn)有硬件條件下只需加入簡單代碼就可以實(shí)現(xiàn)本方法。
為實(shí)現(xiàn)上述目的,本發(fā)明采用如下方法一種小型CAN總線網(wǎng)絡(luò)組網(wǎng)的方法,它的步驟為第一步,CAN網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的ID均為初始值ID0,選定其中一個(gè)為起始的目標(biāo)節(jié)點(diǎn), 然后在CAN網(wǎng)絡(luò)上廣播發(fā)送生成ID的命令;由于節(jié)點(diǎn)初始值均為ID0,所以CAN通訊模塊可以批量生產(chǎn),裝配簡單,無需像傳統(tǒng)組網(wǎng)那樣,需要提前設(shè)定好每個(gè)節(jié)點(diǎn)的ID。由于各個(gè)節(jié)點(diǎn)的CAN通訊模塊并無差異,所以起始的目標(biāo)節(jié)點(diǎn)可以按用戶的需要選定,無任何限制, 而現(xiàn)有的能自行分配ID的網(wǎng)絡(luò)中,都采用一個(gè)專門用來管理和分配ID的節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)是唯一確定的,在實(shí)際安裝網(wǎng)絡(luò)中很不方便。
第二步,其他節(jié)點(diǎn)在接收到生成ID的命令后,開始隨機(jī)生成一個(gè)整數(shù)作為自己的 ID,各個(gè)節(jié)點(diǎn)生成自己的ID后,把IDO作為目標(biāo)地址,將自己新ID發(fā)送出去;由于節(jié)點(diǎn)初始 ID都為ID0,所以目標(biāo)節(jié)點(diǎn)發(fā)送的生成ID的命令,各個(gè)節(jié)點(diǎn)在同一時(shí)間均可接收到,然后利用隨機(jī)數(shù)函數(shù)生成自己的ID。較之用固定的管理節(jié)點(diǎn)來對依次接入網(wǎng)絡(luò)的節(jié)點(diǎn)進(jìn)行ID的分配,可以節(jié)約大量的時(shí)間,且通訊穩(wěn)定性好,不會因節(jié)點(diǎn)的依次接入而引入干擾;算法簡單可靠,直接調(diào)用現(xiàn)有的隨機(jī)數(shù)函數(shù)即可。
第三步,IDO節(jié)點(diǎn)將接收到的ID號碼加上IDO組成一個(gè)ID表;起始的目標(biāo)節(jié)點(diǎn)暫時(shí)對網(wǎng)絡(luò)中的ID進(jìn)行管理,可以快速的判斷出組網(wǎng)是否成功。固定的管理節(jié)點(diǎn)需要時(shí)時(shí)刻刻的對總線進(jìn)行監(jiān)聽,這樣不僅浪費(fèi)資源,而且還大量占用總線時(shí)間,降低有效通訊。與采用固定的管理節(jié)點(diǎn)不同,起始的目標(biāo)節(jié)點(diǎn)只是被動(dòng)的接收各個(gè)節(jié)點(diǎn)發(fā)送來的數(shù)據(jù),全部為有益通訊,總線利用率高,而且只是暫時(shí)管理ID表。
第四步,IDO節(jié)點(diǎn)將生成的ID表發(fā)送給各個(gè)其他節(jié)點(diǎn),至此CAN網(wǎng)絡(luò)ID分配完成。 將完整的ID表發(fā)送給其他各個(gè)節(jié)點(diǎn),從而取消了起始的目標(biāo)節(jié)點(diǎn)的差異性,使網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的地位均相同,使用固定的管理節(jié)點(diǎn)的網(wǎng)絡(luò),這一管理節(jié)點(diǎn)始終處于管理者的地位,其他節(jié)點(diǎn)均受到管理。
所述第三步中,如果各個(gè)節(jié)點(diǎn)隨機(jī)生成的ID號均不一樣,則ID表中含有N個(gè)不相同的ID號,則表示ID分配成功,進(jìn)入第四步。
所述第三步中,如果生成的ID表中出現(xiàn)相同的ID,或者ID表中ID的數(shù)目少于N, IDO節(jié)點(diǎn)則按照當(dāng)前的ID表重發(fā)生成ID的命令,跳至第二步繼續(xù)進(jìn)行。
本發(fā)明是針對小型的CAN網(wǎng)絡(luò)提出的組網(wǎng)方法,具體說是針對節(jié)點(diǎn)數(shù)50以內(nèi)的 CAN網(wǎng)絡(luò)的組網(wǎng)方法。它先將CAN網(wǎng)絡(luò)中各節(jié)點(diǎn)的地址一致化,然后從中選擇一個(gè)節(jié)點(diǎn)作為起始的目標(biāo)節(jié)點(diǎn),隨即向CAN網(wǎng)絡(luò)發(fā)布ID生成信息,除目標(biāo)節(jié)點(diǎn)外的其余各節(jié)點(diǎn)都會自動(dòng)生成一個(gè)地址,并向目標(biāo)節(jié)點(diǎn)發(fā)送自己的地址,為防止沖突出現(xiàn),只有當(dāng)所有節(jié)點(diǎn)發(fā)布的自己地址不同時(shí),組網(wǎng)才算成功,只要有任何兩個(gè)或多個(gè)節(jié)點(diǎn)的地址出現(xiàn)相同,則本次組網(wǎng)失敗,將重新進(jìn)行組網(wǎng)操作。
本發(fā)明的有益效果是1)方法實(shí)現(xiàn)簡單,從而降低了開發(fā)成本,只需加入簡單的代碼就可以實(shí)現(xiàn)本方法,無需任何的硬件改動(dòng)。 2)本方法中最初各個(gè)節(jié)點(diǎn)的初始ID相同,各個(gè)節(jié)點(diǎn)的CAN通訊部分軟硬件完全相同,所以適合于產(chǎn)量化的生產(chǎn)節(jié)點(diǎn)通訊器件。 3)組網(wǎng)操作簡單,可由用戶自行完成,用戶只要連接好線路,即可完成整個(gè)網(wǎng)絡(luò)的ID分配,使用方便。
圖1為本發(fā)明CAN網(wǎng)絡(luò)示意圖。
具體實(shí)施方式
下面結(jié)合附圖與實(shí)施例對本發(fā)明作詳細(xì)說明。
圖 1 中,第一步,先按附圖所示連接好各個(gè)節(jié)點(diǎn),各個(gè)節(jié)點(diǎn)的ID初始值均為ID0,且使用的為10 位二進(jìn)制ID。
第二步,選取一節(jié)點(diǎn),例如節(jié)點(diǎn)3,輸入CAN網(wǎng)絡(luò)中節(jié)點(diǎn)總數(shù)N,開啟ID分配功能。
第三步,節(jié)點(diǎn)3以IDO作為目標(biāo)地址,在CAN網(wǎng)絡(luò)中發(fā)送生成ID的命令。
第四步,CAN網(wǎng)絡(luò)中其他節(jié)點(diǎn)接收到生成ID的命令后,開始隨機(jī)生成一個(gè)10位二進(jìn)制的正整數(shù)作為自己的ID,并將此ID發(fā)送給節(jié)點(diǎn)3。例如,節(jié)點(diǎn)1在接收到生成ID的命令后,節(jié)點(diǎn)1會隨機(jī)生成一個(gè)10位二進(jìn)制數(shù),將此二進(jìn)制數(shù)作為自己的ID,并將此ID發(fā)送給節(jié)點(diǎn)3。
第五步,節(jié)點(diǎn)3會在一定時(shí)間里接收各個(gè)節(jié)點(diǎn)發(fā)來的ID號,并生成ID表。超過此時(shí)間后,節(jié)點(diǎn)3開始開始計(jì)算ID表中不相同ID的數(shù)目n,如果η等于N,則表示網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的ID都不相同,ID分配成功,進(jìn)入第六步。否則,節(jié)點(diǎn)3將根據(jù)當(dāng)前的ID表,向其他各個(gè)節(jié)點(diǎn)重發(fā)生成ID的命令,轉(zhuǎn)至第四步繼續(xù)進(jìn)行。
第六步,節(jié)點(diǎn)3將ID表發(fā)送給其他各個(gè)節(jié)點(diǎn)。
關(guān)于此方法在CAN網(wǎng)絡(luò)中適用范圍的計(jì)算。
假設(shè)采用10位二進(jìn)制ID,則可用ID為IOM個(gè),我們以1000個(gè)可用ID計(jì)算。(CAN網(wǎng)絡(luò)中節(jié)點(diǎn)總數(shù)N)-1第一次ID分配成功的概率
權(quán)利要求
1.一種小型CAN總線網(wǎng)絡(luò)組網(wǎng)的方法,其特征是,它的步驟為第一步,CAN網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的ID均為初始值ID0,選定其中一個(gè)為起始的目標(biāo)節(jié)點(diǎn), 然后在CAN網(wǎng)絡(luò)上廣播發(fā)送生成ID的命令;第二步,其他節(jié)點(diǎn)在接收到生成ID的命令后,開始隨機(jī)生成一個(gè)整數(shù)作為自己的ID, 各個(gè)節(jié)點(diǎn)生成自己的ID后,把IDO作為目標(biāo)地址,將自己新ID發(fā)送出去; 第三步,IDO節(jié)點(diǎn)將接收到的ID號碼加上IDO組成一個(gè)ID表; 第四步,IDO節(jié)點(diǎn)將生成的ID表發(fā)送給各個(gè)其他節(jié)點(diǎn),至此,CAN網(wǎng)絡(luò)ID分配完成。
2.如權(quán)利要求1所述的小型CAN總線網(wǎng)絡(luò)組網(wǎng)的方法,其特征是,所述第三步中,如果各個(gè)節(jié)點(diǎn)隨機(jī)生成的ID號均不一樣,則ID表中含有N個(gè)不相同的ID號,則表示ID分配成功,進(jìn)入第四步。
3.如權(quán)利要求1所述的小型CAN總線網(wǎng)絡(luò)組網(wǎng)的方法,其特征是,所述第三步中,如果生成的ID表中出現(xiàn)相同的ID,或者ID表中ID的數(shù)目少于N,IDO節(jié)點(diǎn)則按照當(dāng)前的ID表重發(fā)生成ID的命令,跳至第二步繼續(xù)進(jìn)行。
全文摘要
本發(fā)明公開了一種能自行分配ID,實(shí)現(xiàn)CAN網(wǎng)絡(luò)通訊的小型CAN總線網(wǎng)絡(luò)組網(wǎng)的方法,主要針對網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)目較少的場合。它的步驟為第一步,CAN網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的ID均為初始值ID0,選定其中一個(gè)為起始的目標(biāo)節(jié)點(diǎn),然后在CAN網(wǎng)絡(luò)上廣播發(fā)送生成ID的命令;第二步,其他節(jié)點(diǎn)在接收到生成ID的命令后,開始隨機(jī)生成一個(gè)整數(shù)作為自己的ID,各個(gè)節(jié)點(diǎn)生成自己的ID后,把ID0作為目標(biāo)地址,將自己新ID發(fā)送出去;第三步,ID0節(jié)點(diǎn)將接收到的ID號碼加上ID0組成一個(gè)ID表;第四步,ID0節(jié)點(diǎn)將生成的ID表發(fā)送給各個(gè)其他節(jié)點(diǎn),至此,CAN網(wǎng)絡(luò)ID分配完成。
文檔編號H04L12/40GK102546340SQ201210034238
公開日2012年7月4日 申請日期2012年2月16日 優(yōu)先權(quán)日2012年2月16日
發(fā)明者于國棟, 方圓, 王公堂, 許福運(yùn) 申請人:山東師范大學(xué)