新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于汽車CAN總線的老化測試系統(tǒng)的設(shè)計(jì)

基于汽車CAN總線的老化測試系統(tǒng)的設(shè)計(jì)

作者: 時間:2012-09-22 來源:網(wǎng)絡(luò) 收藏
1.2.2 CAN通信程序設(shè)計(jì)

通信模塊與 10個檢測模塊及 1個溫控模塊通過 連接。理論上,在 上,任意一個檢測模塊都可以向通信模塊發(fā)送檢測到的數(shù)據(jù),通信控制板模塊可以同時向 10個檢測模塊發(fā)送命令。 上的發(fā)送的數(shù)據(jù)幀帶有 ID字段,ID字段的值決定每個數(shù)據(jù)幀的優(yōu)先級,數(shù)據(jù)幀的 ID值越小,該數(shù)據(jù)幀的優(yōu)先級越高。同一時間,在 CAN總線上,不同的節(jié)點(diǎn),不能發(fā)送相同 ID值的數(shù)據(jù)幀。否則會造成通信錯誤。在本設(shè)計(jì)中,分配每個檢測模塊 1個固定的 ID值,可以看作該設(shè)備的地址編號。這樣不同的設(shè)備發(fā)出的數(shù)據(jù)幀具有不同的優(yōu)先級。這樣導(dǎo)致一個問題:如果任由每個檢測模塊主動向通信模塊發(fā)送數(shù)據(jù)幀,會造成 ID值較大的數(shù)據(jù)幀因優(yōu)先級低,而不能發(fā)出。另外,每個檢測模塊的設(shè)計(jì)也采用了 C8051F040的作為控制核心,一方面完成信號檢測,另一方面完成與通信模塊的 CAN通信。

在 C8051F040的 CAN控制器內(nèi)部有 32個緩沖區(qū),每個緩沖區(qū)為 8字節(jié),每個緩沖區(qū)需要指定一個固定的 ID值。每個緩沖區(qū)可以被設(shè)置為發(fā)送緩沖區(qū)或接收緩沖區(qū)。當(dāng)某個緩沖區(qū)被設(shè)置為發(fā)送緩沖區(qū)時,該數(shù)據(jù)幀在底層帶有 ID值。當(dāng)該緩沖區(qū)被設(shè)置為接收緩沖區(qū)時,則僅接收 CAN總線上具有相同 ID值的數(shù)據(jù)幀。

在設(shè)計(jì)中,通信模塊的 CAN控制器的 32個緩沖區(qū)與 ID值分配如下:第 1至第 10緩沖區(qū)為發(fā)送緩沖區(qū),對應(yīng)的 ID值 21至 30。第 1緩沖區(qū)用于向第 1個檢測模塊發(fā)送數(shù)據(jù)幀,依次類推,第 10緩沖區(qū)用于向第 10個檢測模塊發(fā)送數(shù)據(jù)幀。第 11緩沖區(qū)為發(fā)送緩沖區(qū),對應(yīng) ID值為 31,用于向溫控模塊發(fā)送數(shù)據(jù)幀。第 20緩沖區(qū)至第 30緩沖區(qū)為接收緩沖區(qū),對應(yīng) ID值 50至 60。與此對應(yīng),則 10個檢測模塊的 CAN控制器的 32個緩沖區(qū)內(nèi)的第 1緩沖區(qū)均為接收緩沖區(qū),分別對應(yīng)的 ID值是 21至 30。第 2緩沖區(qū)至第 11緩沖區(qū)均為發(fā)送緩沖區(qū),對應(yīng)的 ID值 50至 60。即 10個檢測模塊發(fā)送的 CAN數(shù)據(jù)幀具有相同的 ID值。采用上述分配的原因在于:每個檢測模塊同時檢測 10個被測電路板,每次有 10個數(shù)據(jù)幀要同時向通信模塊發(fā)送。前提條件,10個檢測模塊不能同時向通信模塊發(fā)送數(shù)據(jù)。

通信控制板和檢測模塊之間通信采用主從應(yīng)答通信方式。在工作過程中,通信模塊從串口命令緩沖隊(duì)列的隊(duì)首取出一條命令,進(jìn)行協(xié)議轉(zhuǎn)換,組裝成 8字節(jié)的 CAN信息幀。其中最后 1個字節(jié)值設(shè)為前 7個字節(jié)的 CRC8校驗(yàn)值,雖然 CAN總線本身具有 CRC校驗(yàn),在應(yīng)用層再次進(jìn)行校驗(yàn),可以提高通信的可靠性。

通信模塊將該 CAN信息幀通過 CAN內(nèi)部第 1緩沖區(qū)發(fā)送,這樣 CAN總線上的第 1個檢測模塊收到該信息幀,該檢測模塊校驗(yàn)信息幀,如果通過校驗(yàn),進(jìn)一步解析該信息幀。如果是參數(shù)設(shè)置命令,則檢測設(shè)備提取其中的參數(shù),然后向通信模塊發(fā)送 1個信息幀作為響應(yīng)。如果是讀數(shù)據(jù)命令,則將 10個被測電路板的參數(shù)組裝成 10個 CAN數(shù)據(jù)幀,分別通過檢測設(shè)備的 CAN緩沖區(qū)的第 2至第 11緩沖區(qū)向外發(fā)送,該 10個數(shù)據(jù)幀,僅被總線上的通信模塊接收,分別放在第 20至第 30緩沖區(qū)。通信模塊將這些信息通過串口向上位機(jī)發(fā)送。按照同樣的方式,通信模塊與其它 9個檢測模塊及 1個溫控模塊完成 CAN通信,實(shí)現(xiàn)了命令的設(shè)置與測試信息的獲取。

2 檢測模塊的設(shè)計(jì)

老化系統(tǒng)的 10個檢測模塊完全一樣,完成同樣的功能。根據(jù)分析被測電路板的特性,設(shè)計(jì)了檢測模塊實(shí)現(xiàn)檢測的方法與流程。檢測模塊首先檢測被測電路板是否存在短路故障與斷路故障,如果發(fā)現(xiàn)被測電路板存在斷路故障或斷路故障,則不再進(jìn)一步檢測,在與通信模塊通信過程發(fā)送該故障信息。如果被測電路沒有短路故障或斷路故障,則檢測模塊向被測電路板加上額定工作電壓與有效的激勵信號,使被測電路板正常工作,然后檢測被測電路板的輸出信號的波形類型及頻率,按照設(shè)定的檢測算法判斷被測電路板是否存在其它故障。在 100多個小時的測試過程中,測試環(huán)境的溫度可以根據(jù)用戶的設(shè)置不斷變化或自動變化,檢測模塊提供的輸入激勵信號采用多種組合。

3 溫控模塊設(shè)計(jì)

在老化過程,被老化的電路板被放置在密閉的柜體中。該柜體內(nèi)的溫度保持在一定的范圍,以模擬中電路板的實(shí)際工作環(huán)境的溫度。溫控模塊通過 CAN總線接收通信模塊發(fā)來的信息幀,解析信息幀,得到用戶要設(shè)置的溫度值。溫控模塊檢測柜體溫度,控制加熱裝置加熱與否,使柜體的溫度達(dá)到用戶設(shè)置的溫度。

溫度檢測采用 完成,在溫控模塊中設(shè)置 4個 。將測得的 4個溫度值進(jìn)行算術(shù)平均,作為老化柜體內(nèi)的溫度值。溫控模塊的繼電器輸出接加熱棒及排風(fēng)風(fēng)扇。采用了 PID控制算法,使柜體內(nèi)溫度達(dá)到用戶設(shè)置溫度。4 上位機(jī)軟件的設(shè)計(jì)上位機(jī)軟件采用 VC++ 6.0設(shè)計(jì)完成,串口通信部分使用 Windows API函數(shù)完成,使用 API函數(shù)處理串口靈活高效。上位機(jī)軟件實(shí)時顯示每個被測電路板是否正常工作及當(dāng)前老化柜的溫度及老化時間等信息,還提供歷史數(shù)據(jù)查詢及參數(shù)設(shè)置等功能。

5 結(jié)束語


,采用 CAN總線作為系統(tǒng)的主要通信方式,采用模塊化結(jié)構(gòu),方便系統(tǒng)的設(shè)計(jì)與調(diào)試,同時,各模塊掛在 CAN總線,易于系統(tǒng)實(shí)現(xiàn)與擴(kuò)展。本系統(tǒng)已經(jīng)應(yīng)用于生產(chǎn)中,達(dá)到了設(shè)計(jì)要求,運(yùn)行效果穩(wěn)定良好。本系統(tǒng)已產(chǎn)生經(jīng)濟(jì)效益近 30萬元。


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉