<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于RS-485總線(xiàn)的PC與多單片機間的串行通信

基于RS-485總線(xiàn)的PC與多單片機間的串行通信

作者: 時(shí)間:2012-01-30 來(lái)源:網(wǎng)絡(luò ) 收藏

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和的接口[3]

該接口的主要功能是完成RS-232到RS-485的轉變,完成這個(gè)功能的芯片很多,比如MAX-485,我們的系統采用的是ADAM公司的ADAM4250,RS-232/RS-485轉換器,結構如圖(1)所示:

圖1 ADAM4250


1.2 89c51和的接口[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í)現測控,采用標準,半雙工傳輸方式。上位機采用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)文章:通信原理




關(guān)鍵詞: RS-485總線(xiàn) 串行通信

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>