基于RS-485總線(xiàn)的PC與多單片機間的串行通信
0 前言
單片機因其優(yōu)越的性?xún)r(jià)比和靈活的功能配置而被廣泛的應用于測控領(lǐng)域。而PC則因為豐富的軟、硬件資源,被廣泛應用于網(wǎng)絡(luò )監控系統中。這就是一臺PC與多臺單片機所組成的主從式網(wǎng)絡(luò )測控系統。串行通信是計算機和外部設備進(jìn)行數據交換的重要渠道,由于其成本低,性能穩定并遵循統一的標準,因而在工程中被廣泛應用。本文以華東石油局的一臺油田鉆井的滾動(dòng)軸承信號采集系統為例,討論一種基于串行通信標準的測控系統的通信協(xié)議及其具體的軟、硬件實(shí)現。在本系統中,上位機以PC和Windows操作系統為軟、硬件資源;下位機采用ATMEL公司89C51,總線(xiàn)標準采用的是測控系統常用的RS-485。
1 通信系統的硬件設計
盡管RS-232有些缺點(diǎn),但在兩臺短距離設備間的短距離信息傳輸時(shí),最通用的還是RS-232。但對于多臺設備的長(cháng)距離傳輸,它就很難實(shí)現。而 RS-485是一個(gè)多引出線(xiàn)接口,這個(gè)接口可以有多個(gè)驅動(dòng)器和接收器,可以實(shí)現一臺PC和多臺單片機之間的串行通信;而且RS-485的最長(cháng)的傳輸距離為 1200m,適合中距離的傳輸。本文針對油田鉆井的滾動(dòng)軸承信號采集及傳輸,根據工地實(shí)際工作環(huán)境,采用RS-485通信接口。
1.1 PC和RS-485總線(xiàn)的接口[3]
該接口的主要功能是完成RS-232到RS-485的轉變,完成這個(gè)功能的芯片很多,比如MAX-485,我們的系統采用的是ADAM公司的ADAM4250,RS-232/RS-485轉換器,結構如圖(1)所示:
圖1 ADAM4250
1.2 89c51和RS-485總線(xiàn)的接口[1],[4]
由于MAX48x/49x系列收發(fā)器組成的差分平衡系統抗干擾能力強,接收器可檢測到200mV的信號,傳輸的數據可以在千米以外得到恢復,特別適合遠距離通信,可以組成標準的通信網(wǎng)絡(luò )。本系統采用MAX487接口芯片作為收發(fā)器,由于它的輸入阻抗是標準接收器的4倍,因此最多可以?huà)?28個(gè)接收器。
1.3 系統的總體連接
本系統采用一主多從的總線(xiàn)型連接方式,如圖2所示。為了消除反射,吸收噪音,采用2個(gè)120 的匹配電阻R1和R2連在總線(xiàn)的兩端。其中n不大于128。
圖2 系統總體連接圖
2 通信協(xié)議的設計
由于RS-485通信是一種半雙工通信,發(fā)送和接受共用同一物理通道,在任意時(shí)刻只允許一臺單片機處于發(fā)送狀態(tài),因此要求應答的單片機必須在偵聽(tīng)到總線(xiàn)上呼叫信號已經(jīng)發(fā)送完畢,并且在沒(méi)有其他單片機應答信號的情況下才能應答。如果在時(shí)序上配合不好,就會(huì )發(fā)生總線(xiàn)沖突,使整個(gè)系統的通信癱瘓,無(wú)法正常工作。上位機與下位機之間如何進(jìn)行數據傳輸,怎么提高通信的效率和可靠性,以及對通信過(guò)程中的故障處理,幀格式的約定,都需要一套詳盡的通信協(xié)議。RS- 485總線(xiàn)只制定了物理層電氣標準,對上層通信協(xié)議沒(méi)有規定。這給設計者提供了很大的靈活性。一套完整的通信協(xié)議既要求結構簡(jiǎn)單,功能完備,又要求具有可擴充性與兼容性,并且盡量標準化。本系統的協(xié)議就是從這幾個(gè)方面考慮的,它主要包括以下幾個(gè)部分:
2.1 上下位機間的通信過(guò)程
(1)通信均有上位機發(fā)起,下位機不主動(dòng)申請通信;
(2)當處于輪詢(xún)狀態(tài)時(shí),上位機依據下位機地址,定時(shí)向下位機發(fā)送呼叫指令。此時(shí),每臺下位機都中斷接受并判斷,地址不相符的下位機中斷返回,執行其他下位機任務(wù);反之則把本機地址及其狀態(tài)作為應答信號發(fā)送給上位機。上位機接收到應答信號后,可以作進(jìn)一步的處理。
2.2 通信協(xié)議
本系統采用比較簡(jiǎn)單的通信協(xié)議:PC機需要與單片機通信時(shí),首先發(fā)送一個(gè)字節的信號,以16進(jìn)制表示為AAH,單片機接收到AAH后,就將需要發(fā)送的數據連續地向PC機發(fā)送;PC機與單片機通信結束時(shí),向單片機發(fā)送一個(gè)字節的信號,以16進(jìn)制表示為55H,結束數據發(fā)送。單片機發(fā)送給PC機的數據格式為:
開(kāi)始碼 | 數據體 | 校驗和 | 結束碼 |
00H | DATA[0]DATA[1]…DATA[N-1] | DATASUM | FFH |
3 通信系統的軟件設計
3.1 上位機通信軟件設計
本系統的上位機軟件用VB6.0實(shí)現,利用VB6.0提供的MSComm通信控件,可以方便的訪(fǎng)問(wèn)串口,實(shí)現數據的接收和發(fā)送。由于本系統用一臺上位機監控多臺下位機,所以上位機監控界面主要包括3個(gè):
(1)輪詢(xún)界面,即主監控界面??梢员O測到下位機的狀態(tài)(運行,停機,故障)??紤]到通用型,下位機的臺數可以根據實(shí)際需要添加或刪除,最多可帶128臺下位機。本系統默認為50臺。
(2)下位機運行監視和控制界面。主要是對某一臺定位控制器進(jìn)行狀態(tài)監視和位置給定。
(3)下位機內部參數設定界面??梢愿鶕?shí)際需要對某一臺定位控制器的運行參數進(jìn)行修改。
開(kāi)發(fā)通信程序的關(guān)鍵是發(fā)送和接受數據。下面給出上位機中數據發(fā)送和接收的部分程序:
MSComml.Settings=Settings ; 串口的波特率設置
send_arr0(0)=H02 ; 數據發(fā)送數組
send_arr1(0)=BPQ_Address
……
send_arr7(0)=send_arr1(0)Xor send_arr2(0)…Xor send_arr6(6)
Output_Enable=False ; 關(guān)閉輪詢(xún)
Open_Port ; 開(kāi)串口
MSComm1.RTSEnable=False ; 置發(fā)送狀態(tài)
MSComm1.Output=send_arr0 ; 發(fā)送
Choose_Delay ; 發(fā)送延時(shí)
MSComm1.Output=send_arr1
Choose_Delay
……
MSComm1.Output=sen_arr7
Choose_Delay
MSComm1.RTSEnable=True ; 置接收狀態(tài)
Choose_Frame_delay ; 接收延時(shí)
Accept_arr=MSComm1.Input ; 數據接收數組
For j=Lbound(Accept_arr)To Ubound(Accept_arr)
If Ubound(Accept_arr)=7 Then
Buf(j)=buf(j)+Str(Accept_arr(j))
由于程序較長(cháng),對程序其它部分不詳細敘述,這里只列幾個(gè)注意點(diǎn):
(1)由于采用半雙工傳輸方式,開(kāi)始發(fā)送前要禁止接受。發(fā)送結束后要先關(guān)閉發(fā)送再開(kāi)啟接收,以保證數據傳輸的正確性。
(2)發(fā)送以字節為單位,每個(gè)字節間要考慮延時(shí),以免因溢出而丟失數據。延時(shí)時(shí)間主要取決于傳輸時(shí)所確定的波特率。
(3)接收數據也要考慮延時(shí),以等待下位機將一個(gè)單位的數據全部發(fā)給上位機。
3.2 下位機通信軟件的設計[2]
本系統中的單片機采用的是ATMEL公司89C51,這是在國內應用相當廣泛的一款單片機,程序用C51來(lái)編寫(xiě),從實(shí)時(shí)性角度來(lái)考慮,下位機的通信方式采用中斷方式。這樣下位機程序就包括了下位機主程序和下位機中斷服務(wù)程序。主程序用于定時(shí)器T1初始化、串行口初始化和中斷初始化。中斷服務(wù)程序用于對上位機的通信。主程序和中斷服務(wù)程序的框圖如圖3、圖4所示。由于篇幅所限,程序這里就不做介紹。
圖(3) 下位機主程序框圖
圖(4)下位機中斷服務(wù)程序框圖
4 結束語(yǔ)
本文設計并實(shí)現了一種應用于油田鉆井滾動(dòng)軸承的振動(dòng)信號測控系統。該系統采用PC與多單片機之間的串行通信實(shí)現測控,采用RS-485總線(xiàn)標準,半雙工傳輸方式。上位機采用Windows環(huán)境下VB6.0開(kāi)發(fā),編程簡(jiǎn)單,界面良好,維護方便;下位機利用單片機內自帶的USART通信接口,很好的實(shí)現異步串行通信。實(shí)驗表明,該方法對于工作環(huán)境比較惡劣的鉆井油田滾動(dòng)軸承的振動(dòng)信號的采集與傳輸,達到了實(shí)際要求,為滾動(dòng)軸承故障檢測提供了方便而有效的振動(dòng)信號。
參考文獻
基金號:江蘇省高校自然科學(xué)基金資助項目(03KJB510025)
1 范逸之,陳立元 Visual Basic與RS-232串行通信控制 北京:中國青年出版社 2002
2 石東海 單片機數據通信技術(shù)從入門(mén)到精通 西安:西安電子出版社 2002
3 ADAM 4000 Data Acquisition Modules User’s Manual Advantech Co.Ltd 1999
4 王金成 王旭 一種基于RS-485總線(xiàn)的遠程通信系統軟件實(shí)現 《微計算機信息》 2001年17卷第9期
數字通信相關(guān)文章:數字通信原理
通信相關(guān)文章:通信原理
評論