新聞中心

        EEPW首頁 > 汽車電子 > 設計應用 > 基于車載CAN總線故障診斷儀設計方案

        基于車載CAN總線故障診斷儀設計方案

        作者: 時間:2010-08-10 來源:網絡 收藏


        3.1 發射端軟件設計

        發射端流程如圖5所示。軟件設計主要實現兩項功能:第一是實現上數據的采集;第二是實現將采集后的數據通過射頻進行發射。

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





        上電后,首先對模塊進行初始化。然后初始化nRF2101,并與接收端建立連接。當發送完數據后沒有收到ACK信號時,就跳頻;然后通知發送端準備接收重發的CAN數據,直到接收到ACK信號。

        為了防止空中干擾,采用了自動跳頻的空中協議,即無論是否接收到ACK信號都進行跳頻,因此可以防止某個頻段的強干擾,進而降低誤碼率。

        3.2 接收端軟件設計

        接收端軟件流程如圖6所示。軟件設計主要實現兩項功能:第一是實現枚舉;第二是實現將接收到的數據通過USB上傳到PC。上電后,首先完成對TMU3100 的配置,并與PC機枚舉;枚舉成功后就對nRF2401進行配置,并與發射端建立連接。當接收到數據包后,首先判斷是CAN數據還是重傳數據命令。如果是 CAN數據包,則向發射端返回ACK信號并跳頻,然后將接收到的數據通過USB傳至PC;如果是重傳命令,則先跳頻,然后置重傳標志,表示下個數據包是重傳的數據包。

        TMU3100被配置為標準HID類,這樣就不用為設備開發驅動程序,而是使用Windows提供的標準HID類驅動程序。

        3.3 PC端軟件設計

        PC端軟件由應用程序和設備驅動程序組成。Windows為標準USB沒備提供了完善的內置驅動,本系統采用Windows自帶的HID類驅動,只要將 TMU3100配置為HID類,即可完成與PC機的通信。這省去了開發設備的驅動程序,極大地簡化了上位機軟件的開發。

        上位機的應用程序首要實現的功能是,要實現對TMU3100端點的讀寫,用VC++語言編寫,可以把USB設備當成文件來操作。用CreateFiile ()函數獲得USB句柄,為讀訪問或寫訪問打開指定端點。用DeviceControl()來進行控制操作,用ReadFile()從指定端點讀取數據,用WriteFile()向端點寫入數據。

        當CAN上的數據被采集到PC后,就可以進行故障診斷了。故障診斷代碼是依照KWP2000應用層規定的故障代碼設計的,是目前國際上通用的,現將其應用于CAN的應用層,將來可以用全新的CAN上層協議取代。故障診斷代碼定義在SSF14230中。SAE J1979中,由車輛制造商或系統供應者定義的服務標志符數值的不同范圍,如表1所列。

        此表中以十六進制數表示的服務標志符,同數據鏈路層中數據字節內的SID服務識別字節對應。不同的SID值代表不同的服務請求,故障診斷程序必須符合此應用層標準,才能識別不同的十六進制代碼所代表的不同的故障信息。



        4 結論

        本文設計的2.4G無線CAN,由于采用了自動跳頻的空中協議,所以誤碼率幾乎接近零,在14 m內仍能進行可靠的工作。系統使用國際上通用的診斷代碼,使程序具有通用性和實用性;以PC作為硬件平臺,無需專門開發硬件平臺,可大大降低開發成本并且易于實現設備的升級和維護;使用USB接口和2.4G無線通信,具有即插即用、不受空間限制、數據傳輸實時性強的特點。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 那坡县| 青阳县| 静宁县| 宁河县| 建宁县| 武安市| 水城县| 勃利县| 崇左市| 道孚县| 兴隆县| 崇阳县| 中江县| 泽普县| 开江县| 西宁市| 宝兴县| 阳西县| 余江县| 洪泽县| 浑源县| 宁河县| 宝兴县| 尉氏县| 朝阳市| 扎鲁特旗| 河津市| 和平县| 连云港市| 邯郸县| 秭归县| 华池县| 吉林市| 阿瓦提县| 万山特区| 格尔木市| 汪清县| 沈丘县| 广宁县| 团风县| 忻城县|