單片機(jī)RS485多機(jī)通訊的實(shí)現(xiàn)_第1頁
單片機(jī)RS485多機(jī)通訊的實(shí)現(xiàn)_第2頁
單片機(jī)RS485多機(jī)通訊的實(shí)現(xiàn)_第3頁
單片機(jī)RS485多機(jī)通訊的實(shí)現(xiàn)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、單片機(jī)RS485多機(jī)通訊的實(shí)現(xiàn)摘要本文介紹一種能利用RS485電氣特性和簡單的結(jié)構(gòu)方式,采用自定義串行通信協(xié)議,實(shí)現(xiàn)單片機(jī)RS485多機(jī)通訊的方法和技巧。關(guān)鍵詞單片機(jī),RS485總線,總線沖突,串行通信1簡介RS485串行總線接口標(biāo)準(zhǔn)以差分平衡方式傳輸信號,具有很強(qiáng)的抗共模干擾的能力,允許一對雙絞線上一個發(fā)送器驅(qū)動多個負(fù)載設(shè)備。工業(yè)現(xiàn)場控制系統(tǒng)中一般都采用該總線標(biāo)準(zhǔn)進(jìn)行數(shù)據(jù)傳輸,而且一般采用RS485串行總線接口標(biāo)準(zhǔn)的系統(tǒng)都使用8044芯片作為通信控制器或各分機(jī)的CPU。8044芯片內(nèi)部集成了SDLC,HDLC等通信協(xié)議,并且集成了相應(yīng)的硬件電路,通過硬件電路和標(biāo)準(zhǔn)協(xié)議的配合,使系統(tǒng)的通訊準(zhǔn)確

2、、可靠、快速。8044在市場上日漸稀少,雖然有8344可替代,但幾百元的價(jià)位與普通單片機(jī)幾元至幾十元的價(jià)位相差甚遠(yuǎn),用戶在開發(fā)一般的單片機(jī)應(yīng)用系統(tǒng)時(shí),都希望能用簡單的電路和簡單的通信協(xié)議完成數(shù)據(jù)交換。譬如:利用單片機(jī)本身所提供的簡單串行接口,加上總線驅(qū)動器如SN75176等組合成簡單的RS485通訊網(wǎng)絡(luò)。本文所述的方法已成功地應(yīng)用于工程項(xiàng)目,一臺主機(jī)與60臺從機(jī)通訊,通訊波特率達(dá)64KBPS。2總線驅(qū)動器芯片SN75176常用的RS485總線驅(qū)動芯片有SN75174,SN75175,SN75176。SN75176芯片有一個發(fā)送器和一個接收器,非常適合作為RS485總線驅(qū)動芯片。SN75176及

3、其邏輯如圖1所示。圖1SN75176芯片及其邏輯關(guān)系3RS485方式構(gòu)成的多機(jī)通信原理在由單片機(jī)構(gòu)成的多機(jī)串行通信系統(tǒng)中,一般采用主從式結(jié)構(gòu):從機(jī)不主動發(fā)送命令或數(shù)據(jù),一切都由主機(jī)控制。并且在一個多機(jī)通信系統(tǒng)中,只有一臺單機(jī)作為主機(jī),各臺從機(jī)之間不能相互通訊,即使有信息交換也必須通過主機(jī)轉(zhuǎn)發(fā)。采用RS485構(gòu)成的多機(jī)通訊原理框圖,如圖2所示。圖2采用RS485構(gòu)成的多機(jī)通訊原理框圖在總線末端接一個匹配電阻,吸收總線上的反射信號,保證正常傳輸信號干凈、無毛刺。匹配電阻的取值應(yīng)該與總線的特性阻抗相當(dāng)。當(dāng)總線上沒有信號傳輸時(shí),總線處于懸浮狀態(tài),容易受干擾信號的影響。將總線上差分信號的正端A+和+5電

4、源間接一個10K的電阻;正端A+和負(fù)端B-間接一個10K的電阻;負(fù)端B-和地間接一個10K的電阻,形成一個電阻網(wǎng)絡(luò)。當(dāng)總線上沒有信號傳輸時(shí),正端A+的電平大約為3.2V,負(fù)端B-的電平大約為1.6V,即使有干擾信號,卻很難產(chǎn)生串行通信的起始信號0,從而增加了總線抗干擾的能力。4通信規(guī)則由于RS485通訊是一種半雙工通訊,發(fā)送和接收共用同一物理信道。在任意時(shí)刻只允許一臺單機(jī)處于發(fā)送狀態(tài)。因此要求應(yīng)答的單機(jī)必須在偵聽到總線上呼叫信號已經(jīng)發(fā)送完畢,并且沒有其它單機(jī)發(fā)出應(yīng)答信號的情況下,才能應(yīng)答。半雙工通訊對主機(jī)和從機(jī)的發(fā)送和接收時(shí)序有嚴(yán)格的要求。如果在時(shí)序上配合不好,就會發(fā)生總線沖突,使整個系統(tǒng)的通

5、訊癱瘓,無法正常工作。要做到總線上的設(shè)備在時(shí)序上的嚴(yán)格配合,必須要遵從以下幾項(xiàng)原則:1) 復(fù)位時(shí),主從機(jī)都應(yīng)該處于接收狀態(tài)。SN75176芯片的發(fā)送和接收功能轉(zhuǎn)換是由芯片的 RE* ,DE端控制的。RE*=1,DE=1時(shí),SN75176發(fā)送狀態(tài);RE*=0,DE=0時(shí),SN75176處于接收狀態(tài)。一般使用單片機(jī)的一根口線連接RE*,DE端。在上電復(fù)位時(shí),由于硬件電路穩(wěn)定需要一定的時(shí)間,并且單片機(jī)各端口復(fù)位后處于高電平狀態(tài),這樣就會使總線上各個分機(jī)處于發(fā)送狀態(tài),加上上電時(shí)各電路的不穩(wěn)定,可能向總線發(fā)送信息。因此,如果用一根口線作發(fā)送和接收控制信號,應(yīng)該將口線反向后接入SN75176的控制端,使上

6、電時(shí)SN75176處于接收狀態(tài)。另外,在主從機(jī)軟件上也應(yīng)附加若干處理措施,如:上電時(shí)或正式通訊之前,對串行口做幾次空操作,清除端口的非法數(shù)據(jù)和命令。2) 控制端RE*,DE的信號的有效脈寬應(yīng)該大于發(fā)送或接收一幀信號的寬度。在RS232,RS422等全雙工通訊過程中,發(fā)送和接收信號分別在不同的物理鏈路上傳輸,發(fā)送端始終為發(fā)送端,接收端始終為接收端,不存在發(fā)送、接收控制信號切換問題。在RS485半雙工通訊中,由于SN75176的發(fā)送和接收都由同一器件完成,并且發(fā)送和接收使用同一物理鏈路,必須對控制信號進(jìn)行切換??刂菩盘柡螘r(shí)為高電平,何時(shí)為低電平,一般以單片機(jī)的TI,RI信號作參考。發(fā)送時(shí),檢測TI

7、是否建立起來,當(dāng)TI為高電平后關(guān)閉發(fā)送功能轉(zhuǎn)為接收功能;接收時(shí),檢測RI是否建立起來,當(dāng)RI為高電平后,接收完畢,又可以轉(zhuǎn)為發(fā)送。在理論上雖然行得通,但在實(shí)際聯(lián)調(diào)中卻出現(xiàn)傳輸數(shù)據(jù)時(shí)對時(shí)錯的現(xiàn)象。根據(jù)查證有關(guān)資料,并在聯(lián)調(diào)中借助存儲示波器反復(fù)測試,才發(fā)現(xiàn)一個值得注意的問題,我們可以查看單片機(jī)的時(shí)序:圖3串行口模式3時(shí)序圖單片機(jī)在串行口發(fā)送數(shù)據(jù)時(shí),只要將8位數(shù)據(jù)位傳送完畢,TI標(biāo)志即建立,但此時(shí)應(yīng)發(fā)送的第九位數(shù)據(jù)位(若發(fā)送地址幀時(shí))和停止位尚未發(fā)出。如果在這是關(guān)閉發(fā)送控制,勢必造成發(fā)送幀數(shù)據(jù)不完整。如果單片機(jī)多機(jī)通訊采用較高的波特率,幾條操作指令的延時(shí)就可能超過2位(或1位)數(shù)據(jù)的發(fā)送時(shí)間,問題或

8、許不會出現(xiàn)。但是如果采用較低波特率,如9600,發(fā)送一位數(shù)據(jù)需100s左右,單靠幾條操作指令的延時(shí)遠(yuǎn)遠(yuǎn)不夠,問題就明顯地暴露出來。接收數(shù)據(jù)時(shí)也同樣如此,單片機(jī)在接收完8個數(shù)據(jù)位后就建立起RI信號,但此時(shí)還未接收到第九位數(shù)據(jù)位(若接收地址幀時(shí))和停止位。所以,接收端必須延時(shí)大于2位數(shù)據(jù)位的時(shí)間(1位數(shù)據(jù)位時(shí)間=1/波特率),再作應(yīng)答,否則會發(fā)生總線沖突。3) 總線上所連接的各單機(jī)的發(fā)送控制信號在時(shí)序上完全隔開。為了保證發(fā)送和接收信號的完整和正確,避免總線上信號的碰撞,對總線的使用權(quán)必須進(jìn)行分配才能避免競爭,連接到總線上的單機(jī),其發(fā)送控制信號在時(shí)間上要完全隔離??傊?,發(fā)送和接收控制信號應(yīng)該足夠?qū)?,以保證完整地接收一幀數(shù)據(jù),任意兩個單機(jī)的發(fā)送控制信號在時(shí)間上完全分開,避免總線爭端。程序流程框圖,參見圖4。其中:a)為發(fā)送流程圖;b)為接收流程圖。圖4程序流程圖注:延時(shí)T秒的取值(1) 傳送地址幀時(shí),T>2X(1/波特率),可以選取T=2.5X(1/波特率)。(2) 傳送數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論