丁 瑞,王浩楓,陳 偉,賀吉峰
(中國航天科工集團(tuán)第二研究院706所,北京100854)
數(shù)字信號處理器 (digital signal processors,DSP)是對信號實(shí)現(xiàn)實(shí)時處理的一類高性能CPU,其特點(diǎn)是具有很高的運(yùn)算速度,支持并行處理、快速中斷處理和I/O 操作[1],適合應(yīng)用于有高可靠性分系統(tǒng)間通信需要的一主控設(shè)備中。控制器局域網(wǎng)是由德國BOSCH 公司提出的一種串行通信協(xié)議。CAN 總線以其成本低、可靠性高、實(shí)時性、抗干擾能力強(qiáng)等特點(diǎn)在工業(yè)中得到廣泛的應(yīng)用[2-5]?;谄鋬?yōu)點(diǎn),主控計(jì)算機(jī)選用CAN 總線來實(shí)現(xiàn)系統(tǒng)間的高強(qiáng)度通信功能。雙冗余技術(shù)是提高可靠性的主要手段,為了充分保證該系統(tǒng)間通信的高可靠性,本文結(jié)合主控計(jì)算機(jī)的實(shí)際應(yīng)用環(huán)境,設(shè)計(jì)了一種基于CAN 總線的雙冗余通信機(jī)制。經(jīng)可靠性分析,采用該機(jī)制的通信系統(tǒng)可靠度得到更好的保證。測試實(shí)驗(yàn)結(jié)果表明,該主控計(jì)算機(jī)系統(tǒng)運(yùn)行穩(wěn)定,可靠性有顯著提高。
主控計(jì)算機(jī)系統(tǒng)需與2個設(shè)備進(jìn)行通信,其中,與設(shè)備2傳輸?shù)臄?shù)據(jù)量大,可靠性要求較高。系統(tǒng)設(shè)計(jì)時,共設(shè)計(jì)三路CAN 總線,第一路與設(shè)備1通信,另兩路與設(shè)備2通信,這兩路CAN 采用雙冗余通信機(jī)制,以保證與設(shè)備2通信的高可靠性。
本系統(tǒng)處理器選用TI的TMS320F2812芯片。TMS320F2812芯片本身帶有增強(qiáng)型CAN 模塊 (eCAN)[6],通過該模塊實(shí)現(xiàn)一路CAN 與設(shè)備1的通信。另外,還需兩路與設(shè)備2的通信,這兩路由CAN 控制器和驅(qū)動器來實(shí)現(xiàn),在兩路CAN控制器和驅(qū)動器之間加光耦進(jìn)行信號隔離,在兩路通信信號CANx_H 和CANx_L之間提供匹配電阻120 Ω,可通過開關(guān)選擇是否連接該匹配電阻。在CAN控制器實(shí)現(xiàn)的這兩路CAN 總線之間,通過雙冗余協(xié)議和驅(qū)動軟件實(shí)現(xiàn)故障發(fā)生時兩路之間切換。其原理如圖1所示。
圖1 CAN 通信的硬件原理
CAN 總線控制器選用NXP公司生產(chǎn)的SJA1000T,擴(kuò)展的64字節(jié)的FIFO[7],支持11位的BasicCAN 模式及29位的PeliCAN 模式,通信速率高達(dá)1 Mbits/s,擴(kuò)展溫度達(dá)到-40-+125℃,8位地址/數(shù)據(jù)復(fù)用總線靈活便捷。其電路設(shè)計(jì)如圖2所示。
圖2 控制器電路
目前使用比較多的典型的CAN 總線驅(qū)動器有:TJA1040,PCA82C250,SN65HVD230[8],而TJA1040 的總線引腳輸入電壓范圍是 (-27V-+40V),比PCA82C250的電壓范圍更寬,而且TJA1040 具備總線的EMC 優(yōu)化功能具有良好的對稱性,抗電磁干擾特性比PCA82C250提高20dB,同時TJA1040具備共模DC電壓的穩(wěn)壓功能,在節(jié)點(diǎn)不上電的情況下具備節(jié)點(diǎn)無源性等特點(diǎn),這些都是PCA82C250所不具備的,綜合以上幾個因素,本系統(tǒng)CAN接口驅(qū)動器選擇TJA1040。其電路設(shè)計(jì)如圖3所示。
圖3 驅(qū)動接口電路
隔離光耦使用GH137,該光耦具備高達(dá)10 M 的傳輸速率,前端輸入電流最小只需要5mA。其電路設(shè)計(jì)如圖4所示。
圖4 CAN 接口隔離電路
系統(tǒng)軟件包括應(yīng)用層、協(xié)議層和驅(qū)動層。驅(qū)動層軟件是軟件實(shí)現(xiàn)的重點(diǎn),它是上層應(yīng)用程序及協(xié)議層使用CAN總線進(jìn)行通信的支持軟件。協(xié)議層是軟件實(shí)現(xiàn)的關(guān)鍵,它是應(yīng)用層軟件和驅(qū)動層關(guān)聯(lián)起來的橋梁,應(yīng)用層程序需采用特定的CAN 通信協(xié)議,并通過調(diào)用驅(qū)動程序的接口進(jìn)行通信。雙冗余機(jī)制的實(shí)現(xiàn)是通過制定一種特定雙冗余協(xié)議,使應(yīng)用層軟件通過該協(xié)議管理和約束驅(qū)動層軟件接口的調(diào)用,從而實(shí)現(xiàn)CAN 總線2個通道的冗余容錯。CAN 通信驅(qū)動層軟件主要包括初始化模塊、幀發(fā)送模塊和幀接收模塊。本系統(tǒng)軟件層次關(guān)系如圖5所示。
圖5 系統(tǒng)軟件層次關(guān)系
2.2.1 雙冗余協(xié)議設(shè)計(jì)
CAN 總線雙冗余系統(tǒng)通過雙冗余協(xié)議進(jìn)行通信的約束和管理。雙冗余協(xié)議是以 “握手協(xié)議”為基礎(chǔ)進(jìn)行改進(jìn)的協(xié)議,其工作原理為:總線在進(jìn)行正式CAN 通信前,需先進(jìn)行建鏈,2個通道中首先建鏈成功的通道被確認(rèn)為最終通信通道,建鏈方法為 “三次握手”。協(xié)議規(guī)定主控計(jì)算機(jī)為主發(fā)方,發(fā)起握手請求幀,應(yīng)答方收到握手請求后,發(fā)回握手應(yīng)答幀,主方在規(guī)定時間內(nèi)收到握手應(yīng)答幀后,便完成一次握手,三次握手成功后,說明該鏈路正常,否則,自動更換到另一鏈路。CAN 總線的雙冗余通信流程如圖6所示。
2.2.2 幀結(jié)構(gòu)
由于CAN 總線報文結(jié)構(gòu)的復(fù)雜性,軟件實(shí)現(xiàn)時幀數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)至關(guān)重要。根據(jù)雙冗余設(shè)計(jì)思想需要將傳輸?shù)膱笪姆譃?種:一種為測試幀,用于建鏈;另一種為正式幀,用于正式報文傳輸。在幀結(jié)構(gòu)定義時,必須將2 種報文區(qū)分開來,而考慮到驅(qū)動軟件接口的統(tǒng)一性。將測試幀和正式幀用同一結(jié)構(gòu)形式表示,通過一個標(biāo)志位來區(qū)分不同幀。CAN 總線的幀信息一般包含有ID 號、幀類型、數(shù)據(jù)長度、傳輸方式、數(shù)據(jù)緩沖區(qū)。綜合考慮,CAN 總線幀的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)如下:
圖6 CAN 總線的雙冗余通信流程
2.2.3 DSP下定時器的使用
CAN 總線的雙冗余機(jī)制中,檢測通道是否正常,接收測試確認(rèn)幀是否超時是一個關(guān)鍵環(huán)節(jié)。DSP 下沒有超時機(jī)制,本系統(tǒng)利用定時器實(shí)現(xiàn)超時功能。F2812 芯片有3 個32位的CPU 定時器,其中,定時器1和定時器2被保留用作實(shí)時操作系統(tǒng)OS,CPU 定時器0可以供用戶使用[9]。定時器的工作原理為:工作開始將周期寄存器中的值裝入32位計(jì)數(shù)器寄存器。然后計(jì)數(shù)器寄存器以C28x的SYSCLKOUT 速率遞減。當(dāng)計(jì)數(shù)器減到0時,產(chǎn)生一個定時器中斷輸出信號。下面代碼祥釋了定時器0的使用方法。
定時器結(jié)構(gòu)定義如下:
2.2.4 中斷管理
定時器和CAN 總線報文收發(fā)都會用到中斷,中斷管理和使用是系統(tǒng)實(shí)現(xiàn)的重點(diǎn)之一。
DSP下的中斷分為外設(shè)級、外設(shè)中斷擴(kuò)展模塊 (PIE)級和CPU 級[10]。2812芯片不但本身帶有豐富的片內(nèi)外設(shè),還可以外擴(kuò)外設(shè)。每個外設(shè)都可以產(chǎn)生一個或多個中斷請求,因此外設(shè)級中斷請求可能非常頻繁,CPU 沒有能力去處理所有外設(shè)中斷請求,需按照一定優(yōu)先級規(guī)則對各種外設(shè)中斷請求做出仲裁。PIE正是外設(shè)中斷優(yōu)先級的制定者,它按向量表對外設(shè)中斷設(shè)置優(yōu)先級別。
電路設(shè)計(jì)時,外擴(kuò)的兩路CAN 中斷分別使用外部可屏蔽中斷XINT1和XINT2,采用下降沿觸發(fā)。其響應(yīng)中斷的過程為:中斷服務(wù)子程序掛載到中斷向量表上后,應(yīng)當(dāng)置位PIE中斷使能寄存器PIEIER1的第4位和第5位,同時,CPU 級中斷標(biāo)志寄存器IER 的第1位被置位。當(dāng)外部中斷請求到來時,首先向PIE 控制器發(fā)出請求,PIE 級中斷標(biāo)志位寄存器PIEIFR1的第4位或第5位被置位。當(dāng)PIE 檢測到一個未被處理的中斷,PIE 中斷應(yīng)答寄存器PIEACK1的相應(yīng)位也會被置位,PIE 將向CPU 發(fā)出中斷請求。同樣,CPU 級有中斷標(biāo)志寄存器IFR,若IFR 的第1位被置位,CPU 響應(yīng)中斷,處理中斷服務(wù)子程序,同時,標(biāo)志寄存器IFR 和PIEIFR1的相應(yīng)標(biāo)志位被清除。
以上函數(shù)反映了本系統(tǒng)運(yùn)用雙冗余機(jī)制的可靠性量化指標(biāo),可總結(jié)為:
(1)只要有一個通道通信就能保證系統(tǒng)通信具有較高的可靠度;
(2)當(dāng)某一個通道的可靠性急劇下降時,系統(tǒng)通信的可靠性變化不大,即系統(tǒng)的可靠度具有一定的穩(wěn)定性。
綜上分析,系統(tǒng)采用該雙冗余通信,與單通道通信相比大大提高了其可靠性。以主控計(jì)算機(jī)系統(tǒng)為環(huán)境進(jìn)行了測試,可以獲得99.92%的可靠度。
針對系統(tǒng)間高強(qiáng)度CAN 通信的高可靠性需求,提出了一種DSP下基于CAN 總線的雙冗余通信機(jī)制,并應(yīng)用于主控計(jì)算機(jī)系統(tǒng)。結(jié)合主控計(jì)算機(jī)系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn),詳細(xì)闡述了該機(jī)制軟硬件的設(shè)計(jì)和實(shí)現(xiàn)過程,著重剖析了雙冗余協(xié)議、幀結(jié)構(gòu)、定時器和中斷機(jī)制等幾個實(shí)現(xiàn)的重點(diǎn)和難點(diǎn),最后分析了CAN 總線雙冗余通信系統(tǒng)的可靠性。以主控計(jì)算機(jī)系統(tǒng)為環(huán)境,進(jìn)行了測試實(shí)驗(yàn)。系統(tǒng)測試結(jié)果表明,使用該通信機(jī)制,系統(tǒng)間通信的可靠性有明顯地提高。
[1]CHEN Yuanlin,TANG Xinyi.USB communication system based on DSP and VDK core [J].Computer Engineering,2010,31 (3):49-51 (in Chinese).[陳元林,湯心溢.基于DSP和VDK 內(nèi)核的USB通信系統(tǒng) [J].計(jì)算機(jī)工程,2009,31 (3):49-51.]
[2]SHU Genrong.Research of new information display system based on CAN network control[D].Hefei:Mechanical and Electronic Engineering,2010 (in Chinese). [束根榮.基于CAN 網(wǎng)絡(luò)控制的新型信息顯示系統(tǒng)研究 [D].合肥:中國科學(xué)技術(shù)大學(xué),2010.]
[3]WAN Shanming.TMS320F281XDSP principle and application example[M].Beijing:Beijing University of Aeronautics and Astronautics Publishing House,2007 (in Chinese).[萬山明.TMS320F281XDSP原理及應(yīng)用實(shí)例 [M].北京:北京航空航天大學(xué)出版社,2007.]
[4]XU Li,WANG Qin,SHI Shaobo.Research and implementation of IEEE 802.11areceiver baseband processing based on heterogeneous multi-core DSP [J].Application Research of Computers,2012,29 (1):241-245 (in Chinese). [徐力,王沁,史少波.一種基于異構(gòu)多核DSP的IEEE802.11a接收端基帶處理的研究與實(shí)現(xiàn) [J].計(jì)算機(jī)應(yīng)用研究,2012,29(1):241-245.]
[5]SUO Wenping,AN Jianfeng,F(xiàn)AN Xiaoya.Reliability of interrupt mechanism in SoC [J].China Integrated Circuit,2007,16 (98):63-66 (in Chinese). [索文平,安建峰,樊曉椏.片上系統(tǒng)中斷機(jī)制的可靠性設(shè)計(jì) [J].中國集成電路,2007,16 (98):63-66.]
[6]SUN Yuanmin,YIN Lixin,YANG Shutao.High-speed data acquisition and processing system based on TMS320F2812 [J].Computer Engineering,2009,35 (2):242-244 (in Chinese).[孫元敏,尹立新,楊書濤.基于TMS320F2812的高速數(shù)據(jù)采集處理系統(tǒng) [J].計(jì)算機(jī)工程,2009,35 (2):242-244.]
[7]WANG Liming,SHAO Ying,WANG Mingzhe,et al.Research of improving the dynamic scheduling algorithm in the CAN bus control networks [J].Journal of Systems Engineering and Electronics,2008,19 (6):1250-1257.
[8]Ren Jun,Li Chun-Wen,Zhao De-Zong.CAN-based synchronized motion control for induction motors [J].International Journal of Automation &Computing,2009 (1):55-61.
[9]YUE Kui,LIU Shaojun,HUANG Daoping.Design and application of VHDL read-write on SJA1000internal register[J].SJA1000Computer & Digital Engineering,2009,37 (10):175-178 (in Chinese).[岳奎,劉少君,黃道平.內(nèi)寄存器的VHDL語言讀寫設(shè)計(jì)與應(yīng)用 [J].計(jì)算機(jī)與數(shù)字工程,2009,37 (10):175-178.]
[10]JIA Guoguang,ZENG Yu,LI Kenli,et al.Algorithm of real-time DSP application based on CAN bus[J].Computer Engineering,2009,35 (6):239-241 (in Chinese). [賈國光,曾鈺,李肯立,等.基于CAN 總線的實(shí)時DSP 應(yīng)用算法 [J].計(jì)算機(jī)工程,2009,35 (6):239-241.]