機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
單片機RS-485多機通訊的實現(xiàn)
單片機RS-485多機通訊的實現(xiàn)
 更新時間:2009-5-31 13:58:33  點擊數(shù):3
【字體: 字體顏色
摘 要 本文介紹一種能利用RS-485電氣特性和簡單的結(jié)構(gòu)方式,采用自定義串行通信協(xié)議,實現(xiàn)單片機RS-485多機通訊的方法和技巧。
  關(guān)鍵詞 單片機,RS-485總線,總線沖突,串行通信

1 簡介
  RS-485串行總線接口標準以差分平衡方式傳輸信號,具有很強的抗共模干擾的能力,允許一對雙絞線上一個發(fā)送器驅(qū)動多個負載設(shè)備。工業(yè)現(xiàn)場控制系統(tǒng)中一般都采用該總線標準進行數(shù)據(jù)傳輸,而且一般采用RS-485串行總線接口標準的系統(tǒng)都使用8044芯片作為通信控制器或各分機的CPU。8044芯片內(nèi)部集成了SDLC,HDLC等通信協(xié)議,并且集成了相應的硬件電路,通過硬件電路和標準協(xié)議的配合,使系統(tǒng)的通訊準確、可靠、快速。8044在市場上日漸稀少,雖然有8344可替代,但幾百元的價位與普通單片機幾元至幾十元的價位相差甚遠,用戶在開發(fā)一般的單片機應用系統(tǒng)時,都希望能用簡單的電路和簡單的通信協(xié)議完成數(shù)據(jù)交換。譬如:利用單片機本身所提供的簡單串行接口,加上總線驅(qū)動器如SN75176等組合成簡單的RS-485通訊網(wǎng)絡。本文所述的方法已成功地應用于工程項目,一臺主機與60臺從機通訊,通訊波特率達64KBPS。
2 總線驅(qū)動器芯片SN75176
  常用的RS-485總線驅(qū)動芯片有SN75174,SN75175,SN75176。SN75176芯片有一個發(fā)送器和一個接收器,非常適合作為RS-485總線驅(qū)動芯片。
  SN75176及其邏輯如圖1所示。

圖1 SN75176芯片及其邏輯關(guān)系

3 RS-485方式構(gòu)成的多機通信原理
  在由單片機構(gòu)成的多機串行通信系統(tǒng)中,一般采用主從式結(jié)構(gòu):從機不主動發(fā)送命令或數(shù)據(jù),一切都由主機控制。并且在一個多機通信系統(tǒng)中,只有一臺單機作為主機,各臺從機之間不能相互通訊,即使有信息交換也必須通過主機轉(zhuǎn)發(fā)。采用RS-485構(gòu)成的多機通訊原理框圖,如圖2所示。

圖2 采用RS-485構(gòu)成的多機通訊原理框圖

  在總線末端接一個匹配電阻,吸收總線上的反射信號,保證正常傳輸信號干凈、無毛刺。匹配電阻的取值應該與總線的特性阻抗相當。
  當總線上沒有信號傳輸時,總線處于懸浮狀態(tài),容易受干擾信號的影響。將總線上差分信號的正端A+和+5電源間接一個10K的電阻;正端A+和負端B-間接一個10K的電阻;負端B-和地間接一個10K的電阻,形成一個電阻網(wǎng)絡。當總線上沒有信號傳輸時,正端A+的電平大約為3.2V,負端B-的電平大約為1.6V,即使有干擾信號,卻很難產(chǎn)生串行通信的起始信號0,從而增加了總線抗干擾的能力。
4 通信規(guī)則
  由于RS-485通訊是一種半雙工通訊,發(fā)送和接收共用同一物理信道。在任意時刻只允許一臺單機處于發(fā)送狀態(tài)。因此要求應答的單機必須在偵聽到總線上呼叫信號已經(jīng)發(fā)送完畢,并且沒有其它單機發(fā)出應答信號的情況下,才能應答。半雙工通訊對主機和從機的發(fā)送和接收時序有嚴格的要求。如果在時序上配合不好,就會發(fā)生總線沖突,使整個系統(tǒng)的通訊癱瘓,無法正常工作。要做到總線上的設(shè)備在時序上的嚴格配合,必須要遵從以下幾項原則:
  1) 復位時,主從機都應該處于接收狀態(tài)。
  SN75176芯片的發(fā)送和接收功能轉(zhuǎn)換是由芯片的 RE* ,DE端控制的。RE*=1,DE=1時,SN75176發(fā)送狀態(tài);RE*=0,DE=0時,SN75176處于接收狀態(tài)。一般使用單片機的一根口線連接RE*,DE端。在上電復位時,由于硬件電路穩(wěn)定需要一定的時間,并且單片機各端口復位后處于高電平狀態(tài),這樣就會使總線上各個分機處于發(fā)送狀態(tài),加上上電時各電路的不穩(wěn)定,可能向總線發(fā)送信息。因此,如果用一根口線作發(fā)送和接收控制信號,應該將口線反向后接入SN75176的控制端,使上電時SN75176處于接收狀態(tài)。
  另外,在主從機軟件上也應附加若干處理措施,如:上電時或正式通訊之前,對串行口做幾次空操作,清除端口的非法數(shù)據(jù)和命令。
  2) 控制端RE*,DE的信號的有效脈寬應該大于發(fā)送或接收一幀信號的寬度。
  在RS-232,RS-422等全雙工通訊過程中,發(fā)送和接收信號分別在不同的物理鏈路上傳輸,發(fā)送端始終為發(fā)送端,接收端始終為接收端,不存在發(fā)送、接收控制信號切換問題。在RS-485半雙工通訊中,由于SN75176的發(fā)送和接收都由同一器件完成,并且發(fā)送和接收使用同一物理鏈路,必須對控制信號進行切換。控制信號何時為高電平,何時為低電平,一般以單片機的TI,RI信號作參考。
  發(fā)送時,檢測TI是否建立起來,當TI為高電平后關(guān)閉發(fā)送功能轉(zhuǎn)為接收功能;
  接收時,檢測RI是否建立起來,當RI為高電平后,接收完畢,又可以轉(zhuǎn)為發(fā)送。
  在理論上雖然行得通,但在實際聯(lián)調(diào)中卻出現(xiàn)傳輸數(shù)據(jù)時對時錯的現(xiàn)象。根據(jù)查證有關(guān)資料,并在聯(lián)調(diào)中借助存儲示波器反復測試,才發(fā)現(xiàn)一個值得注意的問題,我們可以查看單片機的時序:

圖3 串行口模式3時序圖

  單片機在串行口發(fā)送數(shù)據(jù)時,只要將8位數(shù)據(jù)位傳送完畢,TI標志即建立,但此時應發(fā)送的第九位數(shù)據(jù)位(若發(fā)送地址幀時)和停止位尚未發(fā)出。如果在這是關(guān)閉發(fā)送控制,勢必造成發(fā)送幀數(shù)據(jù)不完整。如果單片機多機通訊采用較高的波特率,幾條操作指令的延時就可能超過2位(或1位)數(shù)據(jù)的發(fā)送時間,問題或許不會出現(xiàn)。但是如果采用較低波特率,如9600,發(fā)送一位數(shù)據(jù)需100μs左右,單靠幾條操作指令的延時遠遠不夠,問題就明顯地暴露出來。接收數(shù)據(jù)時也同樣如此,單片機在接收完8個數(shù)據(jù)位后就建立起RI信號,但此時還未接收到第九位數(shù)據(jù)位(若接收地址幀時)和停止位。所以,接收端必須延時大于2位數(shù)據(jù)位的時間(1位數(shù)據(jù)位時間=1/波特率),再作應答,否則會發(fā)生總線沖突。
  3) 總線上所連接的各單機的發(fā)送控制信號在時序上完全隔開。
  為了保證發(fā)送和接收信號的完整和正確,避免總線上信號的碰撞,對總線的使用權(quán)必須進行分配才能避免競爭,連接到總線上的單機,其發(fā)送控制信號在時間上要完全隔離。
  總之,發(fā)送和接收控制信號應該足夠?qū)挘员WC完整地接收一幀數(shù)據(jù),任意兩個單機的發(fā)送控制信號在時間上完全分開,避免總線爭端。
  程序流程框圖,參見圖4。其中:a)為發(fā)送流程圖;b)為接收流程圖。

圖4 程序流程圖

注:延時T秒的取值
(1) 傳送地址幀時,T>2X(1/波特率),可以選取T=2.5X(1/波特率)。
(2) 傳送數(shù)據(jù)幀時,T>1X(1/波特率),可以選取T=1.5X(1/波特率)。

  • 上一篇: 微控制器的抗干擾軟件編程方法
  • 下一篇: 如何解決串行E2PROM 24C02在應用中的問題
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1