新聞中心

        EEPW首頁 > 汽車電子 > 設計應用 > 一種基于CAN總線的電動車控制系統設計方案

        一種基于CAN總線的電動車控制系統設計方案

        作者: 時間:2014-09-11 來源:網絡 收藏

          4 總線節點的軟件設計

        本文引用地址:http://www.104case.com/article/262818.htm

          系統采用基于C語言的程序設計。在IAB開發環境下進行調試和仿真。整車控制節點的軟件設計主要包括4個部分:控制器的初始化、報文發送、報文接收和錯誤處理。

          4.1 控制器的初始化

          在啟動CAN通信前必需進行CAN模塊的初始化,包括硬件使能、CAN工作模式設置、總線波特率設置、設置中斷、驗收過濾器設置等。初始化操作在CAN模塊復位的模式下進行。初始化程序流程圖如圖4所示。

          

        5.jpg

         

          本設計中采用的是29位擴展標示符,符合CAN2.0B的標準,所以在驗收屏蔽過濾器設置中進行相應的設定。同時,本設計的CAN波特率設置為250 Kb/s,與總線上其他節點的波特率相同,才能進行正常的通信。

          4.2 數據的發送

          對CAN數據的發送采用查詢方式,提高處理器的效率,F103VE的CAN模塊有3個發送郵箱,發送報文的流程為:應用程序選擇一個空發送郵箱;設置標識符,數據長度和待發送數據;對CAN+TixR寄存器的TXRQ位置1,請求發送;一旦CAN總線進入空閑狀態,發送郵箱中的報文則立即發送,成功發送后,郵箱為空;通過查詢CAN_TSR寄存器的TXOK位來查詢報文是否發送成功。數據發送程序的流程圖如圖5所示。

          

        6.jpg

         

          4.3 數據的接收

          對CAN報文的接收采用中斷方式,提高通信的實時性。接收報文的流程如圖6所示。當CAN總線發來一個報文,根據屏蔽過濾器設置的標識符進行過濾,如果是要接收的報文,則CAN控制器將總線上的報文按順序存入接收FIFO,并進入接收中斷,在中斷中對接收FIFO中的報文進行存儲,然后釋放 FIFO郵箱。如果不釋放郵箱,當總線上再發送過來報文時,會直接覆蓋上一個報文,從而導致報文丟失。數據接收程序流程如圖6所示。

          

        7.jpg

         

          4.4 錯誤處理

          電動車的整車控制器需要接收BMS、CCS和電機控制器這3個節點發來的報文,如果超過1 s未接收到例如BMS的報文,則通信鏈路超時,此時需要進行故障處理。所以在軟件設計時,定義一個全局變量,在每個定時周期中加1,在接收BMS報文中斷中,對此變量清零,則可以實現通信超時檢測。當總線發生嚴重故障時,CAN節點錯誤寄存器累積到一定次數時,CAN控制器會關閉總線,節點脫離總線。

          5 結論

          在實車實驗中,各個節點可以實現可靠的數據通信,可以實現電動車的加減速和勻速運行。在本電動車控制系統中,設計的CAN通信節點體積小、功耗低、處理能力強、抗干擾性好,能在電磁環境復雜的環境中穩定、可靠地工作。在電動車控制系統中可實現數據的實時快速通信,可靠性

        光耦相關文章:光耦原理


        晶振相關文章:晶振原理
        雙控開關相關文章:雙控開關原理

        上一頁 1 2 下一頁

        關鍵詞: CAN STM32 局域網

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 黄冈市| 天台县| 宜宾市| 定西市| 金华市| 巫溪县| 广汉市| 开远市| 江孜县| 夏河县| 慈利县| 汶上县| 延吉市| 栾城县| 江孜县| 政和县| 五寨县| 榕江县| 景德镇市| 宝坻区| 屯昌县| 新竹市| 阿巴嘎旗| 湟中县| 西乌珠穆沁旗| 东海县| 阿拉尔市| 新民市| 高唐县| 永登县| 交口县| 丰镇市| 闽清县| 依兰县| 扬州市| 枣强县| 玉田县| 贡觉县| 鹤峰县| 武强县| 鲁甸县|