基于C8051F040的CAN總線(xiàn)隔離器的設計與應用
1 引言
CAN(Controller Area Network),即控制器局域網(wǎng),是應用最廣泛的現場(chǎng)總線(xiàn)之一,CAN總線(xiàn)以其實(shí)時(shí)性強,可靠性高,結構簡(jiǎn)單,互操作性好,價(jià)格低廉等優(yōu)點(diǎn),可應用于高速網(wǎng)絡(luò )和低成本的線(xiàn)路網(wǎng)絡(luò )。這里提出一種CAN總線(xiàn)隔離器的通訊系統,將其應用于某飛行器到地面的通訊網(wǎng)絡(luò ),實(shí)現飛行器和地面的速度隔離,從而使飛行器和地面之間能夠穩定實(shí)時(shí)通信。該系統設計在分析CAN總線(xiàn)2.0B協(xié)議的基礎上,采用結構化方法獨立設計飛行器和地面雙方的通信協(xié)議。底層模塊的硬件設計是以C8051F040高速型單片機為核心,其內部集成CAN協(xié)議控制器,因而只需增加CAN收發(fā)器就可實(shí)現CAN智能節點(diǎn)設計,比傳統的由單片機與CAN 協(xié)議控制器共同組成的CAN節點(diǎn)更簡(jiǎn)單,可靠,易操作。而CAN總線(xiàn)應用層協(xié)議由用戶(hù)自行定義編寫(xiě),使其更符合該系統設計要求。目前整個(gè)系統運行良好,性能穩定,通信冗余度好,符合工業(yè)現場(chǎng)使用要求。
2 基于C8051F040的CAN智能節點(diǎn)設計
圖1是基于C8051F040的CAN總線(xiàn)硬件接口原理電路圖。通過(guò)C8051F040內部所集成的CAN控制器,為了增強系統的抗十擾能力,在CAN控制器與TJA1040之間接入光電耦合器6N137,從而實(shí)現TJA1040與外界CAN通信。事實(shí)上,集成收發(fā)器TJA1040本身具有瞬間抗干擾能力,可保護總線(xiàn),降低射頻干擾,以實(shí)現熱保護功能。因此,在干擾不嚴重的廊用場(chǎng)合,無(wú)需增加光電隔離,使得系統達到最大通信速率或距離。如果使用光電隔離器,應盡量選用高速光電隔離器,以減少CAN總線(xiàn)有效回路信號傳輸的延時(shí)時(shí)間。由于CAN隔離器需通過(guò)CAN總線(xiàn)采集輸入輸出模塊的數據信息,干擾較大,為了系統的穩定可靠性,需加光電隔離器。通過(guò)CAN2.0B兼容CAN2.0A協(xié)議的連接通訊測試,光電耦合器6N137上升時(shí)間為30 ns(典型值),隔離電壓為3 000 V,其支持最大頻率值超過(guò)30 MHz。
為實(shí)現系統的穩定可靠性,該系統設計采用冗余設計,利用雙通道光耦HCPL2631隔離并產(chǎn)生控制信號,控制兩個(gè)單刀雙擲開(kāi)關(guān)MAX4635,從而實(shí)現CAN智能節點(diǎn)的切換。
3 CAN總線(xiàn)隔離器設計
該系統設計的CAN總線(xiàn)隔離主要由發(fā)送和接收兩部分組成。發(fā)送和接收部分都由數據指令配置、數據處理和數據傳輸3個(gè)單元組成,如圖2所示。其中發(fā)送部分:上位機指令配置完后,通過(guò)FPGA傳輸給單片機,單片機利用自身所帶的CAN總線(xiàn),經(jīng)隔離處理后到達總線(xiàn)驅動(dòng)器,然后通過(guò)CAN總線(xiàn)輸出數據。而接收部分正好相反。該系統設計將飛行器速度設置為500 kHz,地面速度設置為50 km/s,從而更好模擬飛行器和地面的通信。
4 隔離器收發(fā)雙方通信協(xié)議
總線(xiàn)隔離器分為飛行器高速接口和地面低速接口兩部分,要求隔離器能通過(guò)所有地面上行到飛行器的數據。本系統CAN總線(xiàn)采用主從方式,所有總線(xiàn)數據統一采用數據幀,不用遠程幀,數據長(cháng)度最大為8字節,最小為0字節。根據數據鏈路層協(xié)議,仲裁場(chǎng)標準標識符共11位(ID1O~ID0),系統通過(guò)標識符確定數據傳輸的優(yōu)先級。本協(xié)議規定,ID除表示優(yōu)先級外,還是數據接收目的節點(diǎn)、數據發(fā)送源節點(diǎn)與數據類(lèi)型。具體說(shuō)明11位ID:ID[1](ID的0~3位)為數據接收目的節點(diǎn);ID[2](ID的4~7位)為數據發(fā)送的源節點(diǎn);ID[3](ID的8~10位)為數據類(lèi)型。
本協(xié)議中,飛行器系統和地面系統都有3個(gè)節點(diǎn),節點(diǎn)編號和ID號如表1所示。
5 CAN隔離器的軟件設計
5.1 CAN總線(xiàn)初始化
CAN總線(xiàn)初始化包括:I/O的配置、外部晶體振蕩器的配置、CAN總線(xiàn)的開(kāi)閉、發(fā)送和接收初始化。初始化程序如下:
void initial_can(unsigned char MsgNum,unsignedl int id)
{SFRPAGE=CONFIG_PAGE;
5.2 發(fā)送和接收程序
CAN報文發(fā)送是由CAN控制器自動(dòng)完成,用戶(hù)只需根據接收到的數據幀的識別符,將對應的數據轉移到發(fā)送緩沖寄存器,然后將此報文對象的編碼寫(xiě)入命令請求寄存器啟動(dòng)發(fā)送即可,而發(fā)送由硬件完成。這里使用定時(shí)更新發(fā)送報文對象中的數據,發(fā)送數據由控制器自動(dòng)完成,當收到一個(gè)數據幀時(shí),可將具有相同識別符的數據幀發(fā)送出去。其發(fā)送程序代碼如下:
CAN報文的接收與發(fā)送相同,由CAN控制器自動(dòng)完成,接收程序只需從接收緩存器中讀取所接收的數據,再進(jìn)行相應處理。其方法與發(fā)送程序基本一致,這里不再贅述。
6 關(guān)鍵技術(shù)設計分析
6.1 冗余設計
工業(yè)控制現場(chǎng)狀況復雜,因外力所致的電纜接觸故障率遠遠高于節點(diǎn)的故障率,一旦電纜發(fā)生故障,總線(xiàn)就會(huì )失去通信能力,并導致系統癱瘓,對工控系統的健壯性構成威脅。解決這一故障最簡(jiǎn)單、有效的辦法是對故障率較高的物理介質(zhì)進(jìn)行冗余設計。即使用2條總線(xiàn)電纜、2個(gè)CAN總線(xiàn)收發(fā)器,但只用1個(gè)總線(xiàn)控制器。仲裁電路自動(dòng)監測總線(xiàn)狀態(tài),并自適應選擇正常的電纜完成通信任務(wù)。發(fā)生電纜故障時(shí),設備自動(dòng)報警,提醒工作人員進(jìn)行檢修。檢修過(guò)程中,設備使用備用電纜繼續工作。電纜冗余設計可實(shí)現與通常的CAN總線(xiàn)通訊系統代碼級兼容。仲裁電路設置于總線(xiàn)控制器與2個(gè)總線(xiàn)收發(fā)器之間,監測CAN總線(xiàn)電纜狀態(tài),實(shí)現自適應切換和報警。設備向其他節點(diǎn)發(fā)送報文時(shí),總線(xiàn)控制器向2條總線(xiàn)同時(shí)發(fā)送相同的報文;而接收報文時(shí),仲裁電路在無(wú)電纜故障時(shí),一直使用總線(xiàn)1(主總線(xiàn))進(jìn)行報文接收。如果總線(xiàn)2(從總線(xiàn))出現故障,故障監測電路就向主控計算機發(fā)出中斷信號報故障,同時(shí)處于正常狀態(tài)的總線(xiàn)1仍承擔正常通訊任務(wù);如果總線(xiàn)1出現故障,故障監測電路在向主控計算機發(fā)出中斷信號的同時(shí),自動(dòng)切換成總線(xiàn)2,以保證設備正常工作??偩€(xiàn)切換動(dòng)作只會(huì )出現在正在使用的電纜發(fā)生故障時(shí),這樣可提高通訊的穩定性,降低應答失敗的幾率。
6.2 接收數據時(shí)ID不濾波的實(shí)現
在CAN總線(xiàn)的接收過(guò)程中,一般實(shí)現的都是發(fā)送ID和接收ID相匹配的方式,也就是說(shuō)在接收方要進(jìn)行接收,而ID濾波,而本設計實(shí)現任意接收方式,只要有數據就開(kāi)始接收不進(jìn)行ID號的濾波,這樣可更好進(jìn)行測試,例如某個(gè)設備所攜帶的ID號,由于各種原因與接收方所接收的ID不匹配,這樣就可判斷出所發(fā)設備可能收到干擾,或者所發(fā)設備自身出現了問(wèn)題。這種ID號不過(guò)濾的方法主要通過(guò)對接收設備的命令請求寄存器、消息掩碼寄存器、仲裁寄存器、消息控制寄存器和命令掩碼寄存器的設置來(lái)實(shí)現。其實(shí)現程序如下:
7 結論
本文提出一種CAN總線(xiàn)隔離器的實(shí)現方案。利用具有CAN總線(xiàn)控制器的C8051F系列單片機實(shí)現了CAN智能節點(diǎn),增加CAN節點(diǎn)的冗余設計,提高通訊的穩定性,降低應答失敗的幾率;實(shí)現不濾波的CAN數據接收,可更好測試系統的可靠性和監測功能,當接收到不是已知設備發(fā)來(lái)的消息時(shí),能夠準確定位設備故障的位置。此方案實(shí)現的CAN總線(xiàn)隔離器已成功應用于某型號飛行器的地面測試臺中,經(jīng)測試和調試后,系統工作穩定,達到設計要求。并且由于采用內嵌的CAN 總線(xiàn)控制器,可為以后的系統升級預留大量空間。
隔離器相關(guān)文章:隔離器原理
評論