【摘要】CAN(Controller Area Network)總線是一種現(xiàn)場(chǎng)總線,由于其具有可靠性高、抗干擾能力強(qiáng)和實(shí)時(shí)性強(qiáng)的特點(diǎn),而被廣泛應(yīng)用于工業(yè)控制領(lǐng)域。本文介紹了一種基于SJA1000的高可靠CAN總線智能單元的設(shè)計(jì)方案。該總線智能單元可以獨(dú)立或者配合AT96總線和主控制器協(xié)同工作,易于系統(tǒng)擴(kuò)展、優(yōu)化和改進(jìn),利用微處理器完成數(shù)據(jù)發(fā)送/接受和錯(cuò)誤診斷處理,降低主控制器的信息處理負(fù)擔(dān)。測(cè)試表明,該高可靠CAN總線智能單元的設(shè)計(jì)是可行的。
【關(guān)鍵詞】高可靠;CAN總線; 智能單元
ABSTRACT:CAN bus is a field bus which is widely used in industrial control field because of its advantages in high reliability,strong anti-jamming and high real-time characteristic. This paper introduces a design of high-reliability intelligent CAN communication unit base on SJA1000. The intelligent CAN unit may work independently or with the supervisor computer by AT96 bus. It is easy for system’s expansion,optimization and amelioration. The unit completes the data transferring/receiving and the error diagnosing by the microprocessor,thus decreases the load factor of the supervisor computer. Experimental results show that the design of intelligent and high-reliability CAN communication unit is effective.
KEY WORDS:high-reliability;CAN bus;intelligent unit
0.引言
隨著核動(dòng)力裝置儀控系統(tǒng)數(shù)字化水平的不斷提高,儀控系統(tǒng)設(shè)備內(nèi)部、設(shè)備之間以及設(shè)備與現(xiàn)場(chǎng)儀表之間信息交換都將采用網(wǎng)絡(luò)通訊技術(shù),因此網(wǎng)絡(luò)的安全性、可靠性都對(duì)核動(dòng)力儀控系統(tǒng)正常完成其設(shè)計(jì)功能具有非常重要的意義。CAN(Controller Area Network)總線,是一種可以有效支持分布式實(shí)時(shí)控制的串行通訊網(wǎng)絡(luò),由于其具有可靠性高、抗干擾能力強(qiáng)和實(shí)時(shí)性強(qiáng)的特點(diǎn)而在工業(yè)控制、汽車電子控制、船舶運(yùn)輸和航空航天領(lǐng)域得到了廣泛的應(yīng)用[1]。因此,CAN總線是適合反應(yīng)堆儀控系統(tǒng)應(yīng)用的一種總線協(xié)議,需要研制一種應(yīng)用于核動(dòng)力裝置儀控系統(tǒng)中的高可靠CAN總線智能單元。
1.CAN總線簡(jiǎn)介
1.1 CAN總線特點(diǎn)
具有統(tǒng)一國(guó)際標(biāo)準(zhǔn)ISO11898定義的CAN(Co-ntroller Area Network)總線是全數(shù)字式現(xiàn)場(chǎng)控制設(shè)備互連總線,能有效支持分布式控制和實(shí)時(shí)控制的串行通訊網(wǎng)絡(luò)。與其它總線網(wǎng)絡(luò)不同,在CAN總線通訊協(xié)議中廢除了傳統(tǒng)的站地址編碼,而是支持基于數(shù)據(jù)的工作方式,因此CAN總線通訊面向的是數(shù)據(jù)而不是節(jié)點(diǎn),加入或者撤銷節(jié)點(diǎn)都不會(huì)影響通訊網(wǎng)絡(luò)的正常工作[2]。其主要特點(diǎn)如下:
1)多主工作方式:網(wǎng)絡(luò)上的任意節(jié)點(diǎn)均可在任意時(shí)刻主動(dòng)向其它節(jié)點(diǎn)發(fā)送信息,而不分主從,通訊方式靈活;
2)實(shí)時(shí)性:采用短幀結(jié)構(gòu),傳輸時(shí)間短,受干擾概率低;網(wǎng)絡(luò)上的節(jié)點(diǎn)信息可被分成不同的優(yōu)先級(jí),滿足不同的實(shí)時(shí)要求,高優(yōu)先級(jí)的數(shù)據(jù)最快可在134us內(nèi)完成傳輸;
3)可靠性:采用非破壞性總線仲裁技術(shù),多個(gè)節(jié)點(diǎn)同時(shí)向總線發(fā)送數(shù)據(jù)時(shí),優(yōu)先級(jí)較低的節(jié)點(diǎn)會(huì)主動(dòng)退出發(fā)送,高優(yōu)先級(jí)節(jié)點(diǎn)可不受影響的繼續(xù)傳輸數(shù)據(jù),大大節(jié)省了總線沖突仲裁時(shí)間。
1.2 CAN分層結(jié)構(gòu)
CAN按照ISO/OSI標(biāo)準(zhǔn)模型劃分為兩層:數(shù)據(jù)鏈路層(包括邏輯鏈路控制子層LCC和媒體訪問控制子層MAC)和物理層。CAN的分層結(jié)構(gòu)如圖1所示[2]。
邏輯鏈路控制子層(LCC)的功能是為數(shù)據(jù)傳輸和遠(yuǎn)程數(shù)據(jù)請(qǐng)求提供服務(wù),確認(rèn)由LCC子層接受的報(bào)文實(shí)際已被接受,并為恢復(fù)管理和通知超載提供信息。
媒體訪問控制子層(MAC)是CAN協(xié)議的核心,其功能是傳送規(guī)則,即控制幀結(jié)構(gòu)、執(zhí)行仲裁、錯(cuò)誤檢測(cè)、出錯(cuò)標(biāo)定和故障界定。MAC子層也要確定當(dāng)開始一次新的傳送時(shí),總線是否開放或者是否馬上開始接受。
物理層的作用是在不同節(jié)點(diǎn)之間根據(jù)所有的電氣屬性進(jìn)行位的實(shí)際傳輸,同一網(wǎng)絡(luò)的物理層對(duì)于所有的節(jié)點(diǎn)當(dāng)然是相同的。盡管如此,在選擇物理層方面還是很自由的。
2.CAN協(xié)議控制器SJA1000
SJA1000是一種獨(dú)立CAN控制器,用于汽車和一般工業(yè)環(huán)境中的局域網(wǎng)絡(luò)控制,具有BasicCAN和PeliCAN兩種工作模式,其中PeliCAN支持CAN2.0B協(xié)議[3]。SJA1000用來完成CAN協(xié)議所規(guī)定的數(shù)據(jù)鏈路層和物理層的所有功能,是一種I/O基于內(nèi)存編址的微控制器,微處理器通過訪問外部存儲(chǔ)器的方式來訪問SJA1000內(nèi)部控制寄存器和數(shù)據(jù)緩沖區(qū)。本設(shè)計(jì)采用PeliCAN模式,支持對(duì)每個(gè)CAN總線錯(cuò)誤和具體控制位控制的仲裁丟失中斷,支持只聽模式和熱插拔,可擴(kuò)展驗(yàn)收濾波器,并且具有自收發(fā)功能。SJA1000內(nèi)部接受FIFO可以存儲(chǔ)高達(dá)21個(gè)報(bào)文,延長(zhǎng)了最大中斷服務(wù)時(shí)間,避免數(shù)據(jù)超載。
3.CAN總線智能單元設(shè)計(jì)
3.1 設(shè)計(jì)要求
3.3.2 雙口RAM和AT96總線
微處理器通過雙口RAM及AT96總線與主控制器進(jìn)行數(shù)據(jù)交換,雙口RAM作為微處理器和主控制器的共用擴(kuò)展存儲(chǔ)空間,其左、右端口通過數(shù)據(jù)/地址總線分別與微處理器和主控制器相連,微處理器和主控制器通過CPLD進(jìn)行地址譯碼產(chǎn)生雙口RAM左、右端口控制信號(hào),從而實(shí)現(xiàn)雙口RAM的讀寫操作。
由于微處理器與主控制器對(duì)雙口RAM的讀寫速度無法完全匹配,因此存在以下兩種情況:1)微處理器將CAN總線節(jié)點(diǎn)接收到的數(shù)據(jù)包寫入RAM固定地址之后,該數(shù)據(jù)包還未被主控制器讀取就被微處理器新接收到的數(shù)據(jù)包覆蓋;2)主控制器將需要發(fā)送的數(shù)據(jù)包寫入RAM固定地址之后,微處理器還未將該數(shù)據(jù)包讀出就被主控制器用新數(shù)據(jù)包覆蓋。
為避免上述數(shù)據(jù)包丟失的情況發(fā)生,CAN總線通訊單元AT96總線數(shù)據(jù)交換采用環(huán)形緩沖區(qū)的方式。雙口RAM具有4k的地址空間,微處理器和主控制器通過雙口RAM進(jìn)行兩個(gè)CAN總線節(jié)點(diǎn)數(shù)據(jù)包的交換以及控制信息的交換,因此將雙口RAM的4k地址空間劃分為四個(gè)部分,每個(gè)部分1k空間,即:CAN節(jié)點(diǎn)1數(shù)據(jù)發(fā)送區(qū)、CAN節(jié)點(diǎn)1數(shù)據(jù)接收區(qū)、CAN節(jié)點(diǎn)2數(shù)據(jù)發(fā)送區(qū)以及CAN節(jié)點(diǎn)2數(shù)據(jù)接收區(qū)。每個(gè)區(qū)域的前128地址空間作為控制信息交互區(qū),主要作為CAN總線節(jié)點(diǎn)配置信息以及數(shù)據(jù)環(huán)形緩沖區(qū)控制信息的交互;每部分的其余空間作為數(shù)據(jù)環(huán)形緩沖區(qū),可以最多存放81個(gè)標(biāo)準(zhǔn)格式的數(shù)據(jù)幀。
3.3.3 SJA1000和CAN節(jié)點(diǎn)
微處理器通過CAN協(xié)議控制器SJA1000進(jìn)行CAN總線節(jié)點(diǎn)數(shù)據(jù)的接收和發(fā)送。SJA1000的復(fù)用地址/數(shù)據(jù)總線通過CPLD進(jìn)行地址鎖存之后與微處理器的非復(fù)用地址/數(shù)據(jù)總線相連,將其作為微處理器外部存儲(chǔ)器映射的I/O器件。CPLD通過微處理器地址信號(hào)A12~A15進(jìn)行判斷產(chǎn)生SJA1000的片選信號(hào),只有在對(duì)SJA1000內(nèi)部寄存器進(jìn)行操作時(shí)才激活相應(yīng)的器件。當(dāng)CAN總線節(jié)點(diǎn)接收/發(fā)送數(shù)據(jù)或者產(chǎn)生錯(cuò)誤時(shí),將產(chǎn)生中斷信號(hào),微處理器以最高優(yōu)先級(jí)響應(yīng)該中斷并進(jìn)行相應(yīng)的中斷判斷和處理。
4.2 環(huán)境試驗(yàn)
環(huán)境試驗(yàn)是為了考核CAN總線智能單元在典型工作環(huán)境下是否能夠正常工作。試驗(yàn)在環(huán)境試驗(yàn)箱內(nèi)進(jìn)行,分別進(jìn)行了高溫試驗(yàn)、低溫試驗(yàn)和交變濕熱試驗(yàn)。
在高溫試驗(yàn)和低溫試驗(yàn)中,分別以規(guī)定速率的溫度變化將環(huán)境溫度調(diào)整至設(shè)定溫度(高溫為60℃,低溫為0℃),保溫8小時(shí)后進(jìn)行功能檢測(cè);在交變濕熱試驗(yàn)中,進(jìn)行以升溫恒溫、高溫高濕、降溫恒濕、常溫高濕等四個(gè)階段為一個(gè)周期共24小時(shí)的試驗(yàn),并在每個(gè)階段結(jié)束前進(jìn)行功能測(cè)試,共循環(huán)兩個(gè)周期,周期結(jié)束后待溫濕度以規(guī)定速率恢復(fù)到室溫條件并穩(wěn)定后進(jìn)行功能測(cè)試。
通過環(huán)境試驗(yàn)表明CAN總線智能單元高溫、低溫和交變濕熱試驗(yàn)合格,滿足使用環(huán)境的要求。
4.3 電磁兼容性試驗(yàn)
為驗(yàn)證CAN總線智能單元的電磁兼容性,將CAN總線智能單元應(yīng)用于系統(tǒng)樣機(jī)中進(jìn)行了電磁兼容性試驗(yàn),試驗(yàn)結(jié)果表明,CAN總線智能單元的設(shè)計(jì)滿足電磁兼容性要求。
5.技術(shù)特點(diǎn)
綜上所述,基于SJA1000的高可靠CAN總線智能單元具有以下技術(shù)特點(diǎn):
1)智能單元在與主控制器協(xié)同工作時(shí),微處理器承擔(dān)了CAN總線數(shù)據(jù)發(fā)送、接收以及錯(cuò)誤處理等工作,減輕了主控制器的任務(wù)負(fù)擔(dān),減小了主控制器軟件的復(fù)雜程度,同時(shí),微處理器和主控制器通過雙口RAM進(jìn)行數(shù)據(jù)交換以及微處理器訪問SJA1000控制器,均采用外部存儲(chǔ)器直接訪問的方式,占用CPU時(shí)間少,有利于設(shè)備或系統(tǒng)的整體實(shí)時(shí)性和可靠性;
2)通過硬件電路設(shè)計(jì)如數(shù)字器件空置端口的處理、集成器件供電端去耦、以及數(shù)字地與模擬地的處理,提高CAN總線智能單元的電磁電容性能以及硬件抗干擾能力;
3)通過軟件的處理例如軟件看門狗、錯(cuò)誤中斷處理程序等,提高智能單元的軟件抗干擾能力,降低節(jié)點(diǎn)自動(dòng)關(guān)閉退出網(wǎng)絡(luò)的風(fēng)險(xiǎn);
4)智能單元內(nèi)部?jī)蓚€(gè)微處理器之間設(shè)計(jì)有握手信號(hào),因此智能單元內(nèi)部四個(gè)CAN總線節(jié)點(diǎn)之間可以互為備用,也可作為冗余通道獨(dú)立工作,工作方式比較靈活,同時(shí)也大大提高了系統(tǒng)總線通訊網(wǎng)絡(luò)的安全性;
5)微處理器和主控制器之間的數(shù)據(jù)交換采用環(huán)形緩沖區(qū)的方式進(jìn)行,大大降低了總線數(shù)據(jù)丟失的可能,同時(shí)在CAN總線數(shù)據(jù)ID設(shè)計(jì)中隱含校驗(yàn)設(shè)計(jì),主控制器通過該編碼保證數(shù)據(jù)包的完整正確接收。
6)通過軟硬件設(shè)計(jì)實(shí)現(xiàn)了CAN總線智能單元的自診斷功能,能夠及時(shí)診斷單元的硬件錯(cuò)誤并進(jìn)行相應(yīng)處理,提高系統(tǒng)整體的可靠性。
6.結(jié)束語
本文設(shè)計(jì)的基于SJA1000的高可靠CAN總線智能單元易于擴(kuò)展和改進(jìn),能夠根據(jù)軟件的設(shè)計(jì)完成不同的系統(tǒng)功能要求,各個(gè)CAN總線節(jié)點(diǎn)之間可以互為備用,也可作為冗余節(jié)點(diǎn)獨(dú)立工作,該單元通過微處理器完成數(shù)據(jù)發(fā)送/接受、總線錯(cuò)誤處理,降低了主控制器的信息處理負(fù)擔(dān)以及CAN節(jié)點(diǎn)錯(cuò)誤關(guān)閉的風(fēng)險(xiǎn),并采用環(huán)形緩沖區(qū)的方式進(jìn)行總線數(shù)據(jù)交換,有利于提高數(shù)據(jù)的實(shí)時(shí)性和可靠性。該高可靠CAN總線智能單元適用于對(duì)安全性、可靠性要求高的系統(tǒng),本設(shè)計(jì)也為儀控系統(tǒng)平臺(tái)的總線結(jié)構(gòu)設(shè)計(jì)奠定了堅(jiān)實(shí)的基礎(chǔ),為未來其它儀控系統(tǒng)網(wǎng)絡(luò)設(shè)計(jì)提供了技術(shù)參考。
參考文獻(xiàn)
[1]饒運(yùn)濤,鄒繼軍,鄭勇蕓. 現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)[M]. 北京:北京航空航天大學(xué)出版社,2003
[2]杜尚豐,曹曉鐘,徐津.CAN總線測(cè)控技術(shù)及其應(yīng)用[M]. 北京:電子工業(yè)出版社,2006
[3]廣州周立功有限公司. SJA1000獨(dú)立CAN控制器[OL]. 2009.08
[4]潘琢金譯. C8051F040/1/2/3/4/5/6/7混合信號(hào)ISP FLASH微控制器數(shù)據(jù)手冊(cè)[OL]. 2004.12
[5]廣州周立功有限公司. SJA1000應(yīng)用指南[OL]. 2009.08
作者簡(jiǎn)介:
趙陽(1982—),男,2007年畢業(yè)于上海交通大學(xué)精密儀器及機(jī)械專業(yè),碩士,工程師,主要從事反應(yīng)堆熱工測(cè)量、高可靠性網(wǎng)絡(luò)等科研與工程工作。
呂鑫(1980—),男,2005年畢業(yè)于中國(guó)科學(xué)技術(shù)大學(xué)檢測(cè)技術(shù)與自動(dòng)化裝置專業(yè),碩士,高級(jí)工程師,主要從事反應(yīng)堆熱工測(cè)量及相關(guān)設(shè)備研制等科研與工程工作。
朱毖微(1984—),男,2010年畢業(yè)于西北工業(yè)大學(xué)導(dǎo)航制導(dǎo)與控制專業(yè),碩士,工程師,主要從事反應(yīng)堆熱工測(cè)量及相關(guān)設(shè)備研制等科研與工程工作。
吳志強(qiáng)(1974—),男,1997年畢業(yè)于西南交通大學(xué)自動(dòng)控制專業(yè),學(xué)士,研究員級(jí)高級(jí)工程師,主要從事安全級(jí)儀控系統(tǒng)總體研究設(shè)計(jì)工作。