本發(fā)明涉及通訊技術領域,尤其涉及一種通訊系統(tǒng)及通訊方法。
背景技術:
目前CAN(Controller Area Network,控制器局域網(wǎng)絡)總線被廣泛應用于汽車控制系統(tǒng)和環(huán)境溫度惡劣、電磁輻射強且振動大的工業(yè)環(huán)境。大量的設備可以通過CAN總線相連并進行通訊,但每個設備在發(fā)送數(shù)據(jù)時必須接收到至少一個確認信號,如果在預設的時間內(nèi)沒有接收到確認信號,它將重復發(fā)送數(shù)據(jù)。當多個設備同時重復發(fā)送數(shù)據(jù)時,則會出現(xiàn)網(wǎng)絡擁堵以及大量數(shù)據(jù)撞幀的現(xiàn)象。
鑒于此,實有必要提供一種通訊系統(tǒng)及通訊方法以克服以上缺陷。
技術實現(xiàn)要素:
本發(fā)明的目的是提供一種能避免網(wǎng)絡擁堵以及防止數(shù)據(jù)撞幀的通訊系統(tǒng)。
為了實現(xiàn)上述目的,本發(fā)明提供一種通訊系統(tǒng),所述通訊系統(tǒng)包括主機、多個從機及控制器局域網(wǎng)絡總線,所述主機通過所述控制器局域網(wǎng)絡總線與所述多個從機相連并進行通訊,每個從機在啟動時將自己的地址注冊到所述主機的令牌列表中,所述主機根據(jù)所述令牌列表中每個從機的地址周期性地發(fā)放令牌給指定的從機,獲取令牌的從機發(fā)送數(shù)據(jù)給所述主機,并在所述數(shù)據(jù)發(fā)送完畢后發(fā)送放棄令牌的信息給所述主機,所述主機接收到所述放棄令牌的信息后,在下一個周期根據(jù)所述令牌列表中每個從機的地址發(fā)放令牌給下一個從機。
進一步地,每個從機在啟動時發(fā)送注冊信息給所述主機,每個注冊信息包括相應的從機的地址,所述主機將接收到的注冊信息注冊到所述令牌列表中,且在注冊成功后發(fā)送注冊確認信號給相應的從機,接收到所述注冊確認信號的從機確認注冊成功。
進一步地,沒有接收到注冊確認信號的從機重新向所述主機發(fā)送注冊信息。
進一步地,所述主機包括計時器,所述主機根據(jù)所述計時器的計時來判斷是否到達發(fā)放令牌的周期,并在到達發(fā)放令牌的周期時,根據(jù)所述令牌列表中每個從機的地址發(fā)放令牌給指定的從機。
本發(fā)明的目的是還提供一種能避免網(wǎng)絡擁堵以及防止數(shù)據(jù)撞幀的通訊方法。
為了實現(xiàn)上述目的,本發(fā)明提供一種通訊方法,所述通訊方法包括:
每個從機在啟動時將自己的地址注冊到主機的令牌列表中;
判斷計時器的計時是否到達所述主機發(fā)放令牌的周期;
當所述計時器的計時到達所述主機發(fā)放令牌的周期時,所述主機根據(jù)所述令牌列表中每個從機的地址發(fā)放令牌給指定的從機;
獲取令牌的從機發(fā)送數(shù)據(jù)給所述主機,并在所述數(shù)據(jù)發(fā)送完畢后發(fā)送放棄令牌的信息給所述主機;
所述主機在接收到所述放棄令牌的信息后,判斷發(fā)送所述放棄令牌的信息的從機是否是所述令牌列表中的最后一個從機;以及
當發(fā)送所述放棄令牌的信息的從機是所述令牌列表中的最后一個從機時,所述主機確認已經(jīng)與每個從機進行一次通訊。
進一步地,所述通訊方法還包括:
當發(fā)送所述放棄令牌的信息的從機不是所述令牌列表中的最后一個從機,執(zhí)行“判斷計時器的計時是否到達所述主機發(fā)放令牌的周期”。
進一步地,“每個從機在啟動時將自己的地址注冊到主機的令牌列表中”包括:
每個從機在啟動時發(fā)送注冊信息給所述主機,每個注冊信息包括相應的從機的地址;
所述主機將接收到的注冊信息注冊到所述令牌列表中,且在注冊成功后發(fā)送注冊確認信號給相應的從機;
每個從機判斷是否接收到所述注冊確認信號;以及
接收到所述注冊確認信號的從機確認注冊成功。
進一步地,“每個從機在啟動時將自己的地址注冊到主機的令牌列表中”還包括:
沒有接收到所述注冊確認信號的從機重新向所述主機發(fā)送注冊信息,并執(zhí)行“所述主機將接收到的注冊信息注冊到所述令牌列表中,且在注冊成功后發(fā)送注冊確認信號給相應的從機”。
相比于現(xiàn)有技術,本發(fā)明通過每個從機在啟動時將自己的地址注冊到所述主機的令牌列表中,并通過所述主機根據(jù)所述令牌列表中每個從機的地址周期性地發(fā)放令牌給指定的從機,還通過獲取令牌的從機發(fā)送數(shù)據(jù)給所述主機,并在所述數(shù)據(jù)發(fā)送完畢后發(fā)送放棄令牌的信息給所述主機,以使所述主機接收到所述放棄令牌的信息后,在下一個周期根據(jù)所述令牌列表中每個從機的地址發(fā)放令牌給下一個從機。如此反復,所述主機根據(jù)所述令牌列表中每個從機的地址依次將令牌在每個周期發(fā)送給對應的從機,以使每個從機在相應地周期將數(shù)據(jù)發(fā)送給所述主機,從而避免了所述多個從機同時向所述主機發(fā)送數(shù)據(jù)的狀況發(fā)生,進而有效地避免了網(wǎng)絡擁堵并防止了數(shù)據(jù)撞幀。
【附圖說明】
圖1為本發(fā)明的實施例提供的通訊系統(tǒng)的原理框圖。
圖2為本發(fā)明的實施例提供的通訊方法的流程圖。
圖3為圖2中步驟S1的子流程圖。
【具體實施方式】
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人士在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
當一個元件被認為與另一個元件“相連”時,它可以是直接連接到另一個元件或者可能同時存在居中元件。除非另有定義,本文所使用的所有的技術和科學術語與屬于本發(fā)明的技術領域的技術人士通常理解的含義相同。本文中在本發(fā)明的說明書中所使用的術語只是為了描述具體的實施例的目的,不是旨在于限制本發(fā)明。
請參閱圖1,圖1為本發(fā)明的實施例提供的通訊系統(tǒng)100的原理框圖。所述通訊系統(tǒng)100包括主機10、多個從機20及CAN(Controller Area Network,控制器局域網(wǎng)絡)總線30。所述主機10通過所述CAN總線30與所述多個從機20相連并進行通訊。每個從機20在啟動時將自己的地址注冊到所述主機10的令牌列表中。所述主機10根據(jù)所述令牌列表中每個從機20的地址周期性地發(fā)放令牌給指定的從機20。獲取令牌的從機20發(fā)送數(shù)據(jù)給所述主機10,并在所述數(shù)據(jù)發(fā)送完畢后發(fā)送放棄令牌的信息給所述主機10。所述主機10接收到所述放棄令牌的信息后,在下一個周期根據(jù)所述令牌列表中每個從機20的地址發(fā)放令牌給下一個從機20。如此反復,所述主機10根據(jù)所述令牌列表中每個從機20的地址依次將令牌在每個周期發(fā)送給對應的從機20,以使每個從機20在相應地周期將數(shù)據(jù)發(fā)送給所述主機10,從而避免了所述多個從機20同時向所述主機10發(fā)送數(shù)據(jù)的狀況發(fā)生,進而有效地避免了網(wǎng)絡擁堵并防止了數(shù)據(jù)撞幀。
在本實施方式中,每個從機20在啟動時發(fā)送注冊信息給所述主機10,每個注冊信息包括相應的從機20的地址。所述主機10將接收到的注冊信息注冊到所述令牌列表中,且在注冊成功后發(fā)送注冊確認信號給相應的從機20,接收到所述注冊確認信號的從機20確認注冊成功。沒有接收到注冊確認信號的從機20重新向所述主機10發(fā)送注冊信息。當每個從機20注冊成功時,每個從機20的地址也被成功地注冊到所述主機10的令牌列表中。
在本實施方式中,所述主機10包括計時器12。所述主機10根據(jù)所述計時器12的計時來判斷是否到達發(fā)送令牌的周期,并在到達發(fā)送令牌的周期時,根據(jù)所述令牌列表中每個從機20的地址發(fā)放令牌給指定的從機20。所述周期的時間長短可根據(jù)實際情況進行相應調(diào)整,例如,所述周期可以為10毫秒,20毫秒等。
請參閱圖2,圖2為本發(fā)明的實施例提供的通訊方法的流程圖。根據(jù)不同的需求,圖2所示的流程圖中的步驟的執(zhí)行順序可以改變,某些步驟可以拆分為幾個步驟,某些步驟可以省略。
步驟S1,每個從機20在啟動時將自己的地址注冊到主機10的令牌列表中。
步驟S2,判斷計時器12的計時是否到達所述主機10發(fā)放令牌的周期。當所述計時器12的計時到達所述主機10發(fā)放令牌的周期時,執(zhí)行步驟S3;當所述計時器12的計時沒有到達所述主機10發(fā)放令牌的周期時,執(zhí)行步驟S2。
步驟S3,所述主機10根據(jù)所述令牌列表中每個從機20的地址發(fā)放令牌給指定的從機20。
步驟S4,獲取令牌的從機20發(fā)送數(shù)據(jù)給所述主機10,并在所述數(shù)據(jù)發(fā)送完畢后發(fā)送放棄令牌的信息給所述主機10。
步驟S5,所述主機10在接收到所述放棄令牌的信息后,判斷發(fā)送所述放棄令牌的信息的從機20是否是所述令牌列表中的最后一個從機20。當發(fā)送所述放棄令牌的信息的從機20是所述令牌列表中的最后一個從機20時,執(zhí)行步驟S6;當發(fā)送所述放棄令牌的信息的從機20不是所述令牌列表中的最后一個從機20時,執(zhí)行步驟S2。
步驟S6,所述主機10確認已經(jīng)與每個從機20進行一次通訊。
請參閱圖3,圖3為圖2中步驟S1的子流程圖。根據(jù)不同的需求,圖3所示的流程圖中的步驟的執(zhí)行順序可以改變,某些步驟可以拆分為幾個步驟,某些步驟可以省略。
步驟S11,每個從機20在啟動時發(fā)送注冊信息給所述主機10,每個注冊信息包括相應的從機20的地址。
步驟S12,所述主機10將接收到的注冊信息注冊到所述令牌列表中,且在注冊成功后發(fā)送注冊確認信號給相應的從機20。
步驟S13,每個從機20判斷是否接收到所述注冊確認信號。接收到所述注冊確認信號的從機20,執(zhí)行步驟S14;沒有接收到所述注冊確認信號的從機20,執(zhí)行步驟S15。
步驟S14,接收到所述注冊確認信號的從機20確認注冊成功。
步驟S15,沒有接收到所述注冊確認信號的從機20重新向所述主機10發(fā)送注冊信息,并執(zhí)行步驟S12。
本發(fā)明通過每個從機20在啟動時將自己的地址注冊到所述主機10的令牌列表中,并通過所述主機10根據(jù)所述令牌列表中每個從機20的地址周期性地發(fā)放令牌給指定的從機20,還通過獲取令牌的從機20發(fā)送數(shù)據(jù)給所述主機10,并在所述數(shù)據(jù)發(fā)送完畢后發(fā)送放棄令牌的信息給所述主機10,以使所述主機10接收到所述放棄令牌的信息后,在下一個周期根據(jù)所述令牌列表中每個從機20的地址發(fā)放令牌給下一個從機20。如此反復,所述主機10根據(jù)所述令牌列表中每個從機20的地址依次將令牌在每個周期發(fā)送給對應的從機20,以使每個從機20在相應地周期將數(shù)據(jù)發(fā)送給所述主機10,從而避免了所述多個從機20同時向所述主機10發(fā)送數(shù)據(jù)的狀況發(fā)生,進而有效地避免了網(wǎng)絡擁堵并防止了數(shù)據(jù)撞幀。
本發(fā)明并不僅僅限于說明書和實施方式中所描述,因此對于熟悉領域的人士而言可容易地實現(xiàn)另外的優(yōu)點和修改,故在不背離權利要求及等同范圍所限定的一般概念的精神和范圍的情況下,本發(fā)明并不限于特定的細節(jié)、代表性的設備和這里示出與描述的圖示示例。