摘 要:由于受CAN收發(fā)器的限制,在一個(gè)CAN總線網(wǎng)絡(luò)中最多只能有110個(gè)CAN節(jié)點(diǎn),或達(dá)到10km的通信距離,所以當(dāng)所需CAN總線網(wǎng)絡(luò)的節(jié)點(diǎn)、距離超出以上限制時(shí),就必須進(jìn)行CAN總線網(wǎng)絡(luò)的擴(kuò)展。目前一般的擴(kuò)展方式是加CAN總線中繼器,這種方法方便簡(jiǎn)單的同時(shí)卻增加了系統(tǒng)造價(jià),在此我們提出了一種基于模擬開關(guān)ADG663的CAN總線網(wǎng)絡(luò)擴(kuò)展方案,在無須CAN中繼器或其他設(shè)備的情況下實(shí)現(xiàn)兩個(gè)或是多個(gè)CAN總線網(wǎng)絡(luò)的連接,本文介紹了具體的擴(kuò)展方法以及軟硬件設(shè)計(jì)。
關(guān)鍵詞: CAN總線;模擬開關(guān);總線擴(kuò)展
1. 引言
CAN(Controller Area Network)總線屬于現(xiàn)場(chǎng)總線的范疇,它是德國(guó)Bosch公司在20世紀(jì)80年代初為解決現(xiàn)代汽車中眾多的控制與測(cè)試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議。自Bosch公司推出CAN總線至今,CAN總線以其系統(tǒng)的實(shí)用性、可靠性和經(jīng)濟(jì)性而倍受青睞,并獲得了長(zhǎng)足的進(jìn)步。CAN總線是目前惟一有國(guó)際標(biāo)準(zhǔn)的現(xiàn)場(chǎng)總線,可實(shí)現(xiàn)全分布式多機(jī)系統(tǒng),采用非破壞性總線仲裁技術(shù),可滿足不同的實(shí)時(shí)要求,通信距離最遠(yuǎn)可達(dá)10km(傳輸率為 5Kb/s),通信速率最高可達(dá)lMb/s(傳輸距離為40m);節(jié)點(diǎn)數(shù)可達(dá)110個(gè),傳輸介質(zhì)為雙絞線或光纖,報(bào)文采用短幀結(jié)構(gòu),帶有CRC校驗(yàn)以及其他檢錯(cuò)措施,使得數(shù)據(jù)出錯(cuò)率極低, 可靠性極高。CAN總線以其卓越的特性,低廉的價(jià)格,極高的可靠性和靈活的結(jié)構(gòu),已被公認(rèn)為最有前途的現(xiàn)場(chǎng)總線之一。
正由于CAN總線具有諸多其他總線無法比擬的特性,所以CAN在許多場(chǎng)合應(yīng)用廣泛。然而,有時(shí)由于工程項(xiàng)目的特殊要求,需要CAN總線連接更多的節(jié)點(diǎn)或是更遠(yuǎn)的通信距離,這就必須對(duì)CAN總線網(wǎng)絡(luò)進(jìn)行擴(kuò)展。目前比較常用的CAN總線擴(kuò)展方法是利用CAN中繼器將兩個(gè)CAN總線網(wǎng)絡(luò)連接起來,如周立功的 CANrep-AB型智能全隔離CAN中繼器、CAN-3202智能CAN總線兩路中繼網(wǎng)橋、XYCANR2雙端口CAN光電隔離中繼器、ADAM- 4515 CAN中繼器以及WT406-CAN CAN總線中繼模塊等。這些CAN中繼器都是采用微控制器對(duì)兩個(gè)CAN網(wǎng)絡(luò)的數(shù)據(jù)進(jìn)行分別存儲(chǔ)和相互轉(zhuǎn)發(fā),從而實(shí)現(xiàn)兩個(gè)網(wǎng)絡(luò)的連接和雙向的數(shù)據(jù)傳輸。如果要利用中繼器實(shí)現(xiàn)CAN總線網(wǎng)絡(luò)的擴(kuò)展就必須增加相應(yīng)的微控制器:CAN控制器和CAN驅(qū)動(dòng)器。這樣就增加了系統(tǒng)成本,提高了工程造價(jià)。
基于上述問題,我們?cè)O(shè)計(jì)了一種基于模擬開關(guān)ADG663的CAN總線網(wǎng)絡(luò)擴(kuò)展方案。利用模擬開關(guān)可以分時(shí)導(dǎo)通的特性,我們將微控制器經(jīng)過CAN控制器出來的信號(hào)分時(shí)的打到兩個(gè)位于不同CAN網(wǎng)絡(luò)的CAN驅(qū)動(dòng)器上,這樣就可以把微控制器分時(shí)的掛到兩個(gè)CAN網(wǎng)絡(luò)上,實(shí)現(xiàn)兩個(gè)CAN網(wǎng)絡(luò)之間的數(shù)據(jù)交換,從而實(shí)現(xiàn)了 CAN總線網(wǎng)絡(luò)的無中繼擴(kuò)展。將網(wǎng)絡(luò)相鄰處的微控制器通過模擬開關(guān)分時(shí)復(fù)用的連接到兩個(gè)CAN網(wǎng)絡(luò)上,既能實(shí)現(xiàn)網(wǎng)絡(luò)的擴(kuò)展又能完成本節(jié)點(diǎn)的測(cè)控任務(wù),從而省去了中繼器,降低了系統(tǒng)成本。根據(jù)CAN通信的特點(diǎn),要對(duì)兩路CAN信號(hào)進(jìn)行切換,我們采用獨(dú)立四通道可控模擬開關(guān)ADG663,通過對(duì)其控制引腳進(jìn)行編程控制實(shí)現(xiàn)微控制器在兩個(gè)CAN總線網(wǎng)絡(luò)中的切換。
2. ADG663簡(jiǎn)介
ADG663 是ADI公司生產(chǎn)的集成COMS開關(guān)器件。它包含4個(gè)獨(dú)立的可選模擬開關(guān)通道,可以由控制端方便的控制其通斷。這些通道具有很低的導(dǎo)通電阻和很寬的信號(hào)輸入范圍,可實(shí)現(xiàn)精確的模擬信號(hào)切換。整個(gè)器件基于ADI公司先進(jìn)的線性兼容CMOS(LC2MOS)工藝制作而成,具有低漏電流、超低功耗、高速工作時(shí)極小的電荷積累等特點(diǎn)。尤其是ADG663的四通道中有兩通道是高電平導(dǎo)通,而另外兩個(gè)是低電平導(dǎo)通,這樣不光使得模擬開關(guān)的控制信號(hào)非常簡(jiǎn)單,而且使得 CAN總線收發(fā)切換更加同步。ADG663的IN1~I(xiàn)N4為控制信號(hào)端,S1~S4為輸入信號(hào),D1~D4為對(duì)應(yīng)的輸出信號(hào)。
3. 基于ADG663的CAN總線網(wǎng)絡(luò)擴(kuò)展
3.1 擴(kuò)展電路的硬件設(shè)計(jì)
在CAN總線網(wǎng)絡(luò)中,我們用于檢測(cè)的微控制器選用微芯公司新款集成CAN總線控制器的PIC18F458芯片,它是8位CMOS單片機(jī),內(nèi)部采用哈佛總線結(jié)構(gòu),使得全部指令單字節(jié)、單周期化,有利于提高CPU執(zhí)行指令的速度,從而提高單片機(jī)的運(yùn)行速度。而CAN驅(qū)動(dòng)器我們選用微芯公司的CAN總線驅(qū)動(dòng)芯片MCP2551,它完全兼容ISO 11898標(biāo)準(zhǔn),最高速率可達(dá)1Mb/s,提供了比82C250更好電磁輻射和抗電磁干擾能力性能。利用ADG663擴(kuò)展CAN總線網(wǎng)絡(luò)的原理如圖3所示,由于ADG663的特點(diǎn),微控制器僅用一根口線就可以實(shí)現(xiàn)兩個(gè)CAN驅(qū)動(dòng)器之間的切換,并同時(shí)保證微處理器對(duì)每一個(gè)CAN驅(qū)動(dòng)器的收發(fā)同步以及微處理器在任意時(shí)刻均掛在總線上,還可以提高模擬開關(guān)切換時(shí)的系統(tǒng)穩(wěn)定性。
3.2 擴(kuò)展電路的軟件編程
基于CAN總線的即插即用接口特性,這種擴(kuò)展方式只需改變中轉(zhuǎn)節(jié)點(diǎn)的編程,而無須對(duì)其余節(jié)點(diǎn)進(jìn)行修改。編寫中轉(zhuǎn)節(jié)點(diǎn)的程序使其在完成自身的測(cè)控任務(wù)的同時(shí)實(shí)現(xiàn)對(duì)兩邊數(shù)據(jù)的存儲(chǔ)和轉(zhuǎn)發(fā)。要同時(shí)完成這兩個(gè)任務(wù),必須保證微控制器的工作頻率遠(yuǎn)大于CAN總線的位速率,這樣可以確保微處理器有足夠的時(shí)間存儲(chǔ)和轉(zhuǎn)發(fā)兩個(gè)網(wǎng)絡(luò)的數(shù)據(jù)。由于微處理器利用模擬開關(guān)在兩個(gè)CAN網(wǎng)絡(luò)中切換,在理論上必定會(huì)導(dǎo)致總線上部分?jǐn)?shù)據(jù)丟失,這就必須要求測(cè)量節(jié)點(diǎn)對(duì)其傳輸數(shù)據(jù)進(jìn)行適當(dāng)?shù)闹匕l(fā),從而可以保證數(shù)據(jù)可以完整的相互交換。對(duì)于中轉(zhuǎn)節(jié)點(diǎn),在原有的測(cè)量節(jié)點(diǎn)程序中,加入定時(shí)器定時(shí),以決定模擬開關(guān)的切換頻率。同時(shí)當(dāng)微控制器連接到某一網(wǎng)絡(luò)后,微處理器不光要將自身檢測(cè)信息和控制信號(hào)以及接著另一個(gè)網(wǎng)絡(luò)時(shí)存儲(chǔ)的信息全部發(fā)送出去,而且還要中斷接收這個(gè)網(wǎng)絡(luò)其他節(jié)點(diǎn)的信息并存儲(chǔ),等到模擬開關(guān)切換時(shí)進(jìn)行發(fā)送。節(jié)點(diǎn)信息重發(fā)的次數(shù)由微處理器的工作頻率以及CAN總線的傳輸速率綜合決定。選擇合適的次數(shù)使得一方面總線的冗余信息不會(huì)過多,另一方面模擬開關(guān)的切換過程中微處理器不會(huì)丟失掉過多的信息。
4. 結(jié)束語
本文討論的這種基于模擬乘法器ADG663的CAN總線網(wǎng)絡(luò)擴(kuò)展方案省去了CAN中繼器,簡(jiǎn)化了系統(tǒng)硬件連接,降低了系統(tǒng)成本,為CAN總線的網(wǎng)絡(luò)擴(kuò)展提供了一種簡(jiǎn)單有效的實(shí)現(xiàn)方法。然而簡(jiǎn)化硬件的同時(shí)就不可避免的增加了系統(tǒng)軟件的復(fù)雜性,并對(duì)系統(tǒng)通信速率有了一定限制。因此,該方案適應(yīng)于數(shù)據(jù)傳輸量不是很大,速率要求不是很高的場(chǎng)合。