專利名稱:基于can2.0b的火災(zāi)報(bào)警應(yīng)用層數(shù)據(jù)傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于CAN2.0B現(xiàn)場(chǎng)總線應(yīng)用協(xié)議的數(shù)據(jù)傳輸方法,特別是一種應(yīng)用在火災(zāi)報(bào)警控制領(lǐng)域中的應(yīng)用層數(shù)據(jù)傳輸方法。
背景技術(shù):
隨著大型群體建筑越來越多地出現(xiàn),在地理空間火警探測(cè)、消防設(shè)備聯(lián)動(dòng)控制等方面對(duì)自動(dòng)火災(zāi)報(bào)警系統(tǒng)提出了越來越高的要求。大型建筑群使得地理描述信息變大,火災(zāi)探測(cè)點(diǎn)變多,設(shè)備聯(lián)動(dòng)控制變復(fù)雜。同時(shí),由于通訊距離變得越來越遠(yuǎn),使得通訊的延遲和環(huán)境的干擾加大,造成信息傳輸?shù)膶?shí)時(shí)性、準(zhǔn)確性與可靠性降低。這些都需要報(bào)警主機(jī)能夠驅(qū)動(dòng)和管理更多的驅(qū)動(dòng)回路板,報(bào)警主機(jī)和報(bào)警主機(jī)之間聯(lián)網(wǎng)在快速準(zhǔn)確可靠傳輸?shù)那疤嵯聛頋M足通訊信息量的增加和通訊距離的增加。
傳統(tǒng)的做法是使用R8485通訊方式實(shí)現(xiàn)通訊主機(jī)與通訊主機(jī),通訊主機(jī)與驅(qū)動(dòng)回路板之間的連接。RS-485標(biāo)準(zhǔn)是電子工業(yè)協(xié)會(huì)EIA于1983年制訂并發(fā)布的。它只規(guī)定了平衡驅(qū)動(dòng)器和接收器的電特性而沒有規(guī)定接插件傳輸電纜和應(yīng)用層通信協(xié)議,同時(shí),在RS-485總線上只能有一個(gè)節(jié)點(diǎn)作為主機(jī),其他節(jié)點(diǎn)只能作為從機(jī),無優(yōu)先級(jí)發(fā)送。這些本質(zhì)因素導(dǎo)致RS-485協(xié)議存在總線效率低,系統(tǒng)的實(shí)時(shí)性差,通訊的可靠性低,后期維護(hù)成本高,網(wǎng)絡(luò)工程調(diào)試復(fù)雜,傳輸距離不理想,單總線可掛接的節(jié)點(diǎn)少,應(yīng)用不靈活等缺點(diǎn)。
控制器局域網(wǎng)(Controller area network簡(jiǎn)稱CAN)是德國(guó)Bosch公司于1983年為汽車應(yīng)用而開發(fā)的,能有效支持分布式控制和實(shí)時(shí)控制的串行通訊網(wǎng)絡(luò),1991年,該公司推出CAN2.0標(biāo)準(zhǔn)。1993年11月,國(guó)際標(biāo)準(zhǔn)化組織ISO正式頒布了控制器局域網(wǎng)CAN國(guó)際標(biāo)準(zhǔn)(ISO11898)。與其他總線相比有如下特點(diǎn)①.它是一種多主總線,即每個(gè)節(jié)點(diǎn)機(jī)均可成為主機(jī),且節(jié)點(diǎn)機(jī)之間也可進(jìn)行通信;②.通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維,通信速率可達(dá)1Mbps;③.CAN總線通信接口中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對(duì)通信數(shù)據(jù)的整幀處理,包括位填充、數(shù)據(jù)塊編碼、循環(huán)冗余校驗(yàn)、優(yōu)先級(jí)判別等項(xiàng)工作;④.CAN協(xié)議對(duì)通信數(shù)據(jù)塊進(jìn)行編碼。數(shù)據(jù)塊的標(biāo)識(shí)碼可由11位(CAN2.0A)或29位(CAN2.0B)二進(jìn)制數(shù)組成,因此可以定義211或229個(gè)不同的數(shù)據(jù)塊;⑤.數(shù)據(jù)段長(zhǎng)度最多為8個(gè)字節(jié);⑥.CAN協(xié)議采用CRC檢驗(yàn)并可提供相應(yīng)的錯(cuò)誤處理功能,保證了數(shù)據(jù)通信的可靠性。
CAN技術(shù)規(guī)范(2.0B)將每幀的數(shù)據(jù)傳輸分層(數(shù)據(jù)鏈路層[邏輯鏈LLC子層、媒體訪問控制MAC子層]和物理層)處理。LLC子層主要功能為數(shù)據(jù)傳送和遠(yuǎn)程數(shù)據(jù)請(qǐng)求提供服務(wù),確認(rèn)由LLC子層接收的報(bào)文實(shí)際已經(jīng)被接收和為恢復(fù)管理、通知超載提供信息。MAC子層主要功能保證傳送規(guī)則(控制幀結(jié)構(gòu)、執(zhí)行仲裁、錯(cuò)誤檢測(cè)、出錯(cuò)標(biāo)定、故障界定),它由一個(gè)稱之為故障界定的一個(gè)管理實(shí)體監(jiān)控。數(shù)據(jù)鏈路層由稱之為CAN協(xié)議控制器的專用IC(如MCP2510,SJA1000、82C200等)或帶有CAN協(xié)議控制邏輯單元的MCU(如8XC592)來完成;物理層由稱之為CAN驅(qū)動(dòng)器的專用IC(如82C250)來完成。
由于CAN2.0B標(biāo)準(zhǔn)規(guī)定一個(gè)數(shù)據(jù)幀最多傳輸8個(gè)字節(jié),而在當(dāng)前大型火災(zāi)報(bào)警系統(tǒng)中報(bào)警和聯(lián)動(dòng)信息的長(zhǎng)度遠(yuǎn)遠(yuǎn)大于8字節(jié);同時(shí),節(jié)點(diǎn)的在線檢測(cè),系統(tǒng)時(shí)鐘同步,狀態(tài)同步等信息在火災(zāi)報(bào)警系統(tǒng)中也是必須的。因此,單靠CAN2.0B標(biāo)準(zhǔn),無法適應(yīng)當(dāng)前火災(zāi)報(bào)警系統(tǒng)的需要,這就需要應(yīng)用層協(xié)議來保證這些數(shù)據(jù)信息快速可靠傳輸。
發(fā)明內(nèi)容本發(fā)明的目的就是為了解決以上問題,提供一種能適用于火災(zāi)報(bào)警系統(tǒng),基于CAN2.0B的火災(zāi)報(bào)警應(yīng)用層數(shù)據(jù)傳輸方法。
為實(shí)現(xiàn)上述目的,本發(fā)明提出一種基于CAN2.0B的火災(zāi)報(bào)警應(yīng)用層數(shù)據(jù)傳輸方法,包括如下步驟A、計(jì)算本次自定義信息包或整個(gè)文件的長(zhǎng)度,根據(jù)數(shù)據(jù)幀最大允許長(zhǎng)度、信息層數(shù)據(jù)包最大允許長(zhǎng)度、本次傳輸?shù)臄?shù)據(jù)長(zhǎng)度,構(gòu)建信息層數(shù)據(jù)包;B、構(gòu)建標(biāo)識(shí)符,將數(shù)據(jù)幀ID標(biāo)識(shí)符的29bit分成至少四個(gè)區(qū)域,分別為信息包類型域、發(fā)送源地址域、接收目的地址域、信息包數(shù)據(jù)幀號(hào)域;C、確定本次數(shù)據(jù)包的發(fā)送方式;以每個(gè)不大于8字節(jié)的數(shù)據(jù)幀為單位根據(jù)上述標(biāo)識(shí)符中的接收目的地址域向其提供的目的地址發(fā)送信息層數(shù)據(jù)包;D、接收節(jié)點(diǎn)接收到完整的信息包后,在指定時(shí)間內(nèi),根據(jù)標(biāo)識(shí)符中的發(fā)送源地址域向發(fā)送源地址發(fā)送響應(yīng)信號(hào),確認(rèn)數(shù)據(jù)已接收,本次發(fā)送成功,進(jìn)入下一個(gè)信息包發(fā)送狀態(tài)。
上述的傳輸方法中,步驟C)中發(fā)送方式信息被構(gòu)建在首個(gè)信息層數(shù)據(jù)包的信息數(shù)據(jù)包類別中,包括單幀發(fā)送和多幀發(fā)送方式。所述單幀發(fā)送方式的步驟判斷首個(gè)信息層數(shù)據(jù)包的信息包類別,當(dāng)該值表明本次發(fā)送為單幀數(shù)據(jù)信息包時(shí),根據(jù)上述標(biāo)識(shí)符中的接收目的地址域向其提供的目的地址發(fā)送至少標(biāo)示有信息包時(shí)間戳、用戶自定義數(shù)據(jù)的信息層數(shù)據(jù)包。所述多幀發(fā)送方式的步驟為判斷首個(gè)信息層數(shù)據(jù)包的信息包類別,當(dāng)該值表明當(dāng)前數(shù)據(jù)包需要多幀發(fā)送時(shí),則進(jìn)一步判斷當(dāng)前信息包長(zhǎng)度等信息;將信息層數(shù)據(jù)包分幀、分包發(fā)送。在多幀發(fā)送方式中,當(dāng)整個(gè)文件的長(zhǎng)度大于一個(gè)信息層數(shù)據(jù)包最大允許長(zhǎng)度時(shí),在信息包包號(hào)域標(biāo)識(shí)為零的首個(gè)信息層數(shù)據(jù)包中還標(biāo)示有整個(gè)數(shù)據(jù)文件長(zhǎng)度信息和當(dāng)前信息包包號(hào)信息;發(fā)送時(shí)將整個(gè)文件分成多個(gè)信息層數(shù)據(jù)包、每個(gè)數(shù)據(jù)包分成多幀數(shù)據(jù)幀傳輸。
上述的傳輸方法,還包括超時(shí)重發(fā)機(jī)制,即在指定時(shí)間內(nèi)發(fā)送節(jié)點(diǎn)未接收到接收節(jié)點(diǎn)發(fā)送的確認(rèn)接收信息時(shí),發(fā)送節(jié)點(diǎn)自動(dòng)啟動(dòng)重發(fā),直至發(fā)送節(jié)點(diǎn)接收到接收節(jié)點(diǎn)發(fā)送的確認(rèn)接收信息,或重發(fā)次數(shù)已達(dá)到預(yù)定的最大重發(fā)次數(shù)。所述重發(fā)機(jī)制還包括判斷重復(fù)包的方法接收節(jié)點(diǎn)判斷發(fā)送節(jié)點(diǎn)發(fā)送來的信息包標(biāo)示的信息包類型域和時(shí)間戳,當(dāng)二者與已收到的某個(gè)信息包中的信息包類型域、時(shí)間戳分別相同時(shí),則認(rèn)為本次接收到的信息是重復(fù)包,丟棄該重復(fù)包。
上述的傳輸方法,還包括節(jié)點(diǎn)故障檢測(cè)機(jī)制總線上每個(gè)節(jié)點(diǎn)在其空閑時(shí),定期向與之有聯(lián)系的節(jié)點(diǎn)發(fā)送在線信號(hào),每個(gè)節(jié)點(diǎn)都有一組與之相聯(lián)系的節(jié)點(diǎn)在線計(jì)數(shù)器。每個(gè)計(jì)數(shù)器在上電和恢復(fù)的時(shí)候設(shè)置初值,當(dāng)收到某個(gè)節(jié)點(diǎn)的在線信號(hào)數(shù)據(jù)包時(shí),計(jì)數(shù)器執(zhí)行一次正向運(yùn)算,直至某個(gè)預(yù)定值;同時(shí)周期性地對(duì)計(jì)數(shù)器執(zhí)行一次與前述正向運(yùn)算方向相反的反向運(yùn)算,當(dāng)計(jì)數(shù)器的值為0時(shí),則報(bào)出該節(jié)點(diǎn)通訊故障。節(jié)點(diǎn)故障檢測(cè)機(jī)制的優(yōu)選方案是發(fā)送在線信號(hào)的時(shí)間間隔小于周期性減計(jì)數(shù)器的時(shí)間間隔,計(jì)數(shù)器在上電和恢復(fù)的時(shí)候設(shè)置非零初值,所述節(jié)點(diǎn)計(jì)數(shù)器收到某個(gè)節(jié)點(diǎn)的在線信號(hào)數(shù)據(jù)包時(shí),執(zhí)行一次正向運(yùn)算加1,直至一個(gè)預(yù)定的最大值。同時(shí)周期性地對(duì)每個(gè)節(jié)點(diǎn)在線計(jì)數(shù)器執(zhí)行一次反向運(yùn)算減1,當(dāng)計(jì)數(shù)器的值減到0時(shí),報(bào)出該節(jié)點(diǎn)通訊故障。
上述的傳輸方法,還包括緩沖區(qū)重觸發(fā)機(jī)制對(duì)于在所述超時(shí)重發(fā)機(jī)制中發(fā)送失敗的信息包,發(fā)送節(jié)點(diǎn)開辟一個(gè)新的緩沖區(qū)保存這些信息包,當(dāng)該節(jié)點(diǎn)處于發(fā)送空閑狀態(tài)時(shí),該節(jié)點(diǎn)嘗試重發(fā)這些信息包。
由于采用了以上的方案,可以根據(jù)傳輸信息的長(zhǎng)度來構(gòu)建信息層數(shù)據(jù)包,同時(shí)構(gòu)建的數(shù)據(jù)幀標(biāo)識(shí)符包括信息包類型域、發(fā)送源地址域、接收目的地址域和信息包數(shù)據(jù)幀號(hào)域,便于定義傳輸信息的優(yōu)先級(jí)別,克服CAN協(xié)議中沒有包含發(fā)送源地址和目的地址域的不足,可以適用于火災(zāi)報(bào)警控制系統(tǒng);接收節(jié)點(diǎn)的應(yīng)答機(jī)制保證數(shù)據(jù)傳輸?shù)目煽啃浴?br>
其次,采用多幀傳輸、或整個(gè)文件多個(gè)信息層數(shù)據(jù)包、多幀傳輸,滿足系統(tǒng)中長(zhǎng)度超過8個(gè)字節(jié)的信息層數(shù)據(jù)包、長(zhǎng)度超過單個(gè)信息層數(shù)據(jù)包最大允許長(zhǎng)度的文件的傳輸。在數(shù)據(jù)傳輸中還采用超時(shí)重發(fā)機(jī)制、節(jié)點(diǎn)故障檢測(cè)機(jī)制、緩沖區(qū)重觸發(fā)機(jī)制等,可以進(jìn)一步保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性、有效性。
圖1為本發(fā)明的一種實(shí)施方法的CAN信息包在發(fā)送節(jié)點(diǎn)的發(fā)送流程圖;圖2為本發(fā)明的一種實(shí)施方法的CAN信息包在接收節(jié)點(diǎn)的接收流程圖;圖3為采用本發(fā)明方法的火災(zāi)報(bào)警系統(tǒng)中的聯(lián)網(wǎng)示意圖;圖4為應(yīng)用本發(fā)明方法的火災(zāi)報(bào)警系統(tǒng)中回路驅(qū)動(dòng)板與報(bào)警主機(jī)之間的數(shù)據(jù)結(jié)構(gòu)示意圖;圖5為本發(fā)明方法的火災(zāi)報(bào)警系統(tǒng)報(bào)警主機(jī)之間的數(shù)據(jù)結(jié)構(gòu)示意圖。
具體實(shí)施方式下面通過具體的實(shí)施例并結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述。
1.應(yīng)用層協(xié)議數(shù)據(jù)包格式的構(gòu)建CAN2.0技術(shù)規(guī)范中將數(shù)據(jù)幀ID分為標(biāo)準(zhǔn)(A)和擴(kuò)展(B)兩種方式。其中標(biāo)準(zhǔn)方式包括11Bit位,擴(kuò)展方式包括29Bit位??偩€發(fā)送仲裁由ID標(biāo)識(shí)符的組成相關(guān),ID的數(shù)值越小,則該數(shù)據(jù)幀的優(yōu)先級(jí)越高,該發(fā)送節(jié)點(diǎn)在總線仲裁中越容易搶占總線,數(shù)據(jù)幀發(fā)送完成的延時(shí)越小。本火災(zāi)報(bào)警應(yīng)用層協(xié)議采用CAN2.0B標(biāo)準(zhǔn)。將數(shù)據(jù)幀ID29bit位分成4個(gè)區(qū)域,信息包類型域、發(fā)送源地址域、接收目的地址域、信息包的包號(hào)域。定義數(shù)據(jù)幀ID標(biāo)識(shí)符和節(jié)點(diǎn)地址如下
信息包類型域(INFO_ID)為了表示傳輸信息的優(yōu)先級(jí)別,將數(shù)據(jù)幀ID的最高8位定義位信息包類型,比如火警信息、反饋信息、故障信息、握手信息、時(shí)鐘同步信息,越重要的信息其信息包ID值越??;ID21=0表示發(fā)送節(jié)點(diǎn)向接收節(jié)點(diǎn)發(fā)送信息包,ID21=1表示接收節(jié)點(diǎn)對(duì)ID20=0的信息包的響應(yīng)(成功),數(shù)據(jù)域?yàn)榻邮諗?shù)據(jù)零幀的第一個(gè)字節(jié)-發(fā)送信息包的時(shí)間戳和信息包類別(后面將詳細(xì)說明)。接收節(jié)點(diǎn)接收到ID21=1的信息包時(shí),不再向發(fā)送節(jié)點(diǎn)發(fā)送響應(yīng)信息(否則將產(chǎn)生遞歸)。由此可以看出,數(shù)據(jù)信息包的INFO_ID為偶數(shù),它的ACK包的INFO_ID為奇數(shù)。比如,08為系統(tǒng)恢復(fù)ID,14為系統(tǒng)狀態(tài)、時(shí)鐘同步、節(jié)點(diǎn)在線ID,32為系統(tǒng)火警ID,64為系統(tǒng)故障ID等。
發(fā)送源地址域(SRC_ADDR)和接收目的地址域(DEST_ADDR)這兩個(gè)地址域都占用8位,分別表示數(shù)據(jù)幀的發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)地址,所以在一條總線上最多256個(gè)節(jié)點(diǎn)。CAN協(xié)議中數(shù)據(jù)塊中沒有包含源地址和目的地址域,在火災(zāi)報(bào)警控制領(lǐng)域必須以地址區(qū)分各節(jié)點(diǎn)和分發(fā)數(shù)據(jù)流,所以在數(shù)據(jù)幀ID的該區(qū)間定義數(shù)據(jù)包的源地址和目的地址。接收節(jié)點(diǎn)CAN控制器每接收到一個(gè)CAN數(shù)據(jù)幀,都會(huì)向主微處理器申請(qǐng)中斷。為了減少總線節(jié)點(diǎn)主微處理器和CAN控制器之間不必要的開銷,提高主微處理器的使用效率,將CAN控制器的濾波和屏蔽寄存器設(shè)置成只允許發(fā)送到本節(jié)點(diǎn)的數(shù)據(jù)幀通過和向微處理器申請(qǐng)中斷處理。
信息包的數(shù)據(jù)幀號(hào)域(INFO_ORDER)此域占用5bit位。許多數(shù)據(jù)信息都大于一個(gè)CAN數(shù)據(jù)幀最大傳輸?shù)?字節(jié),因此應(yīng)用層協(xié)議是一種多幀傳輸協(xié)議。在應(yīng)用層協(xié)議中,一個(gè)數(shù)據(jù)包的信息由多個(gè)CAN數(shù)據(jù)幀組成。
當(dāng)此域?yàn)榱銜r(shí),具有特殊含義,1-31的意義相同,表示信息包的數(shù)據(jù)幀序號(hào)
在上表中①.整個(gè)數(shù)據(jù)文件長(zhǎng)度為文件大于一個(gè)信息包時(shí)的長(zhǎng)度,當(dāng)小于等于一個(gè)信息包時(shí),若采用XXXX0011模式傳送則其值等于當(dāng)前信息包長(zhǎng)度,并且當(dāng)前信息包號(hào)為0。②.當(dāng)前信息包數(shù)據(jù)幀號(hào)從0開始計(jì)數(shù)。③一個(gè)信息包的最大長(zhǎng)度位248字節(jié),各種應(yīng)用可根據(jù)實(shí)際規(guī)定信息包的最大長(zhǎng)度。
2.信息層數(shù)據(jù)包的構(gòu)建在CAN數(shù)據(jù)幀數(shù)據(jù)準(zhǔn)確傳輸?shù)那闆r下,大于一個(gè)數(shù)據(jù)幀的數(shù)據(jù)需要用信息層協(xié)議來保證數(shù)據(jù)的可靠傳輸。大于一個(gè)數(shù)據(jù)幀的數(shù)據(jù)必須分成許多個(gè)數(shù)據(jù)幀來發(fā)送或接收。下面是具體協(xié)議每一個(gè)數(shù)據(jù)幀都有一個(gè)ID標(biāo)識(shí)符,從上面的ID標(biāo)識(shí)符的BIT位分配可知,ID4-ID0為信息層數(shù)據(jù)幀的幀序號(hào),同時(shí)對(duì)數(shù)據(jù)幀序號(hào)為不同數(shù)值的含義作了說明
3.接收節(jié)點(diǎn)應(yīng)答機(jī)制應(yīng)答和超時(shí)重發(fā)機(jī)制是控制流量和準(zhǔn)確可靠傳輸?shù)幕A(chǔ)。接收節(jié)點(diǎn)接收到一個(gè)完整的信息包后,必須向發(fā)送節(jié)點(diǎn)發(fā)送ACK響應(yīng)信號(hào)表示該信息包已被完整接收。ACK信息包的INFO_ORDER=0。數(shù)據(jù)長(zhǎng)度為2,數(shù)據(jù)內(nèi)容為接收信息包數(shù)據(jù)零幀的第一個(gè)字節(jié)DATA1(時(shí)間戳和信息包類別)。ACK信息包類型(INFO_ID)為接收信息包類型加1。比如,如果火警信息包的INFO_ID=10,則火警信息包的ACK包的INFO_ID=11。
4.超時(shí)重發(fā)機(jī)制當(dāng)發(fā)送節(jié)點(diǎn)發(fā)送完一個(gè)信息包數(shù)據(jù)時(shí),等待接收節(jié)點(diǎn)發(fā)送ACK確認(rèn)接收信息。在指定的時(shí)間間隔內(nèi),如果沒有收到接收節(jié)點(diǎn)的ACK信號(hào)包,發(fā)送節(jié)點(diǎn)啟動(dòng)超時(shí)重發(fā)機(jī)制。當(dāng)重發(fā)次數(shù)達(dá)到最大重發(fā)次數(shù)時(shí),發(fā)送失敗。目前,發(fā)送超時(shí)間隔為2.5秒,最大重發(fā)次數(shù)為5。
接收節(jié)點(diǎn)收到同一發(fā)送節(jié)點(diǎn)發(fā)送來的INFO_ID相同并且時(shí)間戳也相同的信息包時(shí),認(rèn)為是發(fā)送節(jié)點(diǎn)由于重發(fā)機(jī)制發(fā)送的重復(fù)包,必須丟棄該重復(fù)信息包。否則,許多命令動(dòng)作(如恢復(fù)、消聲等)可能發(fā)生多次。
5.發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)對(duì)信息包發(fā)送和接收的處理
6.握手信息包、狀態(tài)信息包和時(shí)鐘同步信息包-在線信息包這些信息包都是數(shù)據(jù)長(zhǎng)度小于7字節(jié)的數(shù)據(jù)包,能夠在一個(gè)CAN2.0B協(xié)議數(shù)據(jù)幀中傳送完畢,發(fā)送和接收機(jī)制和其他一般的數(shù)據(jù)信息包相同。使用相同的Info_ID,其值為14。這三種信息包都屬于在線握手信息包。每個(gè)節(jié)點(diǎn)根據(jù)自身的性質(zhì)和系統(tǒng)的需要,向總線上的其他節(jié)點(diǎn)定期發(fā)送這三種信息包中的三種、二種或一種。下表為這三種信息包內(nèi)容的具體含義
由上表可知,所有的DATA1字節(jié)數(shù)據(jù)為X0,表示在線信息包由一個(gè)CAN2.0B數(shù)據(jù)幀組成。DATA2表示在線信息包的性質(zhì),并且根據(jù)系統(tǒng)的需要擴(kuò)展出更多類型的在線信息包。
7.節(jié)點(diǎn)故障檢測(cè)CAN2.0B協(xié)議規(guī)定,CAN控制器負(fù)責(zé)檢測(cè)每一個(gè)數(shù)據(jù)幀的發(fā)送和接收錯(cuò)誤。并且任何檢測(cè)到錯(cuò)誤的節(jié)點(diǎn)會(huì)標(biāo)出該報(bào)文已損壞,該報(bào)文會(huì)失效并將自動(dòng)開始重新傳送,同時(shí)錯(cuò)誤計(jì)數(shù)器的數(shù)值將增加。當(dāng)錯(cuò)誤計(jì)數(shù)器增加到一定的數(shù)值時(shí),向主微處理器報(bào)告錯(cuò)誤告警。這些機(jī)制保證了CAN報(bào)文的準(zhǔn)確傳送。但CAN協(xié)議對(duì)數(shù)據(jù)報(bào)文使用編碼(11位或29位)標(biāo)志,沒有節(jié)點(diǎn)地址概念,如果一個(gè)節(jié)點(diǎn)發(fā)生故障(如掉電、分叉總線接觸不好),其他節(jié)點(diǎn)有可能不知道該節(jié)點(diǎn)已發(fā)生故障,在消防規(guī)范中規(guī)定,在其他節(jié)點(diǎn)(主機(jī))必須顯示該節(jié)點(diǎn)故障。因此,必須使用更完善的節(jié)點(diǎn)故障檢測(cè)機(jī)制。
本協(xié)議采用以下規(guī)則檢測(cè)節(jié)點(diǎn)故障總線上的每個(gè)節(jié)點(diǎn)在其空閑的時(shí)候定期向與之有聯(lián)系的節(jié)點(diǎn)發(fā)送在線信號(hào)(前面的三種在線信號(hào)),每個(gè)節(jié)點(diǎn)都有一組與之相聯(lián)系的節(jié)點(diǎn)在線計(jì)數(shù)器。每個(gè)計(jì)數(shù)器在上電和恢復(fù)的時(shí)候設(shè)置初值,當(dāng)收到某個(gè)節(jié)點(diǎn)的數(shù)據(jù)包時(shí),某節(jié)點(diǎn)計(jì)數(shù)器值加1,直至一個(gè)最大值(由檢測(cè)故障的時(shí)間范圍和間隔決定)。同時(shí)周期性地(比如500毫秒)對(duì)每個(gè)節(jié)點(diǎn)在線計(jì)數(shù)器值減1,當(dāng)計(jì)數(shù)器的值減到0時(shí),報(bào)出該節(jié)點(diǎn)通訊故障。發(fā)送在線信號(hào)的時(shí)間間隔要小于周期性減計(jì)數(shù)器的時(shí)間間隔。這樣,每個(gè)節(jié)點(diǎn)都可以知道某個(gè)節(jié)點(diǎn)發(fā)生故障并顯示。
8.緩沖區(qū)重觸發(fā)機(jī)制對(duì)于發(fā)送(超時(shí)重發(fā))失敗的信息包,發(fā)送節(jié)點(diǎn)開辟一個(gè)新的緩沖區(qū)保存這些信息包,只要該節(jié)點(diǎn)處于發(fā)送空閑狀態(tài),該節(jié)點(diǎn)將嘗試重發(fā)這些信息包。這樣,對(duì)于那些重新上電或其他原因暫時(shí)不能接收的節(jié)點(diǎn),一旦處于正常狀態(tài),仍然能夠接收到這些信息包。緩沖區(qū)的大小可根據(jù)系統(tǒng)需要設(shè)置。
在圖3中,列出了由兩條CAN總線組成的火災(zāi)報(bào)警系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)示意。在報(bào)警主機(jī)聯(lián)網(wǎng)的CAN總線上,每臺(tái)主機(jī)通過主板上的CAN驅(qū)動(dòng)器82C250、CAN控制器MCP2510和中央處理器S3C44B0X和其他主機(jī)交換相互信息。在回路驅(qū)動(dòng)板CAN總線上,回路驅(qū)動(dòng)板通過CAN驅(qū)動(dòng)器82C250、CAN控制器SJA1000和微處理器8051交互信息。當(dāng)回路驅(qū)動(dòng)板檢測(cè)到一個(gè)火警發(fā)生時(shí),將發(fā)生該火警的探測(cè)器物理地址和火警類型通過火警信息包1的形式傳送給該回路驅(qū)動(dòng)板的報(bào)警主機(jī),然后報(bào)警主機(jī)收集整理更多的信息,組裝成火警信息包2的形式,向其他主機(jī)轉(zhuǎn)發(fā)。網(wǎng)絡(luò)上的每臺(tái)主機(jī)收到火警信息后,進(jìn)行聯(lián)動(dòng)運(yùn)算處理,結(jié)合聯(lián)動(dòng)使能狀態(tài),對(duì)相應(yīng)的模塊給出動(dòng)作指令。
圖4和圖5分別為回路驅(qū)動(dòng)板上報(bào)的火警數(shù)據(jù)結(jié)構(gòu)(火警信息包1)和報(bào)警主機(jī)之間傳輸?shù)幕鹁瘮?shù)據(jù)結(jié)構(gòu)(火警信息包2)。由圖可知,回路驅(qū)動(dòng)板上報(bào)的火警數(shù)據(jù)信息長(zhǎng)度為4字節(jié),小于7字節(jié),該火警數(shù)據(jù)信息可以在一個(gè)CAN協(xié)議的數(shù)據(jù)幀中傳輸完畢,主機(jī)之間的火警數(shù)據(jù)長(zhǎng)度為70字節(jié),根據(jù)本發(fā)明的應(yīng)用層數(shù)據(jù)傳輸方法上述實(shí)施例需要10個(gè)CAN協(xié)議數(shù)據(jù)幀才能傳輸完畢。
圖1和圖2分別為發(fā)送節(jié)點(diǎn)發(fā)送數(shù)據(jù)信息包和接收節(jié)點(diǎn)接收數(shù)據(jù)信息包主要流程示意圖。回路驅(qū)動(dòng)板向主機(jī)上報(bào)火警時(shí),需要將火警數(shù)據(jù)打包成火警信息包1的形式29位的幀標(biāo)識(shí)符由INFO_ID,SRC_ADDR,DEST_ADDR,INFO_ORDER組成。該CAN協(xié)議數(shù)據(jù)幀的長(zhǎng)度(DLC)設(shè)置為5,DATA1的數(shù)值為xxxx0000,其中xxxx表示信息包的時(shí)間戳,范圍從0-15取值,發(fā)送節(jié)點(diǎn)每成功發(fā)送一個(gè)信息包,xxxx的數(shù)值將加1;0000表示信息包的類別,表示該信息包的數(shù)據(jù)長(zhǎng)度小于7。4個(gè)字節(jié)的火警數(shù)據(jù)包含在隨后的DATA2-DATA5中。DATA1-DATA5為CAN數(shù)據(jù)幀數(shù)據(jù)的有效內(nèi)容,因此長(zhǎng)度(DLC)設(shè)置為5。主機(jī)之間的火警信息包2的形式為29位的幀標(biāo)識(shí)符與火警信息包1構(gòu)成基本相同,由于需要傳輸多個(gè)CAN協(xié)議數(shù)據(jù)幀,在INFO_ORDER的范圍從0-9取值。DATA1的數(shù)值由于所傳輸?shù)幕鹁瘮?shù)據(jù)內(nèi)容為70字節(jié),大于7字節(jié)而需要設(shè)置成xxxx0001。當(dāng)INFO_ORDER的數(shù)值為0時(shí),CAN協(xié)議數(shù)據(jù)幀長(zhǎng)度(DLC)為2,DATA2的數(shù)值為70,表示火警信息包2的長(zhǎng)度。當(dāng)INFO_ORDER的數(shù)值從1-8時(shí),CAN協(xié)議數(shù)據(jù)幀長(zhǎng)度(DLC)為8,DATA1-DATA8的數(shù)值依次由主機(jī)之間的火警數(shù)據(jù)填充。當(dāng)INFO_ORDER的數(shù)值為9時(shí),剩下的火警數(shù)據(jù)為6字節(jié),為該信息包的最后一幀數(shù)據(jù),CAN協(xié)議的數(shù)據(jù)幀長(zhǎng)度(DLC)為6,將剩下的6字節(jié)火警數(shù)據(jù)填充到DATA1-DATA6。
發(fā)送節(jié)點(diǎn)根據(jù)發(fā)送流程將數(shù)據(jù)信息包發(fā)送到接收節(jié)點(diǎn),接收節(jié)點(diǎn)根據(jù)接收流程接收數(shù)據(jù)信息包。接收節(jié)點(diǎn)的ACK應(yīng)答機(jī)制、發(fā)送超時(shí)機(jī)制和緩沖區(qū)重觸發(fā)機(jī)制將保證數(shù)據(jù)準(zhǔn)確可靠的發(fā)送。
權(quán)利要求
1.一種基于CAN2.0B的火災(zāi)報(bào)警應(yīng)用層數(shù)據(jù)傳輸方法,其特征是,包括如下步驟A、計(jì)算本次自定義信息包或整個(gè)文件的長(zhǎng)度,根據(jù)數(shù)據(jù)幀最大允許長(zhǎng)度、信息層數(shù)據(jù)包最大允許長(zhǎng)度、本次傳輸?shù)臄?shù)據(jù)長(zhǎng)度,構(gòu)建信息層數(shù)據(jù)包;B、構(gòu)建標(biāo)識(shí)符,將數(shù)據(jù)幀ID標(biāo)識(shí)符的29bit分成至少四個(gè)區(qū)域,分別為信息包類型域、發(fā)送源地址域、接收目的地址域、信息包數(shù)據(jù)幀號(hào)域;C、確定本次數(shù)據(jù)包的發(fā)送方式;以每個(gè)不大于8字節(jié)的數(shù)據(jù)幀為單位根據(jù)上述標(biāo)識(shí)符中的接收目的地址域向其提供的目的地址發(fā)送信息層數(shù)據(jù)包;D、接收節(jié)點(diǎn)接收到完整的信息包后,在指定時(shí)間內(nèi),根據(jù)標(biāo)識(shí)符中的發(fā)送源地址域向發(fā)送源地址發(fā)送響應(yīng)信號(hào),確認(rèn)數(shù)據(jù)已接收,本次發(fā)送成功,進(jìn)入下一個(gè)信息包發(fā)送狀態(tài)。
2.根據(jù)權(quán)利要求1所述的傳輸方法,其特征是,步驟C)中所述發(fā)送方式信息被構(gòu)建在首個(gè)信息層數(shù)據(jù)包的信息數(shù)據(jù)包類別中,包括單幀發(fā)送和多幀發(fā)送方式。
3.根據(jù)權(quán)利要求2所述的傳輸方法,其特征是,所述單幀發(fā)送方式的步驟判斷首個(gè)信息層數(shù)據(jù)包的信息包類別,當(dāng)該值表明本次發(fā)送為單幀數(shù)據(jù)信息包時(shí),根據(jù)上述標(biāo)識(shí)符中的接收目的地址域向其提供的目的地址發(fā)送至少標(biāo)示有信息包時(shí)間戳、用戶自定義數(shù)據(jù)的信息層數(shù)據(jù)包。
4.根據(jù)權(quán)利要求2所述的傳輸方法,其特征是,所述多幀發(fā)送方式的步驟為判斷首個(gè)信息層數(shù)據(jù)包的信息包類別,當(dāng)該值表明當(dāng)前數(shù)據(jù)包需要多幀發(fā)送時(shí),則進(jìn)一步判斷當(dāng)前信息包長(zhǎng)度等信息;將信息層數(shù)據(jù)包分幀、分包發(fā)送。
5.根據(jù)權(quán)利要求4所述的傳輸方法,其特征是當(dāng)整個(gè)文件的長(zhǎng)度大于一個(gè)信息層數(shù)據(jù)包最大允許長(zhǎng)度時(shí),在信息包數(shù)據(jù)幀號(hào)域標(biāo)識(shí)為零的首個(gè)信息層數(shù)據(jù)包中還標(biāo)示有整個(gè)數(shù)據(jù)文件長(zhǎng)度信息和當(dāng)前信息包包號(hào)信息;發(fā)送時(shí)將整個(gè)文件分成多個(gè)信息層數(shù)據(jù)包、每個(gè)數(shù)據(jù)包分成多幀數(shù)據(jù)幀傳輸。
6.根據(jù)權(quán)利要求1-5中任一項(xiàng)所述的傳輸方法,其特征是還包括超時(shí)重發(fā)機(jī)制,即在指定時(shí)間內(nèi)發(fā)送節(jié)點(diǎn)未接收到接收節(jié)點(diǎn)發(fā)送的確認(rèn)接收信息時(shí),發(fā)送節(jié)點(diǎn)自動(dòng)啟動(dòng)重發(fā),直至發(fā)送節(jié)點(diǎn)接收到接收節(jié)點(diǎn)發(fā)送的確認(rèn)接收信息,或重發(fā)次數(shù)已達(dá)到預(yù)定的最大重發(fā)次數(shù)。
7.根據(jù)權(quán)利要求6所述的傳輸方法,其特征是,所述重發(fā)機(jī)制還包括判斷重復(fù)包的方法接收節(jié)點(diǎn)判斷發(fā)送節(jié)點(diǎn)發(fā)送來的信息包標(biāo)示的信息包類型域和時(shí)間戳,當(dāng)二者與已收到的某個(gè)信息包中的信息包類型域、時(shí)間戳分別相同時(shí),則認(rèn)為本次接收到的信息是重復(fù)包,丟棄該重復(fù)包。
8.根據(jù)權(quán)利要求1-5中任一項(xiàng)所述的傳輸方法,其特征是,還包括節(jié)點(diǎn)故障檢測(cè)機(jī)制總線上每個(gè)節(jié)點(diǎn)在其空閑時(shí),定期向與之有聯(lián)系的節(jié)點(diǎn)發(fā)送在線信號(hào),每個(gè)節(jié)點(diǎn)都有一組與之相聯(lián)系的節(jié)點(diǎn)在線計(jì)數(shù)器;每個(gè)計(jì)數(shù)器在上電和恢復(fù)的時(shí)候設(shè)置初值,當(dāng)收到某個(gè)節(jié)點(diǎn)的在線信號(hào)數(shù)據(jù)包時(shí),計(jì)數(shù)器執(zhí)行一次正向運(yùn)算,直至某個(gè)預(yù)定值;同時(shí)周期性地對(duì)計(jì)數(shù)器執(zhí)行一次與前述正向運(yùn)算方向相反的反向運(yùn)算,當(dāng)計(jì)數(shù)器的值為0時(shí),則報(bào)出該節(jié)點(diǎn)通訊故障。
9.根據(jù)權(quán)利要求8所述的傳輸方法,其特征是發(fā)送在線信號(hào)的時(shí)間間隔小于周期性減計(jì)數(shù)器的時(shí)間間隔,所述計(jì)數(shù)器在上電和恢復(fù)的時(shí)候設(shè)置非零初值,所述節(jié)點(diǎn)計(jì)數(shù)器收到某個(gè)節(jié)點(diǎn)的在線信號(hào)數(shù)據(jù)包時(shí),執(zhí)行一次正向運(yùn)算加1,直至一個(gè)預(yù)定的最大值。同時(shí)周期性地對(duì)每個(gè)節(jié)點(diǎn)在線計(jì)數(shù)器執(zhí)行一次反向運(yùn)算減1,當(dāng)計(jì)數(shù)器的值減到0時(shí),報(bào)出該節(jié)點(diǎn)通訊故障。
10.根據(jù)權(quán)利要求6所述的傳輸方法,其特征是,還包括緩沖區(qū)重觸發(fā)機(jī)制對(duì)于在所述超時(shí)重發(fā)機(jī)制中發(fā)送失敗的信息包,發(fā)送節(jié)點(diǎn)開辟一個(gè)新的緩沖區(qū)保存這些信息包,當(dāng)該節(jié)點(diǎn)處于發(fā)送空閑狀態(tài)時(shí),該節(jié)點(diǎn)嘗試重發(fā)這些信息包。
全文摘要
本發(fā)明公開了一種基于CAN2.0B的火災(zāi)報(bào)警應(yīng)用層數(shù)據(jù)傳輸方法,根據(jù)傳輸信息的長(zhǎng)度來構(gòu)建信息層數(shù)據(jù)包,同時(shí)構(gòu)建的數(shù)據(jù)幀標(biāo)識(shí)符包括信息包類型域、發(fā)送源地址域、接收目的地址域和信息包數(shù)據(jù)幀號(hào)域,便于定義傳輸信息的優(yōu)先級(jí)別,克服CAN協(xié)議中沒有包含發(fā)送源地址和目的地址域的不足,可以適用于火災(zāi)報(bào)警控制系統(tǒng);接收節(jié)點(diǎn)的應(yīng)答機(jī)制保證數(shù)據(jù)傳輸?shù)目煽啃?;采用多幀傳輸、或整個(gè)文件多個(gè)信息層數(shù)據(jù)包、多幀傳輸,滿足系統(tǒng)中長(zhǎng)度超過8個(gè)字節(jié)的信息層數(shù)據(jù)包、長(zhǎng)度超過單個(gè)信息層數(shù)據(jù)包最大允許長(zhǎng)度的文件的傳輸;在數(shù)據(jù)傳輸中還采用超時(shí)重發(fā)機(jī)制、節(jié)點(diǎn)故障檢測(cè)機(jī)制、緩沖區(qū)重觸發(fā)機(jī)制等,可以進(jìn)一步保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性、有效性。
文檔編號(hào)G08B25/00GK1560806SQ200410026429
公開日2005年1月5日 申請(qǐng)日期2004年3月4日 優(yōu)先權(quán)日2004年3月4日
發(fā)明者黃紅軍 申請(qǐng)人:深圳市泛海三江電子有限公司