基于C8051F020與MXA2500GL傳感器的振動信號分布式檢測方法
圖2 分布式檢測系統(tǒng)的硬件架構(gòu)
多機(jī)通信協(xié)議
C8051F020單片機(jī)具有適于多機(jī)通信的特殊功能,即方式2(3)。在這2個方式里,接收的第9位進(jìn)入RB8,然后為停止位。串行口可程控為:當(dāng)接收到停止位,只有當(dāng)RB8=1時才產(chǎn)生串行口中斷。這個特性可由置位SCON中的SM2控制。多機(jī)通信中使用這種特性的方法是:當(dāng)主機(jī)要發(fā)送一個數(shù)據(jù)塊給幾個從機(jī)之一時,它先發(fā)送一個目標(biāo)從機(jī)的地址字節(jié),地址字節(jié)第9位為1而數(shù)據(jù)字節(jié)第9位為0。當(dāng)SM2=1時,數(shù)據(jù)字節(jié)不會中斷任何從機(jī),然而,地址字節(jié)會中斷所有從機(jī),這樣每一個從機(jī)可檢查接收到的地址,看是否為尋址自己。被尋址的從機(jī)將SM2位清0,準(zhǔn)備接收傳送過來的數(shù)據(jù)字節(jié),沒被尋址的從機(jī)保持SM2為置位狀態(tài),繼續(xù)處理其它工作。C8051F020單片機(jī)方式3下的信息楨格式見圖3。
圖3 C8051F020單片機(jī)在方式3下的信息楨格式
PC機(jī)的異步串行通信口是采用通用異步接收發(fā)送器(簡稱UART)為核心構(gòu)成的。UART的產(chǎn)品型號很多,大多采用Ins8250芯片。對UART的編程實際上是對其內(nèi)部寄存器的操作。UART內(nèi)部寄存器共有10個。編程時首先要確定串行通信的數(shù)據(jù)格式,這是通過將選定的數(shù)據(jù)格式參數(shù)寫入到線路控制寄存器LCR來完成的,接下來需要將波特率因子寫入到波特率因子寄存器來確定雙方傳輸波特率,再通過讀線路狀態(tài)寄存器LSR來判斷芯片是否就緒或有錯等。通信線路控制寄存器LCR的格式如圖4所示?! ?br />
圖4 通信線路控制寄存器LCR
通過將參數(shù)字節(jié)寫入到線路控制寄存器,可以將UART編程為這樣的串行通信數(shù)據(jù)格式:1位起始位,8位數(shù)據(jù)位,1位奇偶校驗位,1位停止位,1幀共11位。既然能夠在PC機(jī)上實現(xiàn)1幀11位的數(shù)據(jù)格式,并且改變線路控制寄存器的D5、D4、D3位的值能將奇偶位設(shè)定為“恒1”或“恒0”,則若在發(fā)送地址幀時將奇偶位設(shè)定為“恒1”,在發(fā)送數(shù)據(jù)位時將奇偶位設(shè)定為“恒0”,便可以在PC機(jī)上模擬51系列單片機(jī)的多機(jī)通信持點(diǎn),從而直接利用這種特點(diǎn)實現(xiàn)它們之間的主從分布式多機(jī)通信。
主機(jī)和從機(jī)遵循主從原則,主機(jī)用呼叫方式選擇從機(jī),數(shù)據(jù)在主機(jī)和從機(jī)之間雙向傳遞,各從機(jī)之間的相互通信需通過主機(jī)作為中介。主從機(jī)之間還應(yīng)傳送一些供它們識別的命令和狀態(tài)字,如以00H表示主機(jī)發(fā)送從機(jī)接收命令,以01H表示從機(jī)發(fā)送主機(jī)接收命令等。
PC主機(jī)通信程序的實現(xiàn)方法
對PC機(jī)UART的編程是主機(jī)通信程序的核心。一般可以通過兩種方式實現(xiàn)對UART的操作。一種是直接訪問底層地址實現(xiàn)對LCR、LSR、波特率因子寄存器的操作,這種方法只適用于Windows9X.在WindowsNT環(huán)境下系統(tǒng)禁止用戶程序直接訪問硬件和物理地址,因此該方法不可取。具體過程是通過調(diào)用標(biāo)準(zhǔn)通信函數(shù)inp()、outp()實現(xiàn)的。另一種方式是通過通信控件或WindowsAPI函數(shù)間接對LCR、LSR、波特率因子寄存器進(jìn)行相關(guān)操作。因此本系統(tǒng)也使用MSComm控件,而WindowsAPI函數(shù)更適合在多現(xiàn)程領(lǐng)域應(yīng)用。
結(jié)束語
實踐證明基于C8051F020單片機(jī)與MXA2500GL傳感器的振動信號分布式檢測系統(tǒng)性能可靠,大大的節(jié)約了成本,因此該系統(tǒng)在汽車整車及零部件的測試與診斷過程極具推廣價值。本文引用地址:http://m.butianyuan.cn/article/161160.htm
評論