專利名稱:一種基于 can 技術(shù)的汽車儀表內(nèi)部數(shù)據(jù)傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于CAN技術(shù)的汽車儀表內(nèi)部數(shù)據(jù)傳輸方法。
背景技術(shù):
目前,從通訊角度講,我國的汽車儀表系統(tǒng)存在著幾種類型不帶任何通訊功能的低檔儀表系統(tǒng)、帶有簡單通訊功能的儀表系統(tǒng)以及帶有復雜通訊功能的儀表系統(tǒng)。
在低檔儀表系統(tǒng)中,汽車各部分的運行狀態(tài),是由各部分的傳感器將各種非電量信號,如溫度、壓力等信號,轉(zhuǎn)化成電壓、電流或脈沖等模擬電信號。由于模擬信號自身的傳輸特性,使得儀表對于車身各個部分的狀態(tài)的分析存在著計算速度差、精度低的缺點。而且信號的傳輸采用一對一方式,所以當需要傳輸信號的車身部件比較多時,相應的傳輸通道也相應增加,這不僅增加了生產(chǎn)成本,而且也增加了信號間相互干擾的風險。
還有一種儀表系統(tǒng),它遵守低端通信協(xié)議,如K-line、LIN等。遵守這些協(xié)議的儀表雖然具備了通訊功能,但這種能力是局部的。例如利用LIN協(xié)議可以實現(xiàn)儀表與車身其他部分的通訊,但此協(xié)議只規(guī)定了物理層的信號參數(shù),而沒有確定對報文的處理機制。其具體的消息處理機制是由汽車生產(chǎn)廠家與其產(chǎn)品供應商內(nèi)部確定。而其他廠商的產(chǎn)品無法與之匹配,即不具有開放性。
CAN標準是一種串行,多主的開放性總線協(xié)議。遵守該協(xié)議的部件(在協(xié)議中稱為節(jié)點)之間可以實現(xiàn)遠距離(最長可達10km)高速通訊(最快可達1Mbit/s);而且由于協(xié)議自身的規(guī)定保證數(shù)據(jù)能夠準確在兩節(jié)點的對等協(xié)議層之間傳輸。因此,利用CAN總線可以將所有遵循協(xié)議的節(jié)點利用一條或兩條傳輸線連接起來,而且節(jié)點間可以實現(xiàn)實時控制。由于總線上報文的數(shù)據(jù)域是以字節(jié)為單位進行傳輸?shù)?,如果?jié)點的通訊層直接對字節(jié)進行處理,那么數(shù)據(jù)傳輸效率會很低,會額外增加軟件開銷,造成汽車儀表成本提升。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于CAN技術(shù)的汽車儀表內(nèi)部數(shù)據(jù)傳輸方法,減輕節(jié)點通訊層對數(shù)據(jù)重新組織以及分解自身需要發(fā)送信息負擔,提高傳輸效率。
汽車各部件為總線上的節(jié)點,汽車的儀表也為總線上的一個節(jié)點。每個汽車部件節(jié)點通過自身的CAN總線控制器,用發(fā)送器把儀表所需的各種性能參數(shù)數(shù)據(jù),發(fā)送到總線上。再經(jīng)過總線傳遞到儀表處,儀表通過接收器接收數(shù)據(jù),儀表每次正確收到數(shù)據(jù)后都要利用儀表節(jié)點的發(fā)送器通過總線向其它部件發(fā)送答應信號。當某個部件節(jié)點通過接收器收到應答信號后表示它所發(fā)送的數(shù)據(jù)被成功接收,否則它要重新發(fā)送數(shù)據(jù)。
本發(fā)明在儀表系統(tǒng)的內(nèi)存區(qū)開辟了一個存儲區(qū)。這個區(qū)域在邏輯上位于底層寄存器與通訊層程序之間,起到一個接口的作用,即寄存器與節(jié)點通訊層之間是通過內(nèi)存的存儲區(qū)進行數(shù)據(jù)交換的。
首先,底層寄存器與內(nèi)存存儲區(qū)之間是以字節(jié)為傳輸對象;內(nèi)存存儲區(qū)與通訊層程序之間以結(jié)構(gòu)體為操作對象。而底層寄存器與節(jié)點通訊層程序之間不進行直接地數(shù)據(jù)傳輸。程序定義一個聯(lián)合體。在聯(lián)合體內(nèi)定義了一個與其它節(jié)點相對應的結(jié)構(gòu)體。結(jié)構(gòu)體內(nèi)部的不同成員分別描述了這個節(jié)點的不同屬性。
在聯(lián)合體內(nèi)又定義一個和結(jié)構(gòu)體大小相同的一維字符型數(shù)組。由于在聯(lián)合體內(nèi)部的所有字節(jié)共享相同的內(nèi)存段,所以數(shù)組內(nèi)的一個或若干個元素組成了結(jié)構(gòu)體內(nèi)某個成員。
當數(shù)據(jù)從總線進入底層寄存器時是以字節(jié)為單位進行存儲的,程序?qū)?shù)據(jù)從寄存器取出,按一定的字節(jié)順序放入內(nèi)存存儲區(qū)中的數(shù)組后,反映節(jié)點的字節(jié)數(shù)據(jù)構(gòu)成了能夠被通訊層程序方便使用的結(jié)構(gòu)體。然后這些結(jié)構(gòu)體被傳送到儀表節(jié)點的通訊層中。
同樣,當儀表節(jié)點的通訊層要發(fā)送信息時,它將信息以結(jié)構(gòu)體形式存入內(nèi)存存儲區(qū)中,底層程序?qū)⒔Y(jié)構(gòu)體中成員按一般數(shù)組中的元素一個一個地放入底層寄存器中。隨后,數(shù)據(jù)以字節(jié)的形式在總線上傳輸,被相應節(jié)點接收。
本發(fā)明的有益效果為,大大地減輕了通訊層對數(shù)據(jù)重新組織以及分解自身需要發(fā)送信息的負擔。同時,程序的可讀性以及層次性大大增強,這為未來程序的改進提供了一個安全和方便的環(huán)境與規(guī)范。另外,通訊層與應用層數(shù)據(jù)兩者分屬兩個模塊,之間不得互相函數(shù)調(diào)用,不得共用變量,只能通過中間函數(shù)傳遞信息,增加了系統(tǒng)可靠性,同時方便測試。
圖1是汽車內(nèi)部總線結(jié)構(gòu)2是節(jié)點內(nèi)部數(shù)據(jù)傳輸結(jié)構(gòu)3是數(shù)據(jù)傳輸邏輯結(jié)構(gòu)圖具體實施方式
如圖1所示,汽車的各部件(節(jié)點),如發(fā)動機、油箱、車燈、儀表等,都是汽車CAN總線上的一個節(jié)點,它們被連接到總線上。如圖2所示,每個節(jié)點通過自身的CAN總線控制器和發(fā)送器把儀表所需的各種性能參數(shù)數(shù)據(jù),發(fā)送到總線上。再經(jīng)過總線傳輸?shù)絻x表處,儀表通過接收器接收數(shù)據(jù),儀表每次正確收到數(shù)據(jù)后都要利用儀表節(jié)點的發(fā)送器通過總線向相應節(jié)點發(fā)送答應信號。當這個節(jié)點通過接收器收到應答信號后表示數(shù)據(jù)被成功接收,否則它要重新發(fā)送數(shù)據(jù)。
例如,如圖3所示,當發(fā)動機節(jié)點要發(fā)送發(fā)動機轉(zhuǎn)速信息給儀表時,在經(jīng)總線仲裁成功后,通過發(fā)送器將信息發(fā)送至總線。
當轉(zhuǎn)速信息從總線進入儀表的底層寄存器時,是以字節(jié)為單位進行存儲的,程序?qū)?shù)據(jù)從寄存器取出,按一定的字節(jié)順序放入內(nèi)存存儲區(qū)。在內(nèi)存存儲區(qū)中,程序定義一個聯(lián)合體。在聯(lián)合體內(nèi)定義了一個與轉(zhuǎn)速信息相關(guān)的結(jié)構(gòu)體。轉(zhuǎn)速信息是結(jié)構(gòu)體內(nèi)的一個成員。在聯(lián)合體內(nèi)又定義一個和結(jié)構(gòu)體大小相同的數(shù)組。由于在聯(lián)合體內(nèi)部的所有成員共享相同的內(nèi)存段,所以數(shù)組內(nèi)的一個或若干個字符組成了結(jié)構(gòu)體內(nèi)某個成員。就這樣,反映轉(zhuǎn)速信息的字節(jié)數(shù)據(jù)構(gòu)成了能夠被通訊層程序方便使用的結(jié)構(gòu)體的一部分。含有轉(zhuǎn)速信息的結(jié)構(gòu)體被傳送至儀表通訊層。
最后,汽車儀表把從CAN總線傳輸來的數(shù)據(jù)經(jīng)過處理后,在儀表上顯示出來。通過儀表指針,LCD或LED等,駕駛者可以得知一系列的汽車狀態(tài)信息。當發(fā)動機轉(zhuǎn)速發(fā)生變化時,利用相同的前述方法向儀表發(fā)送更改數(shù)據(jù)。
汽車上其他部件也是通過前述相同的數(shù)據(jù)傳輸方法把自身的狀態(tài)信息傳遞到儀表上。
權(quán)利要求
1.一種基于CAN技術(shù)的汽車儀表內(nèi)部數(shù)據(jù)傳輸方法,包括節(jié)點接收數(shù)據(jù)步驟和節(jié)點發(fā)送數(shù)據(jù)步驟,其特征在于采用下述步驟節(jié)點接收數(shù)據(jù)時,數(shù)據(jù)以字節(jié)為單位從總線存入底層寄存器中,數(shù)據(jù)從底層寄存器取出,按字節(jié)順序放入內(nèi)存存儲區(qū)的數(shù)組中,形成結(jié)構(gòu)體,結(jié)構(gòu)體被傳送至節(jié)點的通訊層;節(jié)點發(fā)送數(shù)據(jù)時,節(jié)點通訊層發(fā)出數(shù)據(jù),以結(jié)構(gòu)體為單位的數(shù)據(jù)先存入內(nèi)存存儲區(qū),結(jié)構(gòu)體中數(shù)據(jù)按數(shù)組中的字節(jié)放入底層寄存器中,數(shù)據(jù)以字節(jié)形式從寄存器中進入總線。
2.如權(quán)利要求1所述的基于CAN技術(shù)的汽車儀表內(nèi)部數(shù)據(jù)傳輸方法,其特征在于,底層寄存器和內(nèi)存存儲之區(qū)間的數(shù)據(jù)轉(zhuǎn)換當中,先定義一個聯(lián)合體;在聯(lián)合體內(nèi)定義了一個與物理實體相對應的結(jié)構(gòu)體,結(jié)構(gòu)體內(nèi)部的字節(jié)分別描述物理實體的不同屬性;在聯(lián)合體內(nèi)又定義一個和結(jié)構(gòu)體大小相同的數(shù)組,這個數(shù)組與結(jié)構(gòu)體之間為字節(jié)對字節(jié)的物理關(guān)系。
全文摘要
本發(fā)明涉及一種基于CAN技術(shù)的汽車儀表內(nèi)部數(shù)據(jù)傳輸方法。節(jié)點接收數(shù)據(jù)時,數(shù)據(jù)以字節(jié)為單位從總線存入底層寄存器中,數(shù)據(jù)從底層寄存器取出,按字節(jié)順序放入內(nèi)存存儲區(qū)的數(shù)組中,形成結(jié)構(gòu)體,結(jié)構(gòu)體被傳送至節(jié)點的通訊層;節(jié)點發(fā)送數(shù)據(jù)時,節(jié)點通訊層發(fā)出數(shù)據(jù),以結(jié)構(gòu)體為單位的數(shù)據(jù)先存入內(nèi)存存儲區(qū),結(jié)構(gòu)體中數(shù)據(jù)按數(shù)組中的字節(jié)放入底層寄存器中,數(shù)據(jù)以字節(jié)形式從寄存器中進入總線。本發(fā)明大大地減輕了通訊層對數(shù)據(jù)重新組織以及分解自身需要發(fā)送信息的負擔。同時,程序的可讀性以及層次性大大增強,這為未來程序的改進提供了一個安全和方便的環(huán)境與規(guī)范。
文檔編號H04L12/40GK1848790SQ20051002509
公開日2006年10月18日 申請日期2005年4月14日 優(yōu)先權(quán)日2005年4月14日
發(fā)明者楊毅, 施麟范, 劉志強, 李巍 申請人:上海德科電子儀表有限公司