一種基于can總線的機器人系統(tǒng)內通信方法
【專利說明】
[0001]
技術領域
[0002] 本發(fā)明涉及機器人系統(tǒng)內通信領域,具體是一種基于CAN總線的機器人系統(tǒng)內通 f目方法。
【背景技術】
[0003] 控制器局域網總線(CAN,ControllerAreaNetwork)是一種用于實時應用的串行 通訊協(xié)議總線,它可以使用雙絞線來傳輸信號,是世界上應用最廣泛的現(xiàn)場總線之一。CAN 協(xié)議開始用于汽車各種不同元件之間的通信,以此取代昂貴而笨重的配電線束。該協(xié)議的 健壯性使其用途延伸到其他自動化和工業(yè)應用。CAN協(xié)議的特性包括完整性的串行數(shù)據通 訊、提供實時支持、傳輸速率高達IMb/s、同時具有11位的尋址以及檢錯能力。憑借其高性 能、高可靠性,在工業(yè)控制、汽車電子等領域越來越普及。CAN協(xié)議定義了仲裁ID及數(shù)據幀 中數(shù)據的格式,即仲裁ID分為標準格式(libit)和擴展格式(29bit),而每個數(shù)據幀最多可 傳送8個字節(jié)。
[0004] 目前,應對多模塊中的通信,基本的策略是將CAN總線ID設計成簡單的地址模式, 這種形式對于模塊系統(tǒng)中又包含子模塊的設計很難處理,會占用很大的數(shù)據幀空間去區(qū)分 子模塊;而處理大數(shù)據時,數(shù)據幀采用"末幀標記"的方法,這種策略在多模塊同時大量發(fā)送 數(shù)據時難以發(fā)現(xiàn)丟包及錯包問題。
【發(fā)明內容】
[0005] 本發(fā)明要解決的問題是提供一種基于CAN總線的機器人系統(tǒng)內通信方法,該方法 無需占用很大的數(shù)據幀空間去區(qū)分子模塊,且可準確發(fā)現(xiàn)丟包及錯包。
[0006] 本發(fā)明的一種基于CAN總線的機器人系統(tǒng)內通信方法,通信只采用CAN總線的擴 展幀,將29bit的擴展幀分為7部分,前三部分為優(yōu)先級、源系統(tǒng)ID、目的系統(tǒng)ID;具體為: 第28-26bit為優(yōu)先級、第25-22bit為源系統(tǒng)ID、第21-18bit為目的系統(tǒng)ID;在多系統(tǒng)同 時發(fā)送數(shù)據時CAN模塊分別以優(yōu)先級、原系統(tǒng)ID、目的系統(tǒng)ID作為一二三級仲裁依據,在收 取數(shù)據時每個系統(tǒng)的CAN模塊以目的系統(tǒng)ID為過濾基準進行收取,具體模塊的區(qū)分在系統(tǒng) 代碼中進行分發(fā);第15-8bit為數(shù)據包的總包數(shù),實際值為數(shù)據分包總數(shù)減一,為區(qū)分后續(xù) 數(shù)據幀為單包還是多包數(shù)據的依據;第7-4bit為源模塊ID,3-0為目的模塊ID。
[0007] 作為上述技術方案的進一步改進,所述優(yōu)先級提供8個優(yōu)先級別,0級的優(yōu)先級最 高,7級最低。
[0008] 作為上述技術方案的另一種改進,所述源系統(tǒng)ID為全系統(tǒng)的編號,每個系統(tǒng)一個 編號,總控系統(tǒng)編號為〇,優(yōu)先級最高,其他系統(tǒng)編號根據實際測試進行編號。
[0009] 作為上述技術方案的另一種改進,所述目的系統(tǒng)ID與源系統(tǒng)ID-致。
[0010] 作為上述技術方案的另一種改進,所述源模塊ID為每個系統(tǒng)內對自身子模塊單 獨編號,與系統(tǒng)ID結合為系統(tǒng)子模塊ID后對機器人系統(tǒng)全局唯一。
[0011] 作為上述技術方案的另一種改進,所述目的模塊ID與源模塊ID-致。
[0012] 作為上述技術方案的另一種改進,CAN發(fā)送的數(shù)據小于等于8字節(jié)時,無需分包, 所述數(shù)據包的總包數(shù)設置為〇 ;當發(fā)送數(shù)據大于8字節(jié)時,需要分包處理,根據圖表二對數(shù) 據幀的規(guī)定,分包總數(shù)=數(shù)據總字節(jié)數(shù)/6+ ! (!(數(shù)據總字節(jié)數(shù)%6));在接收組包時當 數(shù)據幀的packet_SN和總包數(shù)相等時,則這個分包為數(shù)據的最后一個分包。
[0013] 相對其他CAN總線自定數(shù)據規(guī)范和通信方法,通過本發(fā)明的基于CAN總線的機器 人系統(tǒng)內通信方法可以在多系統(tǒng)多模塊的通信場景下更有效的利用每幀的CAN總線信息, 可以通過優(yōu)先級、原系統(tǒng)ID、目的系統(tǒng)ID(目的系統(tǒng)ID之后的bits不用參與仲裁)三級 優(yōu)先級的設置更快速利用CAN進行發(fā)送仲裁。在大數(shù)據接收組包方面,通過packet_id和 packet_SN雙重驗證可以比其他的協(xié)議更有效的區(qū)分錯包,少包,更準確的接收信息。本發(fā) 明的通信方法有效地提高了機器人內部模塊之間的信號傳遞速度和準確性,有利于多模塊 同時大量發(fā)送數(shù)據,符合機器人功能越來越多、越來越復雜的發(fā)展趨勢的需要。
[0014]
【具體實施方式】
[0015] 下面對本發(fā)明提出的一種基于CAN總線的機器人系統(tǒng)內通信方法進行詳細說明。 所列舉的實施例僅是示例性說明,并不對本發(fā)明的保護范圍造成限制。
[0016] 機器人系統(tǒng)包括大量的模塊,模塊間的通信采用CAN協(xié)議,為了使各個模塊間的 通信能夠按優(yōu)先級穩(wěn)定完整快速的進行通信,本發(fā)明采用基于CAN總線的機器人系統(tǒng)內通 信方法,具體如表1所示,將CAN的仲裁ID和數(shù)據位做統(tǒng)一定義,為了每幀的最大化利用, 優(yōu)選通信只采用CAN的擴展ID,將29bit的擴展幀分為7部分,前三部分為優(yōu)先級、源系統(tǒng) ID、目的系統(tǒng)ID。優(yōu)先級、源系統(tǒng)ID、目的系統(tǒng)ID這三個部分決定了CAN線上發(fā)送順序,因 為每個系統(tǒng)都有一個獨立的CAN收發(fā)單元,系統(tǒng)內不同模塊發(fā)送的順序由寫入CANbuffer 中的先后決定,所以雖使用了擴展幀,但是CAN線的仲裁還只是使用了libit數(shù)據。
[0017] 第28_26bit為優(yōu)先級,最高三位作為優(yōu)先級這樣符合CAN本身的仲裁規(guī)定,提供 8個優(yōu)先級別,0級的優(yōu)先級最高,7級最低。在使用中默認情況使用中間的值如3級,緊急 的事件傳輸采用0級或1級,優(yōu)先級別低的事件默認采用7級。當三個bit的位址值全為 1時優(yōu)先級最低,全為〇時優(yōu)先級最高。具體為:〇級:〇〇〇, 1級:〇〇1,二級:〇1〇,三級011, 四級:1〇〇,五級:1〇1,六級:11〇,七級:111。將系統(tǒng)模塊ID分解為系統(tǒng)ID和子模塊ID,由 于每個系統(tǒng)對應一個CAN收發(fā)模塊,這樣在多系統(tǒng)同時發(fā)送數(shù)據時CAN模塊分別已優(yōu)先級、 原系統(tǒng)ID、目的系統(tǒng)ID作為一二三級仲裁依據,在收取數(shù)據時每個系統(tǒng)的CAN模塊以目的 系統(tǒng)ID為過濾基準進行收取,具體模塊的區(qū)分在系統(tǒng)代碼中進行分發(fā)。
[0018] 第25_22bit為源系統(tǒng)ID,全系統(tǒng)編號,每個系統(tǒng)一個編號,總控系統(tǒng)編號為0,優(yōu) 先級最高,其他系統(tǒng)編號根據實際測試進行編號。源系統(tǒng)ID中最大的編號視為廣播ID。第 21-18bit為目的系統(tǒng)ID,與源系統(tǒng)ID相同,只是處在的場景不同,每個系統(tǒng)的CAN接收過 濾都是以自身的系統(tǒng)ID和廣播ID為基準,即只接收目的系統(tǒng)ID為自身系統(tǒng)ID和廣播ID 的數(shù)據包。
[0019] 第15-8bit為數(shù)據包的總包數(shù),實際值為數(shù)據分包總數(shù)減一,為區(qū)分后續(xù)數(shù)據幀 為單包還是多包數(shù)據的依據,即區(qū)分后續(xù)數(shù)據幀是分包數(shù)據還是完整的數(shù)據,并與數(shù)據位 中packet_SN-起來判定數(shù)據包的完結。如表2所示,數(shù)據幀分為兩種情況:當為實際傳輸 的數(shù)據字節(jié)數(shù)小于等于8字節(jié)時,擴展ID的總包數(shù)設置為0,數(shù)據幀為實際數(shù)據;當實際數(shù) 據字節(jié)數(shù)大于8字節(jié)時,就需要做分包處理,分包總數(shù)=數(shù)據總字節(jié)數(shù)/6 +!(!(數(shù)據總 字節(jié)數(shù)%6)),分包總數(shù)設置在擴展ID的總包數(shù)中(為實際總數(shù)-1),每次傳輸?shù)臄?shù)據幀中需 要添加1字節(jié)的packet_id和1字節(jié)的packet_SN,之后才是實際數(shù)據分解的值。Packet_ SN為多包的分解序列號,組包時候按照這個編號進行整合,Packet_SN與總包數(shù)一致時,表 明此數(shù)據幀為最后一幀分解數(shù)據。packet_id為同一系統(tǒng)子模塊發(fā)送時候的發(fā)送標記號,同 一數(shù)據發(fā)送的分解幀packet_id相同,每次發(fā)送完一個數(shù)據的全部分解幀后,packet_id加 l,packet_id等于127時歸零以防止越界;這樣packet_id和系統(tǒng)子模塊ID結合就可以準 確的對分包定位,避免了只用系統(tǒng)子模塊ID做組包依據時對同源同目的的其他分解包的 錯誤整合。需要說明的是,多包數(shù)據幀分為三個部分:paCket_id,paCket_SN及實際數(shù)據分 解。本發(fā)明所述的通信方法只對分包數(shù)據幀,單包沒有packet_id,packet_SN部分。
[0020] 第7-4bit為源模塊ID,3-0為目的模塊ID。源模塊ID為每個系統(tǒng)內對自身子模 塊單獨編號,與系統(tǒng)ID結合為系統(tǒng)子模塊ID后對機器人系統(tǒng)全局唯一。目的模塊ID與源 模塊ID-致。源模塊ID和目的模塊ID結合源系統(tǒng)ID和目的系統(tǒng)ID可以確定CAN收發(fā) 的源和目的系統(tǒng)子模塊。
[0021] 17-16位缺省,值恒為"00"。
[0022] 表1CAN總線擴展ID分解示意
以上實施例僅用以說明本發(fā)明的技術方案,并非用于限定本發(fā)明的保護范圍。凡在本 發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,其均應涵蓋在本發(fā)明的權利 要求范圍當中。
【主權項】
1. 一種基于CAN總線的機器人系統(tǒng)內通信方法,其特征在于:通信只采用CAN總線的 擴展幀,將29bit的擴展幀分為7部分,前三部分為優(yōu)先級、源系統(tǒng)ID、目的系統(tǒng)ID ;具體 為:第28-26bit為優(yōu)先級、第25-22bit為源系統(tǒng)ID、第21-18bit為目的系統(tǒng)ID ;在多系統(tǒng) 同時發(fā)送數(shù)據時CAN模塊分別以優(yōu)先級、原系統(tǒng)ID、目的系統(tǒng)ID作為一二三級仲裁依據,在 收取數(shù)據時每個系統(tǒng)的CAN模塊以目的系統(tǒng)ID為過濾基準進行收取,具體模塊的區(qū)分在系 統(tǒng)代碼中進行分發(fā);第15-8bit為數(shù)據包的總包數(shù),實際值為數(shù)據分包總數(shù)減一,為區(qū)分后 續(xù)數(shù)據幀為單包還是多包數(shù)據的依據;第7-4bit為源模塊ID,3-0為目的模塊ID。2. 根據權利要求1所述的基于CAN總線的機器人系統(tǒng)內通信方法,其特征在于:所述 優(yōu)先級提供8個優(yōu)先級別,0級的優(yōu)先級最尚,7級最低。3. 根據權利要求1所述的基于CAN總線的機器人系統(tǒng)內通信方法,其特征在于:所述 源系統(tǒng)ID為全系統(tǒng)的編號,每個系統(tǒng)一個編號,總控系統(tǒng)編號為0,優(yōu)先級最高,其他系統(tǒng) 編號根據實際測試進行編號。4. 根據權利要求1所述的基于CAN總線的機器人系統(tǒng)內通信方法,其特征在于:所述 目的系統(tǒng)ID與源系統(tǒng)ID -致。5. 根據權利要求1所述的基于CAN總線的機器人系統(tǒng)內通信方法,其特征在于:所述 源模塊ID為每個系統(tǒng)內對自身子模塊單獨編號,與系統(tǒng)ID結合為系統(tǒng)子模塊ID后對機器 人系統(tǒng)全局唯一。6. 根據權利要求1所述的基于CAN總線的機器人系統(tǒng)內通信方法,其特征在于:所述 目的模塊ID與源模塊ID -致。7. 根據權利要求1所述的基于CAN總線的機器人系統(tǒng)內通信方法,其特征在于:CAN發(fā) 送的數(shù)據小于等于8字節(jié)時,無需分包,所述數(shù)據包的總包數(shù)設置為0 ;當發(fā)送數(shù)據大于8 字節(jié)時,需要分包處理,根據圖表二對數(shù)據幀的規(guī)定,分包總數(shù)=數(shù)據總字節(jié)數(shù)/6+ ! (! (數(shù)據總字節(jié)數(shù)%6));在接收組包時當數(shù)據幀的packet_SN和總包數(shù)相等時,則這個分包為 數(shù)據的最后一個分包。
【專利摘要】本發(fā)明公開的一種基于CAN總線的機器人系統(tǒng)內通信方法,通信只采用CAN總線的擴展幀,將29bit的擴展幀分為7部分,前三部分為優(yōu)先級、源系統(tǒng)ID、目的系統(tǒng)ID。本發(fā)明的通信方法可以在多系統(tǒng)多模塊的通信場景下更有效的利用每幀的CAN總線信息,可以通過優(yōu)先級、原系統(tǒng)ID、目的系統(tǒng)ID(目的系統(tǒng)ID之后的bits不用參與仲裁)三級優(yōu)先級的設置更快速利用CAN進行發(fā)送仲裁。在大數(shù)據接收組包方面,通過packet_id和packet_SN雙重驗證可以比其他的協(xié)議更有效的區(qū)分錯包,少包,更準確的接收信息。本發(fā)明的通信方法有效地提高了機器人內部模塊之間的信號傳遞速度和準確性,有利于多模塊同時大量發(fā)送數(shù)據,符合機器人功能越來越多、越來越復雜的發(fā)展趨勢的需要。
【IPC分類】H04L12/46, H04L12/40, H04L29/08
【公開號】CN105007208
【申請?zhí)枴緾N201510304052
【發(fā)明人】王磊, 高晉文
【申請人】南京阿凡達機器人科技有限公司
【公開日】2015年10月28日
【申請日】2015年6月4日