本發(fā)明涉及一種算法,具體的說(shuō),涉及了一種基于can2.0長(zhǎng)報(bào)文數(shù)據(jù)標(biāo)準(zhǔn)幀的組織算法。
背景技術(shù):
can總線協(xié)議是一種用于實(shí)時(shí)應(yīng)用的串行通訊總線協(xié)議,它可以使用雙絞線來(lái)傳輸信號(hào),是世界上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。最開(kāi)始can總線協(xié)議用于汽車中各種不同元件之間的通信,以此取代昂貴而笨重的配電線束。該協(xié)議的健壯性使其用途延伸到其他自動(dòng)化和工業(yè)應(yīng)用,例如航空航天、機(jī)器人、數(shù)控機(jī)床、醫(yī)療器械及傳感器等。can協(xié)議的特性包括完整性的串行數(shù)據(jù)通訊、提供實(shí)時(shí)支持、傳輸速率高達(dá)1mb/s、同時(shí)具有11位的尋址以及檢錯(cuò)能力。can總線協(xié)議規(guī)定一幀數(shù)據(jù)最多攜帶8個(gè)字節(jié)的數(shù)據(jù),這使得利用can總線協(xié)議傳送長(zhǎng)數(shù)據(jù)報(bào)文時(shí)必須將完整的用戶報(bào)文拆分成若干幀can協(xié)議幀,通常情況下,用戶數(shù)據(jù)報(bào)文都分為許多不同類型的數(shù)據(jù),以讓can總線上的通信結(jié)點(diǎn)區(qū)分所接受到的數(shù)據(jù)類型,現(xiàn)有的數(shù)據(jù)幀沒(méi)有幀序號(hào)的標(biāo)識(shí),出現(xiàn)混亂時(shí)難以區(qū)分。因此,如何區(qū)分用戶數(shù)據(jù)類型,以及如何使can協(xié)議幀的組織變得簡(jiǎn)單清晰、易于實(shí)現(xiàn),就成為了一個(gè)工程師不得不面對(duì)的問(wèn)題。
為了解決以上存在的問(wèn)題,人們一直在尋求一種理想的技術(shù)解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是針對(duì)現(xiàn)有技術(shù)的不足,從而提供一種設(shè)計(jì)科學(xué)、簡(jiǎn)單清晰、通用性高、穩(wěn)定性強(qiáng)、識(shí)別快速準(zhǔn)確的基于can2.0長(zhǎng)報(bào)文數(shù)據(jù)標(biāo)準(zhǔn)幀的組織算法。
為了實(shí)現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案是:一種基于can2.0長(zhǎng)報(bào)文數(shù)據(jù)標(biāo)準(zhǔn)幀的組織算法,標(biāo)準(zhǔn)幀的11位標(biāo)識(shí)符分為報(bào)文類型部分和幀序號(hào)部分,所述報(bào)文類型部分為高8位,所述幀序號(hào)部分為低3位。
基于上述,包括以下步驟:1)根據(jù)報(bào)文長(zhǎng)度計(jì)算需要發(fā)送的總幀數(shù);2)第一個(gè)標(biāo)準(zhǔn)幀記錄本次報(bào)文的總幀數(shù),且第一個(gè)標(biāo)準(zhǔn)幀的幀序號(hào)為0;3)從第二個(gè)標(biāo)準(zhǔn)幀開(kāi)始到最后一個(gè)標(biāo)準(zhǔn)幀結(jié)束,其標(biāo)準(zhǔn)幀的幀序號(hào)從1-7循環(huán)使用。
基于上述,總幀數(shù)的計(jì)算方法為n=((userdatalen+7)/8)+1其中n為總幀數(shù),userdatalen為報(bào)文字節(jié)數(shù)。
本發(fā)明相對(duì)現(xiàn)有技術(shù)具有突出的實(shí)質(zhì)性特點(diǎn)和顯著的進(jìn)步,具體的說(shuō),本發(fā)明采用can2.0標(biāo)準(zhǔn)幀格式,該格式含有11位標(biāo)識(shí)符,將11位標(biāo)識(shí)符分為兩部分,第一部分為高8位,用來(lái)存放用戶定義的數(shù)據(jù)報(bào)文的類型;第二部分為低3位,用來(lái)在發(fā)送can數(shù)據(jù)幀時(shí)存放幀序號(hào)用,接受can數(shù)據(jù)幀時(shí)用以根據(jù)幀序號(hào)先后順序組織用戶報(bào)文。其具有設(shè)計(jì)科學(xué)、簡(jiǎn)單清晰、通用性高、穩(wěn)定性強(qiáng)、識(shí)別快速準(zhǔn)確的優(yōu)點(diǎn)。
具體實(shí)施方式
下面通過(guò)具體實(shí)施方式,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
一種基于can2.0長(zhǎng)報(bào)文數(shù)據(jù)標(biāo)準(zhǔn)幀的組織算法,采用can2.0標(biāo)準(zhǔn)幀格式進(jìn)行數(shù)據(jù)傳輸,兼容can2.0a和can2.0b協(xié)議。將標(biāo)準(zhǔn)幀的11位標(biāo)識(shí)符分為報(bào)文類型部分和幀序號(hào)部分,所述報(bào)文類型部分用于區(qū)分報(bào)文數(shù)據(jù)的類型,所述報(bào)文類型部分為高8位,所述幀序號(hào)部分為低3位。當(dāng)接收端接收到can數(shù)據(jù)幀后,通過(guò)取得11位標(biāo)識(shí)符高8位解析出來(lái)報(bào)文類型,通過(guò)取得11位標(biāo)識(shí)符的低3位解析出來(lái)幀序號(hào)。根據(jù)報(bào)文類型和幀序號(hào)準(zhǔn)確判斷數(shù)據(jù)幀是否發(fā)生丟幀等混亂,如果發(fā)生混亂,則及時(shí)丟棄數(shù)據(jù),避免數(shù)據(jù)錯(cuò)誤。
優(yōu)選地,該組織算法包括以下步驟:1)根據(jù)報(bào)文長(zhǎng)度計(jì)算需要發(fā)送的總幀數(shù);2)第一個(gè)標(biāo)準(zhǔn)幀記錄本次報(bào)文的總幀數(shù),且第一個(gè)標(biāo)準(zhǔn)幀的幀序號(hào)為0;3)從第二個(gè)標(biāo)準(zhǔn)幀開(kāi)始到最后一個(gè)標(biāo)準(zhǔn)幀結(jié)束,其標(biāo)準(zhǔn)幀的幀序號(hào)從1-7循環(huán)使用。
當(dāng)接收端接收到can數(shù)據(jù)幀后,通過(guò)取得11位標(biāo)識(shí)符高8位解析出來(lái)用戶報(bào)文類型,通過(guò)取得11位標(biāo)識(shí)符的低3位解析出來(lái)幀序號(hào),如果幀序號(hào)為0,則該幀為第1幀,根據(jù)該第1幀的8字節(jié)內(nèi)容解析得出本次接收后續(xù)還有多少幀。接收過(guò)程中可通過(guò)判斷幀序號(hào)是否連續(xù)來(lái)識(shí)別出是否有丟幀。
優(yōu)選地,總幀數(shù)的計(jì)算方法為n=((userdatalen+7)/8)+1,其中n為總幀數(shù),userdatalen為報(bào)文字節(jié)數(shù)。
最后應(yīng)當(dāng)說(shuō)明的是:以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其限制;盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:依然可以對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行修改或者對(duì)部分技術(shù)特征進(jìn)行等同替換;而不脫離本發(fā)明技術(shù)方案的精神,其均應(yīng)涵蓋在本發(fā)明請(qǐng)求保護(hù)的技術(shù)方案范圍當(dāng)中。