0 引言 CAN(Controller Area Network)總線是上世紀(jì)80年代德國Bosch公司開發(fā)的一種串行數(shù)據(jù)總線,屬于現(xiàn)場總線的范疇。CAN總線主要特點(diǎn)如下: (1)CAN 總線系統(tǒng)導(dǎo)線少(兩線電源線,兩根信號線),維護(hù)和安裝便捷; (2)CAN協(xié)議采用8字節(jié)的短幀結(jié)構(gòu),保證了傳輸?shù)恼_性和低誤碼率; (3)CAN 協(xié)議對通信數(shù)據(jù)進(jìn)行編碼,使得網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)不受限制且無主從之分;采用廣播方式,不同的節(jié)點(diǎn)可以同時(shí)接收到相同的數(shù)據(jù); (4)采用CRC 檢驗(yàn)并可提供相應(yīng)的錯(cuò)誤處理功能,保證數(shù)據(jù)通信的可靠性。 CAN總線具有突出的靈活性、實(shí)時(shí)性和可靠性,已廣泛應(yīng)用到機(jī)器人、汽車、數(shù)控機(jī)床、自動化儀表等領(lǐng)域的現(xiàn)場通信中。雖然CAN協(xié)議本身具有強(qiáng)大的糾錯(cuò)能力,但是在實(shí)際應(yīng)用中由于硬件電路接口連接不牢和傳輸介質(zhì)容易受到損壞,因此在電力機(jī)車、船舶機(jī)艙和航空航天等對可靠性要求很高的領(lǐng)域,往往采用冗余設(shè)計(jì)來提高硬件的可靠性。 1 冗余設(shè)計(jì)可靠性分析 采用CAN總線冗余設(shè)計(jì),主要是為了提高系統(tǒng)的可靠性。已實(shí)際應(yīng)用的有雙總線冗余和三總線冗余等。總線冗余相當(dāng)于系統(tǒng)并聯(lián),以雙總線冗余設(shè)計(jì)為例進(jìn)行分析。雙總線通信模型如圖2所示,原模型如圖 1所示。文獻(xiàn)只分析了雙總線,這里借鑒其方法進(jìn)一步分析已有實(shí)際應(yīng)用的三總線的可靠性,指出雙總線的效率最好,是本文要采用的冗余方案。 ![]() 不妨設(shè)每條總線的可靠度均為R,則模型l的可靠度為: R1=R 采用雙總線冗余設(shè)計(jì)的模型2的可靠度為: R2=1-(1-R)(1-R) 同理,采用三總線冗余設(shè)計(jì)的可靠度為: R3=1-(1-R)(1-R)(1-R) 另外,假設(shè)每路CAN總線通信可靠度均為 ![]() ![]() 若定義平均無故障時(shí)間為 ![]() ![]() 由 ![]() 但是,由 ![]() ![]() 2 節(jié)點(diǎn)電路設(shè)計(jì) CAN節(jié)點(diǎn)一般采取CAN控制器或CAN接口芯片和總線驅(qū)動器構(gòu)成。具體有三種構(gòu)成形式:a.獨(dú)立CAN通信控制器和驅(qū)動器構(gòu)成,如SJAl000+PCA82C250;b.帶控制功能的I/0器件和CAN驅(qū)動器構(gòu)成, 如P82C150+PCA82C250;C.帶在片CAN微控制器和CAN驅(qū)動器構(gòu)成,如P80C592+PCA82C250。本文采用第三種形式,有利于簡化電路設(shè)計(jì),在冗余設(shè)計(jì)時(shí)便于程序控制。 CAN冗余有完全冗余和部份冗余兩種。本文采用雙總線冗余,完全冗余就是雙控制器冗余:雙控制器+雙驅(qū)動器+雙總線。部分冗余有兩種形式:a.雙驅(qū)動器冗余:單控制器+模擬開關(guān)+雙驅(qū)動器+雙總線;b.雙總線冗余:單控制器+單驅(qū)動器+模擬開關(guān)+雙總線。 請注意:這里的雙總線冗余是對節(jié)點(diǎn)來說的,與上面的針對網(wǎng)絡(luò)結(jié)構(gòu)而言的僅只總線數(shù)目的雙總線冗余不同,不要混淆。 ![]() 文獻(xiàn)介紹的雙驅(qū)動器冗余是在兩個(gè)驅(qū)動器的接收引腳RXD 與控制器之間接一數(shù)控模擬開關(guān),兩個(gè)驅(qū)動器的發(fā)送引腳TXD都直接與控制器的發(fā)送引腳相連,如圖3所示。這種連接方式只能從雙總線選擇一路接收數(shù)據(jù),但是能向兩路同時(shí)發(fā)送數(shù)據(jù)。 文獻(xiàn)介紹的雙總線冗余是在一個(gè)驅(qū)動器與雙總線之間接一數(shù)控模擬開關(guān)CD4052,如圖4所示。這種連接方式只能從雙總線選擇一路接收或發(fā)送數(shù)據(jù)。 上述兩種電路都有一個(gè)不足,即雙總線的運(yùn)行方式不能選擇,從而不能通過軟件來提高總線的通信利用率。 本文對上述電路加以改進(jìn),在控制器和兩個(gè)驅(qū)動器之問加一個(gè)數(shù)控模擬開關(guān)CD4053,如圖5所示。 本文采用帶在片CAN控制器的單片機(jī)P80C3592,節(jié)點(diǎn)電路連接圖如圖6所示。CAN控制器的發(fā)送輸出端CTX0接CD4053的第二路模擬開關(guān)輸出端Y;CAN控制器的接收輸入端CRX0接CD4053的第一路模擬開關(guān)輸出端X。CD4053的第一路模擬開關(guān)的輸入端X0、X1分別接兩個(gè)總線驅(qū)動器的接收輸出端RXD;CD4053的第三路模擬開關(guān)的輸出端Z與其輸入端Z0連接后,然后將第二路與第三路模擬開關(guān)的輸入端Y0、Y1和Z0、z1對應(yīng)連接,再對應(yīng)連接兩個(gè)總線驅(qū)動器的發(fā)送輸入端TXD。CD4053三獨(dú)立選通由單片機(jī)的P1口低三位控制。這樣就使得雙總線可供選擇的工作方式增加。對于單一節(jié)點(diǎn)來說,雙總線所有可能的運(yùn)行方式如表1所示。 ![]() ![]() 對于所有節(jié)點(diǎn)來說,雙CAN總線有同時(shí)運(yùn)行和熱備份兩種運(yùn)行方式。由于采用雙驅(qū)動器冗余,只有一個(gè)總線控制器,所以每個(gè)節(jié)點(diǎn)不能同時(shí)從兩路總線接收數(shù)據(jù),故本文的驅(qū)動器冗余方式不能實(shí)現(xiàn)嚴(yán)格意義上的同時(shí)運(yùn)行方式。另外,同時(shí)運(yùn)行方式功耗大,總線通信利用率低。 若采用圖3所示的電路,只能實(shí)現(xiàn)表1中的方式5和6,若采用圖4所示的電路,只能實(shí)現(xiàn)表1中的方式1和4。方式2 和3具有非常特殊的作用:a.雙總線同時(shí)運(yùn)行時(shí),可以為兩個(gè)不同的節(jié)點(diǎn)傳遞報(bào)文,提高總線通信利用率;b.可能實(shí)現(xiàn)單節(jié)點(diǎn)調(diào)試。因?yàn)閱喂?jié)點(diǎn)采用其他方式調(diào)試時(shí),報(bào)文發(fā)送后由于得不到應(yīng)答而會檢測到錯(cuò)誤并不斷重發(fā)報(bào)文,節(jié)點(diǎn)轉(zhuǎn)為被動出錯(cuò)節(jié)點(diǎn)。 3 軟件編程 CAN總線節(jié)點(diǎn)的通信程序主要包括初始化、報(bào)文發(fā)送和報(bào)文接收三部分。 (1)CAN節(jié)點(diǎn)初始化主要是配置控制組寄存器。在初始化前,必須確保CAN控制器進(jìn)入復(fù)位模式。初始化主要有:配置總線定時(shí)器BTR0和BTR1,設(shè)定總線通信波特率;配置輸出控制寄存器OCR,設(shè)定控制器輸出管腳CTXO和CTX1的輸出模式;配置驗(yàn)收碼寄存器ACR和驗(yàn)收屏蔽碼寄存器AMR,設(shè)定驗(yàn)收碼和驗(yàn)收屏蔽碼。 (2)報(bào)文發(fā)送程序?qū)?bào)文(目標(biāo)節(jié)點(diǎn)ID、數(shù)據(jù)長度和數(shù)據(jù))送入發(fā)送緩沖器,然后啟動發(fā)送指令即可,CAN控制器能自動報(bào)文發(fā)送過程。報(bào)文發(fā)送可通過中斷和查詢兩種方式實(shí)現(xiàn),但是中斷方式效率高,采用較多。 (3)報(bào)文接收程序是從CAN控制器的接收緩沖器讀取節(jié)點(diǎn)需要的數(shù)據(jù)并保存。數(shù)據(jù)接收也可通過中斷和查詢兩種方式實(shí)現(xiàn),普遍采用效率高的中斷方式。 4 結(jié)論 本文所設(shè)計(jì)的驅(qū)動器冗余電路簡單,能較好地提高硬件可靠性,相對降低了成本,同時(shí),為雙總線運(yùn)行提供了更多的方式,使得編程更加靈活,可以提高總線通信利用率。除此之外,在報(bào)文發(fā)送出現(xiàn)沖突時(shí),還可以通過軟件轉(zhuǎn)移負(fù)荷,平衡雙總線的通信負(fù)荷。 參考文獻(xiàn) 1. 汪晉寬,馬淑華,吳雨川.工業(yè)網(wǎng)絡(luò)技術(shù)[M].北京:北京郵電大學(xué)出版社,2005.08. 2. 周江春.基于雙CAN總線船舶機(jī)艙自動化監(jiān)測系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].上海交通大學(xué)碩士學(xué)位論文.20040601. 3. 陳堯,孫漢旭,賈慶軒,等.空間機(jī)器人冷熱雙冗余CAN總線系統(tǒng)的研制[J].測控技術(shù)與儀器儀表,2008,(2):83-90. 4. 曹俊敏,孟祥群,唐厚君.單個(gè)CAN控制器的雙總線冗余網(wǎng)絡(luò)實(shí)現(xiàn)[J].微處理機(jī),2007(4):29-31. 5. 馬力偉.基于雙CAN冗余網(wǎng)絡(luò)的電力機(jī)車邏輯控制單元設(shè)計(jì)[D].合肥上業(yè)大學(xué)碩士學(xué)位論文.20050301. 作者:段正強(qiáng),梁述海 海軍工程大學(xué) 來源:電子技術(shù) 2009(12) |