1、引言
can 總線是由德國 bosch 公司為現實汽車測量和執行部件之間的數據通訊而設計的、支持分布式控制及實時控制的串行通訊網絡。can 總線通訊的波特率可高達 1mbps,最遠距離可達 10km;can 總線通訊采用短幀結構,數據傳輸的時間短,受干擾的幾率低;can 總線協議有良好的檢錯措施,可靠性較高;can 總線通訊對于傳送幀可以設定不同的優先級,通過總線仲裁機制使高優先級的信息能夠被優先及時傳送,增加了 can 總線通訊的實時性;can 總線的完善可靠的通信協議主要由接口器件完成,降低了軟件開發的難度。此外,can 總線網絡中的每節點對應一個地址,理論上基于 can 總線的網絡上可以添加刪除任一節點,通訊方式可以為點對點的通訊也可以為廣播方式,可以為單主方式也可以是多主方式,因此 can 總線通訊有相當的靈活性。
can 總線開始主要應用于自動化電子領域的汽車發動機部件、傳感器、抗滑系統等應用中,但隨著 can 的應用普及,其應用范圍已不局限于汽車行業,正在向過程控制、機械、紡織等行業發展,應用領域從高速網絡到低成本的多線網絡。而且 can 總線的實時性以及抗干擾能力強等優點也逐步為航天領域所認可。1995 年 sstl(surrey 大學衛星技術公司)將 can 作為星載遙測 / 遙控信道,隨之 sstl 開發了基于 can 的分布式解決方案。至今 sstl 已經在 uosat-12,snap-1,aisat-1,ukdmc,nigeriasat-1,bilsat-1 等 6 顆 leo 衛星中應用了 can 總線網絡,用于實現星載計算機與其他任務節點之間的通信;esa 在 smart-1 上也將 can 作為系統總線和有效載荷總線,實現數據交換和控制命令的傳送。在國內,can 總線技術在小衛星中也得到了實際的應用。
本文在分析 can 總線航天應用的基礎上,從硬件原理設計、cpu 與 can 總線接口實現以及 can 總線通信軟件設計等方面進行了論述。
表 1 can 總線故障及其影響分析
2、can 總線工作原理
can 總線的多主站工作方式的發送原理采用“載波偵聽多路訪問 / 沖突檢測”(csma/cd:carrier sense multiple access with collision detect)技術實現。利用 csma 訪問總線,可對總線上信號進行檢測,只有當總線處于空閑狀態時,才允許發送。利用這種方法,可以允許多個節點掛接到同一網絡上。當檢測到一個沖突位時,所有節點重新回到‘監聽’總線狀態,直到該沖突時間過后,才開始發送。在總線超載的情況下,這種技術可能會造成發送信號經過許多延遲。為了避免發送延時,可利用 csma/cd 方式訪問總線。當總線上有兩個節點同時進行發送時,通過“無損的逐位仲裁”方法來使有最高優先權的報文優先發送。在 can 總線上發送的每一條報文都具有唯一的一個 11 位或 29 位數 id。can 總線狀態取決于二進制數‘0’而不是‘1’,所以 id 號越小,該報文擁有越高的優先權。
can 總線的多主站工作方式的接收原理是通過驗收濾波器來實現的。獨立的 can 控制器 sja1000 設置了一個多功能的驗收濾波器,該濾波器允許自動檢查標識符和數據字節。使用驗收濾波器的濾波方法可以防止對于某個節點無效的報文或報文組存儲在接收緩沖器里,因此降低了主控制器的處理負荷。濾波器由驗收碼寄存器(acc)和屏蔽寄存器(amr)組成。在 basiccan 模式里的驗收濾波,其判據為:(acc(7:0) ⊙ id(10:3))+amr(7:0)。如果判據的結果為“11111111”,則表示該幀數據是其他節點傳送給本節點的數據,本節點 can 總線控制器將接收本幀數據,在 crc 校驗無誤后于應答間隙產生應答信號。
3、can 總線航天應用分析
esa 開展的 can、1553b、spacewire 技術研究表明以差分信號傳輸的高速串行總線用于星載設備之間的數據傳輸能保證通信的及時性, 利于降低星載設備的功耗,有助于獲得低噪聲、抗電磁干擾性強、emi 低、信號不受電源開關狀態變化影響等優勢, 具有良好的航天應用前景。
can 總線作為一種專為汽車工業設計的現場總線,具有很多適合航天應用的特點:作為多主站方式的串行通訊總線,can 總線具有低成本,高抗電磁干擾性,高總線利用率,很遠的數據傳輸距離(長達 10km),高速的數據傳輸速率(高達 1mbps),可根據報文的 id 決定接收或屏蔽該報文,可靠的錯誤處理和檢錯機制,發送的信息遭到破壞后,可自動重發,節點在錯誤嚴重的情況下具有自動退出總線的功能等特點。
iso11898 建議的 can 總線的物理電氣性能,能夠保證在總線發生某些故障時不至于中斷通信,而且可以為故障的定位提供可能。表 1 列出了 can 總線可能發生的各種開路和短路故障,以及在該故障模式下 can 總線受影響的情況。
can 總線具有安全可信性。從協議分析,can 總線的每個 ecu 具備錯誤檢測、標定和自檢的強有力措施。檢測錯誤包括:發送自檢、crc 校驗、位填充和報文格式檢驗。其錯誤檢測具有如下特性:其一, 所有全局錯誤都可以檢測;其二,發送器的所有局部錯誤都可以被檢測;其三,報文中 5 個以內的隨機分布錯誤都可以被檢測到;其四,報文中長度小于 15 的突發性錯誤都可以被檢測得到;其五,報文中任何奇數個錯誤都可以被檢測得到;其六,沒有檢測出的已損報文的剩余錯誤概率為報文出錯率的 4.7×10-11。
sstl 經過研究發現,在 600 公里~1000 公里的空間領域,空間輻射對衛星的影響相對較小。在這個高度上,總劑量為每年 1krad 左右(其量級相當于增加 5mm 的鋁屏蔽層),seu 發生率相當于每天每 mbyte 一次(此數據來源于試驗觀察),并且觀測到的 sel 發生概率非常低,在 sstl 整個記錄中只記錄到 3 到 4 次值得懷疑的情況(確定的只有 4 次)。sstl 還發現幾乎所有的商業 cmos 器件,在經受 10 krad 輻照后其性能并無明顯下降。sstl 在低軌道小衛星采用工業級 can 控制器芯片構建衛星 can 總線網絡的成功,驗證了上述結論。表 2 為 sstl 在近年來采用的 cots can 器件。
表 2 surrey 大學采用的 cots can 器件統計列表
器 件 飛行任務次數
philips can 收發器:當前主流產品 4
philips pca82c250 10
philips p87c592 10
philips can 8 位外設:產權主流產品 4
philips pca82c200:can 8 位外設 6
infineon:8 位 can 微控制器(a/d,pwm,例如 8051) 6
microchip can spi 外設 4
4 、 星載計算機中的雙冗余容錯 can 總線設計
圖 1 描述了基于 can 的雙冗余總線結構。基于 can 總線的雙冗余系統通信總線的基本設計思想是在衛星各功能模塊之間布下兩條基于 can 的系統通信總線,即用兩套 can 總線控制模塊分別連接到總線 bus0 和 bus1 上。正常情況下優先在一條總線上通信,這條總線出現故障時通過另一條進行通信并重新初始化出錯的總線以備將來再用。這樣即使一條通信通道故障后不會影響整個系統的數據交換,大大提高了通信的可靠性。
圖 1 基于 can 的雙冗余總線結構
圖 2 can 總線硬件設計原理簡圖
圖 2 為星載計算機中 can 總線硬件設計原理框圖。 can 總線協議控制芯片選用 philip 的工業級器件 sja1000,收發器選用 philip 的 pca82c250。cpu 與 sja1000 的接口控制邏輯通過 actel 的反熔絲 fpga 實現。sja1000 工作在 intel 模式,工作時鐘為 7.3728mhz。復位信號通過 max708 產生。為了有更好的 emc/emi 性能和抑制比較器的噪聲,vdd 通過 rc 濾波器退耦。
SJA1000 的 RX1 信號處理非常關鍵。如果使用外部集成收發器電路而且沒有在時鐘分頻寄存器里使能比較器旁路功能,RX1 輸出要被連接到 2.5V 的參考電壓(82C250 的 Vref 輸出)。圖 3 顯示了 CBP 的兩種設置所對應的電路。對于使用 82C250 集成的收發器電路,SJA1000 的相關數據手冊建議使用旁路功能,即 CBP 設置為 1,在這種情況下,SJA1000 的比較器旁路功能有效,減少了內部傳播延遲,即 td2
圖 3 SJA1000 的接收輸入比較器旁路設計
82C250 的 RS 信號通過電阻 Rext 接地。RS 管腳的電流決定了傳輸介質上傳輸信號的信號沿的陡峭程度,Rext 阻值的大小必須根據 CAN 總線的工作速度及其工作環境進行設計和選擇,具體可參見 SJA1000 的數據手冊或者應用文檔。
5、 CPU 與 SJA1000 的接口邏輯設計
星載計算機的 CPU 不同于 8086,采用的是獨立地址和數據總線。CAN 總線控制器 SJA1000 采用地址 / 數據總線復用方式,需要將 CPU 的總線信號經過適當邏輯處理后才能夠滿足 CAN 總線控制器的時序要求。圖 4 和圖 5 是 SJA1000 在 Intel 模式下的讀寫時序。
圖 4 SJA1000 讀時序(Intel 模式)
圖 5 SJA1000 寫時序(Intel 模式)
按照 SJA1000 的數據手冊,確保 SJA1000 的讀寫正確,如下的時序參數必須滿足:
l tW(AL):必須保證 ALE 的時間,最小不能小于 8ns;
l tLLRL/tLLWL:讀寫時 ALE 無效到讀寫信號有效的時間,最小不能小于 10ns;
l tLCRL/tLCWL:片選信號有效后讀寫信號有效的時間,最小不能小于 0,即片選有效必須出現在讀寫信號有效前;
l tW(R):讀信號有效寬度,最小不能小于 40ns;
l tW(R):寫信號有效寬度,最小不能小于 20ns;
l tWHLH:寫信號無效到下一次 ALE 有效的時間,最小不能小于 15ns;
l th(AL-A):在 ALE 為低電平后地址應該保持時間,最小不能小于 2ns。
CPU 和 CAN 總線接口采用地址直接映射。接口時序設計重點是接口控制邏輯必須產生符合上述關鍵參數的讀寫時序。如果簡單的按照 ALE《=not nADS 方法處理,不滿足要求時序關系,這在調試過程中已經得到驗證。為此,在設計中采用了 FPGA 技術,以求很好地解決 CAN 總線與 CPU 的接口問題。圖 6 描述了通過 VHDL 編寫實現接口電路的狀態轉移圖和 FPGA 設計產生的讀寫 CAN 總線時序,其中時鐘周期不低于 67ns,該時序滿足 SJA1000 要求。
圖 6 CAN 總線接口時序設計的狀態轉移和時序
6、 CAN 總線通訊軟件的設計
雙冗余總線結構的通訊軟件主要由初始化、接收和發送三個模塊組成,控制流圖見圖 7。在程序設計時采用了 SJA1000 的 Basic 模式,初始化中需要對 BUS0 和 BUS1 分別進行初始化,包括 SJA1000 的控制寄存器、接收代碼寄存器、接收屏蔽寄存器、總線時序寄存器等。
圖 7 CAN 總線通訊軟件的控制流圖
發送模塊采用主動發送方式,BUS0 為優先通訊通道,若 BUS0 通道狀態不正常,則啟動 BUS1 通道進行通訊,并對 BUS0 通道進行初始化以備下次通訊時使用。
接收模塊采用中斷接收方式,為了保證接收到的數據被實時處理,CAN 總線的接收中斷被設置為高優先級中斷。在接收中斷中首先判斷接收通道是 BUS0 還是 BUS1,然后從接收通道按數據長度進行數據接收。
7 、結束語
CAN 總線技術的諸多優點如實時性好,通信速率高,抗干擾能力強,低廉的價格等使它不僅廣泛應用于工業控制領域,而且開始向航天領域進軍。其 COTS 工業級器件 SJA1000 經過飛行也得到了驗證,CAN 總線適宜航天應用的特點得到了充分的展示和飛行驗證。