国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于PXI總線高可靠CAN適配卡的設(shè)計與實現(xiàn)

2015-06-08 04:26甄國涌宋全偉劉東海
儀表技術(shù)與傳感器 2015年12期
關(guān)鍵詞:寄存器上位總線

甄國涌,宋全偉,劉東海

(中北大學(xué),電子測試技術(shù)國家重點實驗室,山西太原 030051)

?

基于PXI總線高可靠CAN適配卡的設(shè)計與實現(xiàn)

甄國涌,宋全偉,劉東海

(中北大學(xué),電子測試技術(shù)國家重點實驗室,山西太原 030051)

根據(jù)某測試任務(wù)的要求,對CAN傳輸?shù)目煽啃赃M行調(diào)研和分析,設(shè)計了一種基于PXI總線的CAN適配卡。以PCI9054為“橋接”芯片,以FPGA為核心控制器實現(xiàn)上位機與CAN接口的通信。以C8051F060作為CAN總線的核心控制器實現(xiàn)CAN數(shù)據(jù)收發(fā)、緩存及編幀等功能。該適配卡可靠性高,已穩(wěn)定工作于某航天測控系統(tǒng)。

CAN適配卡;PXI總線;FPGA;C8051F060

0 引言

CAN總線不但在汽車行業(yè)中應(yīng)用廣泛,而且在工業(yè)控制領(lǐng)域、航天航空領(lǐng)域中得到廣泛應(yīng)用[1]。在航天測試系統(tǒng)及某些工業(yè)控制過程中需要計算機作為上位機來監(jiān)控系統(tǒng),因此需要一個接口來實現(xiàn)底層CAN網(wǎng)絡(luò)與上位機的通信[2]。PXI總線與PCI兼容,其高速的傳輸速率、開放的軟件架構(gòu)以及價格優(yōu)勢使之成為當今自動化應(yīng)用和測試的標準臺。因此本文根據(jù)某航天測試任務(wù)的要求設(shè)計了一種基于PXI總線的CAN適配卡。

在航天測控領(lǐng)域中,可靠性是第一位的。然而很多測控系統(tǒng)工作現(xiàn)場條件非常惡劣,對系統(tǒng)的可靠性提出更高的要求。所以本設(shè)計的關(guān)鍵技術(shù)在于可靠性,從CAN總線利用率、系統(tǒng)級冗余及容錯等方面提高適配卡的可靠性。

1 系統(tǒng)總成

適配卡通過PCI9054“橋接”芯片,實現(xiàn)上位機與CAN接口的通信。采用C8051F060單片機內(nèi)部集成的CAN核實現(xiàn)數(shù)據(jù)鏈路層,通過CAN收發(fā)器TJA1040實現(xiàn)物理層協(xié)議。適配卡設(shè)計框圖如圖1所示。FPGA通過背板總線接口接收主機卡發(fā)出的指令,再經(jīng)過CAN總線接口轉(zhuǎn)發(fā)給各個現(xiàn)場總線CAN節(jié)點;另外,通過CAN總線接口接收各個現(xiàn)場總線CAN節(jié)點數(shù)據(jù),再通過背板總線接口上傳給上位機。為了提高適配卡工作的可靠性,采用CAN總線冗余設(shè)計,即當一路CAN節(jié)點發(fā)生錯誤停止工作后,系統(tǒng)會識別故障并自動切換到另一路CAN節(jié)點繼續(xù)工作。

圖1 系統(tǒng)結(jié)構(gòu)框圖

2 CAN接口硬件電路設(shè)計

CAN協(xié)議控制器采用C8051F060單片機內(nèi)部集成的CAN控制器。CAN控制器包含1個CAN核、消息RAM(獨立于CIP-51的RAM)、消息處理狀態(tài)機和控制寄存器[3]。CAN接口硬件電路如圖2所示。

CAN協(xié)議控制器和物理總線之間接口采用TJA1040。120 Ω電阻R137為提供總線接口阻抗匹配,防止信號反射。電容C39、C41用于濾除CAN總線上高頻干擾。二極管D4、D5會在總線電壓異常時將電平鉗位在安全電壓范圍內(nèi),防止損壞TJA1040。接口部分采用10 MB/s高速光電耦合器GH-0631進行電氣隔離,實現(xiàn)了前后電路互不干擾,提高了接口的可靠性。當單片機I/O輸出低電平時,光耦導(dǎo)通輸出高電平。

圖2 CAN接口硬件電路

3 C8051F060單片機工作流程

C8051F060分別將IF1接口寄存器配和IF2接口寄存器配置為發(fā)送和接收。使用IF1仲裁寄存器和IF1掩碼寄存器將初始化為ID1。首先,上位機發(fā)出接收CAN總線數(shù)據(jù)指令,由FPGA給單片機發(fā)送中斷,單片機收到中斷后啟動CAN控制器,發(fā)送分布式網(wǎng)絡(luò)各個子節(jié)點的點名指令,待各節(jié)點收到指令將CAN數(shù)據(jù)發(fā)送過來后將其緩存、編幀并通過SPI傳輸至FPGA。為避免由于CAN總線受到外部干擾后產(chǎn)生錯誤中斷,致使CAN中斷函數(shù)中成功接收數(shù)據(jù)中斷標識位rec_pin不變,無法下發(fā)點名采集命令致使適配卡在實際應(yīng)用過程出現(xiàn)無法上傳數(shù)據(jù)情況。使用定時器1中斷在發(fā)送點名指令后開始計數(shù),若進入錯誤中斷,即在相應(yīng)的時間內(nèi)未成功接收CAN數(shù)據(jù),則定時器1溢出觸發(fā)中斷,將rec_pin置位,程序跳出錯誤中斷繼續(xù)執(zhí)行。C8051F060單片機流程圖如圖3所示。

圖3 C8051F060工作流程

4 PXI接口設(shè)計

適配卡通過PCI9054實現(xiàn)FPGA與PXI接口之間的通信。PCI9054符合PCI R2.2的規(guī)范,是具有32位數(shù)據(jù)帶寬,時鐘頻率為33 MHz的總線主控接口控制器;與之相關(guān)的幾個主要的應(yīng)用信號分別為:ADS#、Blast #、LW/R#、Ready#[3]。

PXI接口讀寫操作流程圖如圖4所示。當上位機沒有下發(fā)任何指令時,ADS#無效,處于等待狀態(tài);當有指令下發(fā)時,ADS#拉低,開始數(shù)據(jù)傳輸。當Blast#有效時,開始單周期讀寫。在單周期訪問階段,上位機下發(fā)約定好的開始傳輸指令,F(xiàn)PGA收到指令后等待。若在下個周期ADS#仍然有效,將指令通過地址總線傳輸至上位機,上位機進行判斷,若指令與下發(fā)的一致,說明指令成功下發(fā),上位機軟件操作界面提醒指令下發(fā)成功,否則提醒下發(fā)失敗。然后進入突發(fā)訪問周期,F(xiàn)PGA將FIFO半滿標識寫入固定的地址中,上位機對此標識進行判斷,若有效則上位機突發(fā)獲取2K的FIFO數(shù)據(jù)。否則,不能突發(fā)獲取2K的FIFO數(shù)據(jù)。上位機會多次判斷約定好地址中的標識以判斷數(shù)據(jù)是否準備好,如果超過約定的時間,數(shù)據(jù)準備好標識仍無效,則退出當前操作[4]。

圖4 讀寫操作流程圖

5 FPGA與C8051F060之間的SPI通信

C8051F060的CAN控制器接收到的數(shù)據(jù)通過SPI總線傳輸給FPGA。通過配置SII0CFG配置寄存器和SPI0CN控制寄存器將SPI配置為三線主模式,通過SPI0CKR寄存器將位速率配置為1 Mbps。位速率fsck由式(1)配置,其中SYSCLK為系統(tǒng)時鐘,SPICKR為時鐘速率寄存器。

(1)

由單片機發(fā)送時鐘sck給FPGA,通過mosi引腳將SPI數(shù)據(jù)傳輸給FPGA緩存。利用ISim對FPGA與C8051F060之間的通信進行仿真,波形如圖5所示。可以看出FPGA在sck上升沿鎖取mosi線上數(shù)據(jù),并依次緩存。

圖5 SPI通信仿真圖

6 關(guān)鍵技術(shù)及可靠性保證

6.1 總線利用率的提高

CAN總線最高速率為1 Mbps(此時通信距離最長為40 m)。在某些數(shù)據(jù)量大、總線速率要求高的應(yīng)用中,要盡可能提高總線利用率來降低總線負荷,緩解信息流量較大時給總線帶來的壓力,從而提高適配卡的穩(wěn)定性。設(shè)計中通過改變C8051F060單片機內(nèi)集成CAN控制器消息對象數(shù)量來提高總線傳輸效率。分別采用1個、2個、4個、8個消息對象在位速率為1 Mbps下發(fā)送352Byte(44包)數(shù)據(jù)量對比總線占有時間,用示波器抓取CAN總線數(shù)據(jù)波形如圖6、圖7所示。

(a)1個消息對象總線占用情況

(b)2個消息對象總線占用情況圖6 1個、2個消息對象總線占用情況

(a)4個消息對象總線占用情況

(b)8個消息對象總線占用情況圖7 4個、8個消息對象數(shù)總線利用率波形圖

通過實驗截圖得出表1。由表1可以發(fā)現(xiàn),增加CAN控制器消息對象數(shù)量可明顯減小CAN數(shù)據(jù)包間隔,降低總線占有時間,提高總線利用率。這對于增加CAN分布式網(wǎng)絡(luò)節(jié)點個數(shù)特別關(guān)鍵,對適配卡傳輸性能和可靠性的提升也至關(guān)重要。

表1 不同消息對象數(shù)總線數(shù)據(jù)占用時間

6.2 錯誤處理機制

為了提高CAN適配卡的可靠性,適配卡需要具有容錯機制。適配卡工作過程中可能會遇到多種干擾而使CAN總線發(fā)生錯誤,一個CAN總線節(jié)點出錯后可能處于3種的一種:主動錯誤狀態(tài)(Error Active),被動錯誤狀態(tài)(Error Pasitive)和總線關(guān)閉狀態(tài)(Bus off)。當發(fā)送錯誤計數(shù)器值大于或等于256時為最嚴重的總線關(guān)閉錯誤,將導(dǎo)致節(jié)點關(guān)閉,脫離總線[5]。為了使發(fā)生錯誤的CAN節(jié)點能自動重新掛接到總線上繼續(xù)工作,對處于總線關(guān)閉的節(jié)點在CAN錯誤中斷處理程序中重新進行初始化,復(fù)位CAN控制器,發(fā)送錯誤計數(shù)器計數(shù)清零[6]。下面給出了CAN控制器初始化程序:

void ISR_can(void) interrupt 19

{

unsigned char SFRPAGE_save = SFRPAGE;

unsigned char status;

unsigned char newdata;

SFRPAGE=CAN0_PAGE;

status=CAN0STA;

CAN0ADR = NEWDAT1;

newdata = CAN0DATL;

if((status & 0x10) != 0)

{

CAN0STA = (CAN0STA&0xEF)|0x07;

}

if((status & 0x08) != 0)

{

CAN0STA = (CAN0STA&0xF7)|0x07;

}

if(((status&0x07)!=0)&&((status&0x07) != 7))// 錯誤中斷

{

CAN0STA = CAN0STA|0x07;

}

if ((status&0xE0)!=0)//錯誤計數(shù)器只值大于96 或CAN總線處于總線關(guān)閉狀態(tài)

{

start_CAN();//CAN控制器復(fù)位初始化

CAN0STA = CAN0STA|0x07;

delayMs(10);//延時函數(shù)

}

SFRPAGE = SFRPAGE_save;

}

6.3 冗余設(shè)計

冗余是提高可靠性的一個較好的方法[7]。適配卡采用系統(tǒng)級的熱冗余設(shè)計,使用2套獨立的CAN總線,每套總線有完整的總線電纜、CAN控制器和CAN驅(qū)動器,實現(xiàn)了物理介質(zhì)、物理層及數(shù)據(jù)鏈路層的全面冗余。提前在FPGA內(nèi)部分別為各路CAN總線開辟ping、pong緩存,初次上電工作默認優(yōu)先使用ping緩存。適配卡工作時,兩路CAN總線同時工作,分別通過SPI實現(xiàn)CAN控制器和FPGA之間的通信。若ping緩存超出設(shè)定時間停止更新,F(xiàn)PGA通過標識寄存器SW_FLAG判別錯誤,將另一路pong緩存數(shù)據(jù)通過PCI9054繼續(xù)上傳。

7 系統(tǒng)功能測試

在低溫-40 ℃和高溫60 ℃及低氣壓0.01 Pa惡劣環(huán)境下分別對適配卡進行功能測試,并且為進一步驗證冗余設(shè)計可靠性,將工作狀態(tài)一路總線人為斷開,適配卡自動切換到另一路總線繼續(xù)工作。分析接收到的分布式網(wǎng)絡(luò)的各路數(shù)據(jù),圖8為用HexEdit軟件分析適配卡接收分布式CAN節(jié)點部分數(shù)據(jù)截圖,可以發(fā)現(xiàn),黑框內(nèi)部分的幀計數(shù)連續(xù),無丟幀,數(shù)據(jù)格式完整對齊,無丟數(shù),無誤碼現(xiàn)象。

圖8 HexEdit數(shù)據(jù)分析結(jié)果截圖

8 結(jié)束語

本文介紹了一種基于PXI總線的CAN適配卡。適配卡可靠性高,可以穩(wěn)定工作于特殊惡劣環(huán)境下;通用性強,可以廣泛應(yīng)用于不同分布式網(wǎng)絡(luò)測控系統(tǒng)。因此,該設(shè)備設(shè)計意義較大,值得推廣。

[1] 徐文尚,姜梅香,王曉明,等.CAN總線點對點通訊應(yīng)用研究.電測與儀表,2001,38(1):33-35.

[2] 饒運濤,鄒繼軍,王進宏,等.現(xiàn)場總線CAN原理與應(yīng)用技術(shù).北京:北京航空航天大學(xué)出版社,2007.

[3] PCI9054 Data Book.Version 2.1.2000.[2015-06-01].http://www.plxtech.com.

[4] 郭柳柳,甄國涌,劉東海,等.基于PXI總線高速數(shù)據(jù)傳輸卡的設(shè)計.計算機測量與控制,2014,22(6):1899-1901.

[5] 張培仁,孫力.基于C語言C8051F060系列微控制器原理與應(yīng)用.北京:清華大學(xué)出版社,2007.

[6] 李明雄,汪明,李曉明.基于FPGA的嵌入式CAN通信卡的設(shè)計.機電工程,2010,12(27):79-83.

[7] 禹春來,許化龍,劉根旺,等.CAN總線冗余方法研究.測控技術(shù),2003,22(10):28-30.

歡迎訂閱 郵發(fā)代號:8-149 雙月刊 8元/期

《管道技術(shù)與設(shè)備》雜志

刊載內(nèi)容:

設(shè)計與研究 控制與測量 管件與設(shè)備

施工與焊接 清洗技術(shù) 分析與探索

訂閱:沈陽市大東區(qū)北海街242號(110043)Tel:024-88718619

網(wǎng)址:www.52gdw.com E-mail:info@52gdw.com

Design and Implementation of Reliable CAN Adaptor Card Based on PXI Bus

ZHEN Guo-yong,SONG Quan-wei,LIU Dong-hai

(National Key Laboratory for Electronic Measurement Technology,North University of China,Taiyuan 030051,China)

A CAN adaptor card has been designed according to the test task requirements based on PXI bus after the research and analysis of the reliability of CAN transmission.The PCI9054 was used as the“bridge” chip and FPGA was used as core controllers to implement the communication between upper computer and CAN interface.The C8051F060 was used as the core device of the adaptor card to achieve the following functions,such as the command issued,the reception,the cache and coding of CAN date and so on.The card was put into service in a space measurement and control system depending on its high reliability.

CAN adaptor card;PXI bus;FPGA;C8051F060

2015-06-04 收修改稿日期:2015-07-20

TP274

A

1002-1841(2015)12-0049-04

甄國涌(1971—),教授,碩士生導(dǎo)師,主要從事測試系統(tǒng)集成技術(shù)與應(yīng)用軟件技術(shù)研究工作。 E-mail:zhen_gy0124@163.com

猜你喜歡
寄存器上位總線
STM32和51單片機寄存器映射原理異同分析
Lite寄存器模型的設(shè)計與實現(xiàn)
一種基于CAN總線的誤碼測試方法
特斯拉 風云之老阿姨上位
移位寄存器及算術(shù)運算應(yīng)用
“三扶”齊上位 決戰(zhàn)必打贏
基于ZigBee和VC上位機的教室智能監(jiān)測管理系統(tǒng)
CAN總線并發(fā)通信時下位機應(yīng)用軟件設(shè)計
基于CAN總線的水下通信系統(tǒng)設(shè)計
寶馬F02車總線系統(tǒng)