基于CAN總線技術(shù)在車站信號(hào)系統(tǒng)中的應(yīng)用
信息從CAN總線到CAN接收緩沖區(qū)是由CAN控制器自動(dòng)完成的。接收程序只需從接收緩沖區(qū)讀取要接收的信息即可。需要注意的是,讀取接收緩存器(RBF0或 RBF1)的內(nèi)容后,CPU必須通過置位釋放接收緩存位來釋放緩存器,使得另一個(gè)報(bào)文立即變得有效。數(shù)據(jù)發(fā)送和接收中斷流程圖如圖5所示。
4.3 總線出錯(cuò)和異常處理
CAN總線作為一種優(yōu)良的串行通信局域網(wǎng)絡(luò),它自身的查錯(cuò)和排錯(cuò)能力相當(dāng)強(qiáng)大,因此在設(shè)計(jì)時(shí)必須充分利用這一點(diǎn),提高通信系統(tǒng)的可靠性。CAN協(xié)議規(guī)定網(wǎng)絡(luò)上的任何一個(gè)節(jié)點(diǎn),根據(jù)其錯(cuò)誤計(jì)數(shù)器中的數(shù)值,可能處于下列3種狀態(tài)之一:“錯(cuò)誤—激活”狀態(tài)、“錯(cuò)誤—認(rèn)可”狀態(tài)、“總線脫離”狀態(tài)。處于前兩種狀態(tài)時(shí)節(jié)點(diǎn)都可以參與總線通信,而當(dāng)處于“總線脫離”狀態(tài)時(shí)節(jié)點(diǎn)既不發(fā)送,也不接收任何數(shù)據(jù)幀。同時(shí)CAN協(xié)議還對(duì)脫離總線節(jié)點(diǎn)重新參與總線通信有嚴(yán)格規(guī)定。
由于節(jié)點(diǎn)自身的原因或是其它原因,節(jié)點(diǎn)脫離總線,不參與通信,出現(xiàn)這種情況程序要做到及時(shí)發(fā)現(xiàn),并且迅速做出有效處理,使之恢復(fù)參與總線通信。判斷節(jié)點(diǎn)是否脫離總線同樣既可通過查詢方式,又可通過中斷方式。而處于“總線脫離”狀態(tài)的節(jié)點(diǎn)通信功能的恢復(fù),必須嚴(yán)格依照CAN協(xié)議規(guī)定的流程做,否則節(jié)點(diǎn)將一直處于“總線脫離”狀態(tài)。
5、總結(jié)
在車站信號(hào)系統(tǒng)中,用CAN總線代替RS-485總線,其數(shù)據(jù)通信具有突出的可靠性、實(shí)時(shí)性和靈活性,而且通信距離也有了很大的提高,這些都在現(xiàn)場(chǎng)運(yùn)行中得到了證實(shí),具有較強(qiáng)的實(shí)用價(jià)值。
本文作者創(chuàng)新點(diǎn):用CAN總線代替車站信號(hào)系統(tǒng)所使用的RS-485總線,在軟/硬件設(shè)計(jì)中均采用了模塊化的方案,具有更高的靈活性和廣泛的適用性;同時(shí),用Atmega128單片機(jī)代替車站信號(hào)系統(tǒng)中所使用的Atmel8535單片機(jī),使運(yùn)行的速度也得到了提高。
參考文獻(xiàn):
[1].RS-485datasheethttp://www.dzsc.com/datasheet/RS-485_584821.html.
[2].2.0datasheethttp://www.dzsc.com/datasheet/2.0_1758666.html.
[3].SJA1000datasheethttp://www.dzsc.com/datasheet/SJA1000_609075.html.
[4].PCA82C200datasheethttp://www.dzsc.com/datasheet/PCA82C200_.html.
[5].Atmega128datasheethttp://www.dzsc.com/datasheet/Atmega128_.
[6].TJA1050datasheethttp://www.dzsc.com/datasheet/TJA1050_649182.html.
評(píng)論