基于CAN總線的老化測試系統(tǒng)的設計
0 引言
汽車上用的電子設備的可靠工作與優(yōu)良性能關系者駕駛者的生命安全。車用電子設備出廠前要求對設備內(nèi)部電路板進行長時間老化測試,以檢測電路板在高溫環(huán)境和各種輸入信號條件下,是否仍正常工作。只有經(jīng)過老化測試的電路板才能出廠。由于需要老化測試的電路板數(shù)量巨大,要求該系統(tǒng)能同時老化測試許多塊被檢測電路板,因此設計了本老化測試系統(tǒng)。整個老化測試由 1個通信模塊、 10個測試模塊、1個溫控模塊及上微機軟件構成。本老化檢測系統(tǒng)的系統(tǒng)結構圖如圖 1所示。
圖 1 系統(tǒng)結構圖在本系統(tǒng)中,每個檢測模塊最多可同時檢測 10塊電路板,共有 10個檢測模塊,因此,整個系統(tǒng)在一次老化檢測過程可以同時檢測100塊電路板。檢測模塊將檢測的數(shù)據(jù)通過 CAN通信送給通信模塊,由通信模塊通過串行通信發(fā)送給上位機,由上位機軟件對檢測數(shù)據(jù)進行解析,判斷被測電路板的工作狀態(tài),顯示每一塊被測電路板的工作狀態(tài),存儲每塊被測電路板的檢測數(shù)據(jù),生成歷史報表。上位機軟件還向操作員提供良好而方便的人機交互界面,操作員通過該界面,可以設置系統(tǒng)老化的時間、溫度與測試模式。
1 通信模塊設計
通信模塊在老化系統(tǒng)中處于核心地位,它完成兩方面的任務:一方面,通過串行異步通信與上位機通信,接收用戶通過上位機發(fā)來的控制命令,向上位機發(fā)送檢測的數(shù)據(jù)。另一方面,通過 CAN通信方式與 10個檢測模塊及 1個溫控模塊通信,向檢測設備發(fā)送命令和采集數(shù)據(jù)。通信模塊的硬件系統(tǒng)框圖如圖 2所示。
1.1 硬件設計
通信模塊采用 C8051F040作為核心。C8051F040具有許多優(yōu)點。1.采用高速 8051微控制器內(nèi)核,流水線結構,大部分指令的執(zhí)行時間為一或兩個系統(tǒng)時鐘周期。
2.有 4352字節(jié)的內(nèi)部 RAM和 64K字節(jié)的 FLASH,滿足大多數(shù)應用設計對存儲空間的需要,無需外接存儲器,因而了簡化系統(tǒng)設計。
3.配置多種端口,如 SPI、SMBus和 UART。
4.C8051F040內(nèi)置標準 CAN控制器,只要外接 CAN通信接口芯片就可以進行通信,方便實現(xiàn) CAN總線通信,提高通信的可靠性。
由于 C8051F040集成的是 CAN控制器,要使實現(xiàn) CAN總線通信,還需要外接 CAN總線收發(fā)器,常用的 CAN總線收發(fā)器有 Philips公司的 PCA82C250收發(fā)器、高速 TJA1050收發(fā)器等。本設計采用了 TJA1050高速 CAN收發(fā)器,TJA1050具有電磁輻射低、防短路、不上電時對總線無影響等特點。為了進一步提高系統(tǒng)的抗干擾能力,C8051F040的 CAN控制器引腳CANTX、CANRX和收發(fā)器 TJA1050之間并不直接相連,而是通過由高速光耦 6N137構成的隔離電路后再與 TJA1050相連,這樣就可以很好的實現(xiàn)了 CAN總線上各節(jié)點的電氣隔離。增加隔離電路雖然增加了節(jié)點的復雜性,但它卻提高了節(jié)點的穩(wěn)定性和安全性。此外,為避免信號反射,導致通信的可靠性與抗干擾能力下降,甚至無法通信,因此,在 CAN總線的兩端需要加有 2個 120歐姆的總線阻抗匹配電阻。由于 C8051F040的端口電壓為 3.3V,串行通信電路采用的電平轉換芯片為 MAX3232。
1.2 軟件設計
1.2.1 串行通信程序設計
通信模塊一方面通過串行通信接收上位機的命令,主要命令有啟動、停止和參數(shù)設置命令。用戶通過參數(shù)設置命令為系統(tǒng)設置不同參數(shù),可以保證老化的正確進行。另一方面通過串行通信向上位機發(fā)送檢測到的數(shù)據(jù)。為簡化設計,通信模塊和上位機的串行通信采用固定長度的信息幀格式,一幀信息包括幀頭、有效數(shù)據(jù)或命令、 CRC16校驗位等。通信模塊接收上位機信息通過中斷方式實現(xiàn)。在中斷服務程序中,每接收到一個幀頭后,開始接收后面若干字節(jié)的信息,經(jīng) CRC16校驗有效后,就認為是一個有效的信息幀,按照約定的串行通信協(xié)議解析該信息幀,取出其中的有效命令。通信模塊每收到一個有效命令幀,向上位機發(fā)送一幀應答信息。為保證通信正確,上位機軟件對通信采用超時機制。如果上位機在發(fā)出一
由于通信模塊接收命令和處理命令速度的不同步,為保證上位機發(fā)來的每條命令得到執(zhí)行,需要將有效命令放入到命令緩存隊列的隊尾。該命令緩存隊列采用環(huán)形結構,接收的有效命令被放到隊尾,而主程序從命令緩存隊列的頭部取出一條命令,進行后期處理。為方便從命令緩存隊列存放或存取一條命令,在實現(xiàn)命令緩存隊列時,采用了二維數(shù)組結構,即數(shù)組的每一個元素為一條固定長度的有效命令。通過選取適當?shù)年犃虚L度,可以保證在正常工作中,保證命令緩存隊列不會產(chǎn)生溢出。本設計中,命令緩存隊列的數(shù)據(jù)結構如下:
unsigned char s_queue[QUEUE_LEN][CMD_PACK_LEN];
unsigned char s_front;
unsigned char s_rear;}
評論