CAN總線隔離器的設(shè)計與應(yīng)用
CAN報文發(fā)送是由CAN控制器自動完成,用戶只需根據(jù)接收到的數(shù)據(jù)幀的識別符,將對應(yīng)的數(shù)據(jù)轉(zhuǎn)移到發(fā)送緩沖寄存器,然后將此報文對象的編碼寫入命令請求寄存器啟動發(fā)送即可,而發(fā)送由硬件完成。這里使用定時更新發(fā)送報文對象中的數(shù)據(jù),發(fā)送數(shù)據(jù)由控制器自動完成,當(dāng)收到一個數(shù)據(jù)幀時,可將具有相同識別符的數(shù)據(jù)幀發(fā)送出去。其發(fā)送程序代碼如下:本文引用地址:http://m.butianyuan.cn/article/157753.htm
CAN報文的接收與發(fā)送相同,由CAN控制器自動完成,接收程序只需從接收緩存器中讀取所接收的數(shù)據(jù),再進行相應(yīng)處理。其方法與發(fā)送程序基本一致,這里不再贅述。
6 關(guān)鍵技術(shù)設(shè)計分析
6.1 冗余設(shè)計
工業(yè)控制現(xiàn)場狀況復(fù)雜,因外力所致的電纜接觸故障率遠遠高于節(jié)點的故障率,一旦電纜發(fā)生故障,總線就會失去通信能力,并導(dǎo)致系統(tǒng)癱瘓,對工控系統(tǒng)的健壯性構(gòu)成威脅。解決這一故障最簡單、有效的辦法是對故障率較高的物理介質(zhì)進行冗余設(shè)計。即使用2條總線電纜、2個CAN總線收發(fā)器,但只用1個總線控制器。仲裁電路自動監(jiān)測總線狀態(tài),并自適應(yīng)選擇正常的電纜完成通信任務(wù)。發(fā)生電纜故障時,設(shè)備自動報警,提醒工作人員進行檢修。檢修過程中,設(shè)備使用備用電纜繼續(xù)工作。電纜冗余設(shè)計可實現(xiàn)與通常的CAN總線通訊系統(tǒng)代碼級兼容。仲裁電路設(shè)置于總線控制器與2個總線收發(fā)器之間,監(jiān)測CAN總線電纜狀態(tài),實現(xiàn)自適應(yīng)切換和報警。設(shè)備向其他節(jié)點發(fā)送報文時,總線控制器向2條總線同時發(fā)送相同的報文;而接收報文時,仲裁電路在無電纜故障時,一直使用總線1(主總線)進行報文接收。如果總線2(從總線)出現(xiàn)故障,故障監(jiān)測電路就向主控計算機發(fā)出中斷信號報故障,同時處于正常狀態(tài)的總線1仍承擔(dān)正常通訊任務(wù);如果總線1出現(xiàn)故障,故障監(jiān)測電路在向主控計算機發(fā)出中斷信號的同時,自動切換成總線2,以保證設(shè)備正常工作??偩€切換動作只會出現(xiàn)在正在使用的電纜發(fā)生故障時,這樣可提高通訊的穩(wěn)定性,降低應(yīng)答失敗的幾率。
6.2 接收數(shù)據(jù)時ID不濾波的實現(xiàn)
在CAN總線的接收過程中,一般實現(xiàn)的都是發(fā)送ID和接收ID相匹配的方式,也就是說在接收方要進行接收,而ID濾波,而本設(shè)計實現(xiàn)任意接收方式,只要有數(shù)據(jù)就開始接收不進行ID號的濾波,這樣可更好進行測試,例如某個設(shè)備所攜帶的ID號,由于各種原因與接收方所接收的ID不匹配,這樣就可判斷出所發(fā)設(shè)備可能收到干擾,或者所發(fā)設(shè)備自身出現(xiàn)了問題。這種ID號不過濾的方法主要通過對接收設(shè)備的命令請求寄存器、消息掩碼寄存器、仲裁寄存器、消息控制寄存器和命令掩碼寄存器的設(shè)置來實現(xiàn)。其實現(xiàn)程序如下:
7 結(jié)論
本文提出一種CAN總線隔離器的實現(xiàn)方案。利用具有CAN總線控制器的C8051F系列單片機實現(xiàn)了CAN智能節(jié)點,增加CAN節(jié)點的冗余設(shè)計,提高通訊的穩(wěn)定性,降低應(yīng)答失敗的幾率;實現(xiàn)不濾波的CAN數(shù)據(jù)接收,可更好測試系統(tǒng)的可靠性和監(jiān)測功能,當(dāng)接收到不是已知設(shè)備發(fā)來的消息時,能夠準(zhǔn)確定位設(shè)備故障的位置。此方案實現(xiàn)的CAN總線隔離器已成功應(yīng)用于某型號飛行器的地面測試臺中,經(jīng)測試和調(diào)試后,系統(tǒng)工作穩(wěn)定,達到設(shè)計要求。并且由于采用內(nèi)嵌的CAN總線控制器,可為以后的系統(tǒng)升級預(yù)留大量空間。
評論