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