本發(fā)明涉及數(shù)字信息的傳輸,電數(shù)字數(shù)據(jù)處理等,尤其涉及一種基于can總線的虛擬串行通信方法與系統(tǒng)。
背景技術(shù):
1、傳統(tǒng)串行通信接口,如uart、rs232、rs485、rs422等,工作在osi參考模型的物理層,僅支持單點通信。在串行通信技術(shù)中,還存在can(controller?area?network,控制器局域網(wǎng))總線通信技術(shù)。can總線是一種用于實時應(yīng)用的通信協(xié)議總線,工作在osi參考模型的物理層和數(shù)據(jù)鏈路層,它使用雙絞線來傳輸信號,是世界上應(yīng)用最廣泛的現(xiàn)場總線之一。相比于傳統(tǒng)串行通信接口,can總線擁有更高的傳輸速率,更遠的傳輸距離和更好的抗干擾能力,還可以支持多節(jié)點組網(wǎng)。然而,can總線協(xié)議工作在osi七層模型的物理層(phy)和數(shù)據(jù)鏈路層(mac),受限于標準can總線協(xié)議(例如,can1.0?a/b和can2.0?a/b)數(shù)據(jù)段最大8個字節(jié)的要求,很多產(chǎn)品直接基于can總線協(xié)議制定一套應(yīng)用層通信協(xié)議,開發(fā)和維護很不方便。需要注意的是,標準can協(xié)議有多個版本。can?1.0a和can?2.0b是第一代can協(xié)議,數(shù)據(jù)傳輸速率最高只有1?mbps,每個數(shù)據(jù)幀的最大數(shù)據(jù)長度是8個字節(jié),數(shù)據(jù)幀被分為11位標識符和四個附加的控制位。can?2.0a和can?2.0b是第二代can協(xié)議,數(shù)據(jù)傳輸速率最高可以達到1mbps,每個數(shù)據(jù)幀最大數(shù)據(jù)長度為8個字節(jié)。它們的主要區(qū)別在于數(shù)據(jù)幀的標識符的長度和結(jié)構(gòu),其中,can?2.0a使用了11位標識符,而can?2.0b使用了29位標識符。can?fd(flexible?data-rate,靈活數(shù)據(jù)速率)協(xié)議是2012年提出的一種高速can協(xié)議,支持數(shù)據(jù)傳輸速率高達5?mbps和64字節(jié)的數(shù)據(jù)長度。它使用類似can?2.0b?的標識符結(jié)構(gòu),并引入了一些新的功能,如位時間調(diào)制、抗干擾性能提高等。can?fd協(xié)議硬件實現(xiàn)成本相對較高,應(yīng)用場景沒有can1.0和can?2.0廣泛。另外,在支持串行通信接口的情況下,由于產(chǎn)品需求(如需要更好的速率、通信距離、抗干擾能力),將串行通信接口改為can總線接口或者直接增加can總線接口,需要基于can總線協(xié)議單獨制定一套應(yīng)用層通信協(xié)議,新增的應(yīng)用層通信協(xié)議與原有串行總線協(xié)議完全沒有關(guān)系,在兩套協(xié)議支持的功能一樣的情況下,需要開發(fā)和維護兩套協(xié)議,增加了工作量,降低了開發(fā)效率。
2、綜上所述,現(xiàn)有的串行通信技術(shù)存在can總線與傳統(tǒng)的串行通信接口不兼容,需要單獨制定一套應(yīng)用層通信協(xié)議,應(yīng)用層受到can基礎(chǔ)協(xié)議單包數(shù)據(jù)長度的限制,通信開發(fā)難度大,開發(fā)效率低等技術(shù)問題。
技術(shù)實現(xiàn)思路
1、針對上述現(xiàn)有技術(shù)存在的不足,本發(fā)明提供一種基于can總線的虛擬串行通信方法與系統(tǒng),以避免單獨制定一套應(yīng)用層通信協(xié)議,使得應(yīng)用層可以擺脫can基礎(chǔ)協(xié)議單包數(shù)據(jù)長度的限制,自由傳輸應(yīng)用層數(shù)據(jù),實現(xiàn)與傳統(tǒng)串口通信應(yīng)用層協(xié)議的無縫對接,降低開發(fā)難度,提升開發(fā)效率。
2、第一方面,本發(fā)明提供的基于can總線的虛擬串行通信方法,包括以下步驟:
3、在數(shù)據(jù)的發(fā)送方配置虛擬的發(fā)送方can適配層,并在數(shù)據(jù)的接收方配置虛擬的接收方can適配層;
4、當(dāng)所述數(shù)據(jù)的發(fā)送方通過發(fā)送方應(yīng)用層向所述數(shù)據(jù)的接收方發(fā)送數(shù)據(jù)時,所述發(fā)送方can適配層對所述發(fā)送方應(yīng)用層下發(fā)的應(yīng)用層數(shù)據(jù)包進行拆分處理,以得到若干個子數(shù)據(jù)包下發(fā)到can協(xié)議層,所述can協(xié)議層將所述若干個子數(shù)據(jù)包傳輸給所述接收方can適配層;
5、當(dāng)所述接收方can適配層接收到所述若干個子數(shù)據(jù)包時,所述接收方can適配層對接收到的所述若干個子數(shù)據(jù)包進行組包,以得到完整的數(shù)據(jù)包后上報給所述數(shù)據(jù)的接收方的接收方應(yīng)用層。
6、進一步,所述接收方can適配層對接收到的所述若干個子數(shù)據(jù)包進行組包,包括:所述接收方can適配層對所述若干個子數(shù)據(jù)包進行完整性判斷,在判定所述若干個子數(shù)據(jù)包完整時,對接收到的所述若干個子數(shù)據(jù)包進行組包,以得到所述完整的數(shù)據(jù)包。
7、進一步,所述接收方can適配層對所述完整的數(shù)據(jù)包進行檢驗,并將通過校驗的所述完整的數(shù)據(jù)包上報給所述數(shù)據(jù)的接收方的接收方應(yīng)用層。
8、進一步,所述發(fā)送方can適配層和所述接收方can適配層對多路數(shù)據(jù)的傳輸進行多路會話并發(fā)管理。
9、進一步,每個所述子數(shù)據(jù)包具備控制信息和數(shù)據(jù)內(nèi)容,所述控制信息和所述數(shù)據(jù)內(nèi)容構(gòu)成控制+數(shù)據(jù)幀。
10、進一步,所述應(yīng)用層數(shù)據(jù)包直接復(fù)用傳統(tǒng)串行接口應(yīng)用層數(shù)據(jù)包,所述傳統(tǒng)串行接口包括uart串行接口、rs232串行接口、rs485串行接口或rs422串行接口。其中,所述傳統(tǒng)串行接口不限于uart串行接口、rs232串行接口、rs485串行接口、rs422串行接口等串行接口。
11、進一步,所述發(fā)送方can適配層和所述接收方can適配層采用相同的can適配層協(xié)議幀結(jié)構(gòu)。
12、進一步,所述can適配層協(xié)議幀結(jié)構(gòu)包括can總線上的消息標識符can?id和can幀中的包數(shù)據(jù)承載體data。
13、進一步,所述can總線上的消息標識符can?id包括發(fā)送方設(shè)備地址srcaddr、接收方設(shè)備地址dstaddr、幀類型標識packettype、設(shè)備間的會話id標識sessionid以及具體包信息承載體packetinfo。
14、第二方面,本發(fā)明提供一種基于can總線的虛擬串行通信系統(tǒng),包括:連接通信的發(fā)送方應(yīng)用層、發(fā)送方can適配層、接收方can適配層、can協(xié)議層以及接收方應(yīng)用層;所述基于can總線的虛擬串行通信系統(tǒng)運行上述任一項所述的基于can總線的虛擬串行通信方法。
15、本發(fā)明與現(xiàn)有技術(shù)相比,其有益效果如下:
16、本發(fā)明提供一種基于can總線的虛擬串行通信方法與系統(tǒng),通過在數(shù)據(jù)的發(fā)送方配置虛擬的發(fā)送方can適配層,并在數(shù)據(jù)的接收方配置虛擬的接收方can適配層,當(dāng)所述數(shù)據(jù)的發(fā)送方通過發(fā)送方應(yīng)用層向所述數(shù)據(jù)的接收方發(fā)送數(shù)據(jù)時,所述發(fā)送方can適配層對所述發(fā)送方應(yīng)用層下發(fā)的應(yīng)用層數(shù)據(jù)包進行拆分處理,以得到若干個子數(shù)據(jù)包下發(fā)到can協(xié)議層,所述can協(xié)議層將所述若干個子數(shù)據(jù)包傳輸給所述接收方can適配層,當(dāng)所述接收方can適配層接收到所述若干個子數(shù)據(jù)包時,所述接收方can適配層對接收到的所述若干個子數(shù)據(jù)包進行組包,以得到完整的數(shù)據(jù)包后上報給所述數(shù)據(jù)的接收方的接收方應(yīng)用層,從而避免單獨制定一套應(yīng)用層通信協(xié)議,使得應(yīng)用層可以擺脫can基礎(chǔ)協(xié)議單包數(shù)據(jù)長度的限制,自由傳輸應(yīng)用層數(shù)據(jù),實現(xiàn)與傳統(tǒng)串口通信應(yīng)用層協(xié)議的無縫對接,降低通信開發(fā)難度,提升開發(fā)效率。另外,對比于傳統(tǒng)串行通信單播方案,基于can總線的虛擬串行通信方法可以有效利用can的總線特性,實現(xiàn)組網(wǎng),組播以及廣播通信,提高網(wǎng)絡(luò)的應(yīng)用靈活性以及通信效率。
1.一種基于can總線的虛擬串行通信方法,其特征在于,包括:
2.如權(quán)利要求1所述的基于can總線的虛擬串行通信方法,其特征在于,所述接收方can適配層對接收到的所述若干個子數(shù)據(jù)包進行組包,包括:所述接收方can適配層對所述若干個子數(shù)據(jù)包進行完整性判斷,在判定所述若干個子數(shù)據(jù)包完整時,對接收到的所述若干個子數(shù)據(jù)包進行組包,以得到所述完整的數(shù)據(jù)包。
3.如權(quán)利要求2所述的基于can總線的虛擬串行通信方法,其特征在于,所述接收方can適配層對所述完整的數(shù)據(jù)包進行檢驗,并將通過校驗的所述完整的數(shù)據(jù)包上報給所述數(shù)據(jù)的接收方的接收方應(yīng)用層。
4.如權(quán)利要求1所述的基于can總線的虛擬串行通信方法,其特征在于,所述發(fā)送方can適配層和所述接收方can適配層對多路數(shù)據(jù)的傳輸進行多路會話并發(fā)管理。
5.如權(quán)利要求1所述的基于can總線的虛擬串行通信方法,其特征在于,每個所述子數(shù)據(jù)包具備控制信息和數(shù)據(jù)內(nèi)容,所述控制信息和所述數(shù)據(jù)內(nèi)容構(gòu)成控制+數(shù)據(jù)幀。
6.如權(quán)利要求1所述的基于can總線的虛擬串行通信方法,其特征在于,所述應(yīng)用層數(shù)據(jù)包直接復(fù)用傳統(tǒng)串行接口應(yīng)用層數(shù)據(jù)包,所述傳統(tǒng)串行接口包括uart串行接口、rs232串行接口、rs485串行接口或rs422串行接口。
7.如權(quán)利要求1-6任一項所述的基于can總線的虛擬串行通信方法,其特征在于,所述發(fā)送方can適配層和所述接收方can適配層采用相同的can適配層協(xié)議幀結(jié)構(gòu)。
8.如權(quán)利要求7所述的基于can總線的虛擬串行通信方法,其特征在于,所述can適配層協(xié)議幀結(jié)構(gòu)包括can總線上的消息標識符can?id和can幀中的包數(shù)據(jù)承載體data。
9.如權(quán)利要求8所述的基于can總線的虛擬串行通信方法,其特征在于,所述can總線上的消息標識符can?id包括發(fā)送方設(shè)備地址srcaddr、接收方設(shè)備地址dstaddr、幀類型標識packettype、設(shè)備間的會話id標識sessionid以及具體包信息承載體packetinfo。
10.一種基于can總線的虛擬串行通信系統(tǒng),其特征在于,包括:連接通信的發(fā)送方應(yīng)用層、發(fā)送方can適配層、接收方can適配層、can協(xié)議層以及接收方應(yīng)用層;所述基于can總線的虛擬串行通信系統(tǒng)運行如權(quán)利要求1-9任一項所述的基于can總線的虛擬串行通信方法。