常州信息職業技術學院 張科新
基于實時系統的CAN節點系統設計
常州信息職業技術學院 張科新
針對CAN總線通訊技術的特點,本文設計了一種滿足高可靠性要求的CAN網絡節點系統。該CAN節點基于FPGA平臺,由帶CAN總線控制器的微處理器、CAN總線驅動電路、擴展接口電路組成,主控單元電路全部集成在單芯片中;本文不僅完成硬件電路設計,還引入了實時多任務操作系統μC/OS -II平臺,并基于該系統開發CAN節點功能應用。整個完整電路以及軟件代碼都在FPGA平臺上完成了系統仿真以及功能驗證,并最終通過節點功能驗證板完成CAN節點實際系統測試。實際運行結果證明該節點系統硬件功能正常,軟件系統有效可靠。
CAN網絡;實時操作系統;μC/OS -II;FPGA;CAN單芯片
CAN總線(Controller Area Network,CAN)由德國博世公司在20世紀80年代初期提出[1],是一種架構開放、廣播式的網絡通訊協議[2],具有組網靈活、通訊便捷高效、可靠性高等優點[3],最終成為ISO11898以及ISO11519國際標準。
典型的CAN節點控制系統通過前、后臺軟件實現,一個CAN總線控制芯片一般由一個單片機控制,因此,節點系統中的主函數理論上可以被設計成一個無限大循環[5],各子任務在循環中依序將順序執行,各任務子函數通過軟件標識、全局變量進行通訊。針對部分高實時性消息處理任務,則需要通過處理器的中斷處理程序完成實時響應。但是隨著網絡規模的增加和應用領域的拓展,CAN網絡通訊的實時性要求越來越高,面臨越來越嚴峻的挑戰;同時在功能復雜的嵌入式應用領域,實時多任務操作系統具有明顯的優勢[6]。
本文基于FPGA平臺構建單芯片集成CAN總線控制器與嵌入式微處理器,并基于實時多任務操作系統μC/OS- II設計并實現一種定制的CAN節點控制系統,文中會具體闡述硬件實現以及程序設計。盡管CAN節點采用實時操作系統會增大代碼規模,但是節點總體的任務處理可靠性以及實時性得到有效提升[7],且利于應用代碼的多任務規劃和擴展。
整個節點硬件電路主要由微處理器、CAN總線控制器、CAN收發器、電源模塊及光耦隔離器件模塊構成。整體結構框圖如圖1所示:

圖1 節點電路結構圖
本節點系統電路設計的主要特點在于:
(1)使用SOC設計方案,實現微處理器和CAN總線控制器的單芯片集成,在大幅提高節點可靠性的同時,確保節點控制器的穩定工作;
(2)整個系統設計基于FPGA構建、仿真和驗證;
(3)支持標準CAN2.0B協議,最大數據傳輸波特率可達到1 Mbps;
(4)為了保證整個CAN網絡的可靠性,單節點設計采用雙CAN接口冗余架構,光耦隔離總線。
1.1 微處理器
基于openMSP4308051內核實現16位定制微處理器,可以實現對支持ASM51指令的完全支持。該微處理器大部分指令在單時鐘周期內執行完成,最高運行主頻可達50 MHz。為滿足運行實時多任務操作系統要求,代碼存儲空間與程序運行空間被設計成最大均可擴展至32 KB。同時,為完成多個并行任務的硬件操作,該微處理器內部可根據實際應用的不同,可配備通用雙向GPIO、計數器、UART、SPI等擴展接口。
1.2 CAN總線控制器
CAN總線控制器采用硬件描述語言實現,支持完整Controller Area Network 2.0B總線協議規范(簡稱CAN2.0B規范),并最終基于FPGA平臺驗證。設計的控制器,支持總線仲裁、數據編解碼、報文檢驗、錯誤處理等功能,其中最重要的工作是冗余設計的實現。設計完成的總線控制器通訊速率最高可達1 Mb/s。
1.3 CAN總線驅動器及其外部電路
雙CAN電路冗余設計是本設計的突出特點之一,其主要功能是為了保證節點功能的可靠性,兩個接口分別與FPGA主控芯片的兩個CAN總線控制器端口相連,從而有效避免因CAN接口故障而導致節點失效現象的發生。同時,為防止單個節點故障引起整個CAN網絡的癱瘓,總線驅動與控制器通過光耦隔離。
為了消除常見前后臺操作的弊端,保證節點系統的功能及其性能本節點軟件系統采用μC/OS II Tiny實時操作系統實現多任務調度功能,最終目的是提高軟件代碼的可讀性和可維護性。
2.1 μC/OS -II實時多任務操作系統
μC/OS - II是Micrium公司的基于優先級搶占、多任務的小型硬實時操作系統。發布于1992年,內核代碼量小巧,已廣泛應用于高安全性的設備。其源碼99%符合MISRA c編碼標準。它通過了美國航空管理局(FAA)認證,準許用于航空和航天領域。RTX51 Tiny全部采用匯編代碼實現,是專門為51系列單片機開發的一款小型嵌入式實時操作系統,具有系統開銷小、代碼精練、速度快等優點,其運行效率和性能比其它通用實時系統更好。其工作原理是實時操作系統將應用層代碼劃分在任務處理中,從而簡化了對實時性有要求的應用程序設計和擴展。
2.2 CAN節點任務設計
多任務的劃分是決定節點系統性能、決定軟件設計質量的關鍵環節。節點設計可根據各個功能模塊的劃分提取其關鍵功能,基于多任務處理平臺的特點,充分發揮并行優勢。同時,針對部分對實時性要求高的任務,通過中斷服務完成響應。
節點包含如下功能:
(1)通過串口控制臺設定節點控制命令
(2)整個過程中節點保持計時狀態,并通過串口打印報時信息;
(3)節點實時收發報文信息;
(4)通過GPIO接口設定節點與外部傳感模塊連接方式,并根據指示信號發送相應的CAN報文信息。
為實現上述功能,該節點可配置為PeliCAN模式,通訊位速率達到500 Kb/s。
本節點系統軟件功能上包含4個并行任務以及2個中斷服務程序。RTX51 TinyUSOS系統主要負責任務管理的調度,整個軟件任務流程從任務0開始啟動,而具體調度過程則通過代碼中的系統調用相應函數完成。
任務0的工作流程如圖2所示,使用任務0主要實現根據報文內容產生相應流程控制功能,包含主報文握手、事件報文、報文控制等主要功能。通過自設狀態標識判斷軟件系統可設定正常數據通訊的CAN端口,然后根據報文握手協議實現報文事件等待應用層應答,同時,為提高系統運行的容錯率,引入冗余端口重發機制。冗余端口重發機制主要實現指節點發送握手報文,其特點是需要接收相應應答。如出現在約定時間內1通道沒有收到響應情況,那么端口就會重發報文;如果依舊沒有響應,那么端口將切換到2通道實現報文的重發;需要注意的是,在整個過程結束后,系統退出該過程,否則系統將判定為運行超時,本次通訊將被認定為失敗。

圖2 任務0流程圖
任務2中的分為軟件控制接收和軟件控制發送兩部分,主要實現外部擴展功能。完整軟
件工作流程如圖3所示。

圖3 任務2流程
任務1和任務3分別實現計時以及串口命令控制臺功能,在此不做贅述。
本實驗基于xilinx公司的spartant63ADSP系列FPGA平臺,實現在單芯片上集成節點系統的主控邏輯功能,最終整體系統在設計實現之后,通過FPGA仿真驗證和板級測試。
實驗過程分為仿真驗證和板級驗證兩部分:仿真驗證的過程基于ISE開發平臺編寫代碼,并通過modelsim仿真和調試;基于周立功CAN測試平臺測試實現板級測試。整個測試過程,保持仿真驗證平臺與實測平臺的功能參數設置一致——微處理器主頻為16 MHz,CAN總線速率可達到500 Kbps。
實驗結果表明基于實時操作系統的CAN節點系統功能運行正常,同時單芯片的CAN接口冗余設計可以保證節點的通訊穩定。
仿真結果表明多任務實時操作系統在保持良好的實時性的同時可很好地實現并行多任務處理的要求。
本設計基于FPGA平臺構建單主控芯片的CAN節點系統,同時應用實時多任務操作系統改善編程效率。以往結構化編程思想難以滿足任務量大、控制環節多,關系復雜的現實應用要求,作為單片機的定制操作系統RTX51 TinyμC/OS 能夠充分保證系統的穩定性和應用程序的性能。實踐證明,使用實時操作系統可在提升程序可維護性的同時,有效地降低整體軟件的編寫復雜度。
[1]Cena G,Valenzano A.A Protocol for Automatic Node Discovery in CANopen Networks[J]. Industrial Electronics,2003,50: 419-430.
[2]曹立文,李華旺,劉勇.微小衛星CAN網絡自組織技術研究[J].計算機工程,2013,39:90-93.
[3]吳從中,彭維,陳瑋.基于PIC1 8F4550的USB-CAN總線通信模塊設計[J].合肥工業大學學報,2010,11:1648-1651.
[4]桑海偉,姚凱學.基于CAN總線的微機綜保系統設計與實現[J].測控技術,2014,4: 89-93.
[5]Jean J Labrosse. uC/OS-II-源碼公開的實時嵌入式操作系統[M].邵貝貝,譯.北京:中國電力出版社,2001.
[6]Rourab Paul. Real time communication between multiple FPGA systems in multitasking environment using RTOS[C].China Macao: ICDCS, 201203: 130-134.
[7]Djassemi, Manocher. Emergence of multitasking machining systems: Applications and best selection practices[J].Journal of Manufacturing Technology Management, 2009, 20:130-142.
張科新(1981-),男,江蘇常州人,上海大學碩士,工作單位:常州信息職業技術學院,教師,研究方向:電子科學與技術。