<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)與RS485應(yīng)用電路圖

          51單片機(jī)與RS485應(yīng)用電路圖

          作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          最近用到RS485,找了點(diǎn)資料,保存保存以后用。

          本文引用地址:http://www.ex-cimer.com/article/201611/320896.htm

          --------以上部分請(qǐng)勿修改!-------------
          提高485總線的可靠性

          摘 要:就485總線應(yīng)用中易出現(xiàn)的問題,分析了產(chǎn)生的原因并給出解決問題的軟硬件方案
          和措施。
          關(guān)鍵詞:RS-485總線、串行異步通信


          --------------------------------------------------------------------------------

          1 問題的提出

          在應(yīng)用系統(tǒng)中,RS-485半雙工異步通信總線是被各個(gè)研發(fā)機(jī)構(gòu)廣泛使用的數(shù)據(jù)通信總
          線,它往往應(yīng)用在集中控制樞紐與分散控制單元之間。系統(tǒng)簡(jiǎn)圖如圖1所示。


          圖1. RS-485系統(tǒng)示意圖

          由于實(shí)際應(yīng)用系統(tǒng)中,往往分散控制單元數(shù)量較多,分布較遠(yuǎn),現(xiàn)場(chǎng)存在各種干擾,所
          以通信的可靠性不高,再加上軟硬件設(shè)計(jì)的不完善,使得實(shí)際工程應(yīng)用中如何保障RS-485總
          線的通信的可靠性成為各研發(fā)機(jī)構(gòu)的一塊心病。

          在使用RS-485總線時(shí),如果簡(jiǎn)單地按常規(guī)方式設(shè)計(jì)電路,在實(shí)際工程中可能有以下兩個(gè)問
          題出現(xiàn)。一是通信數(shù)據(jù)收發(fā)的可靠性問題;二是在多機(jī)通信方式下,一個(gè)節(jié)點(diǎn)的故障(如死
          機(jī)),往往會(huì)使得整個(gè)系統(tǒng)的通信框架崩潰,而且給故障的排查帶來困難。

          針對(duì)上述問題,我們對(duì)485總線的軟硬件采取了具體的改進(jìn)措施

          2 硬件電路的設(shè)計(jì)

          現(xiàn)以8031單片機(jī)自帶的異步通信口,外接75176芯片轉(zhuǎn)換成485總線為例。其中為了實(shí)現(xiàn)
          總線與單片機(jī)系統(tǒng)的隔離,在8031的異步通信口與75176之間采用光耦隔離。電路原理圖如
          圖2所示。


          圖 2 改進(jìn)后的485通信口原理圖

          充分考慮現(xiàn)場(chǎng)的復(fù)雜環(huán)境,在電路設(shè)計(jì)中注意了以下三個(gè)問題。

          2.1 SN75176 485芯片DE控制端的設(shè)計(jì)

          由于應(yīng)用系統(tǒng)中,主機(jī)與分機(jī)相隔較遠(yuǎn),通信線路的總長(zhǎng)度往往超過400米,而分機(jī)系
          統(tǒng)上電或復(fù)位又常常不在同一個(gè)時(shí)刻完成。如果在此時(shí)某個(gè)75176的DE端電位為“1”,那
          么它的485總線輸出將會(huì)處于發(fā)送狀態(tài),也就是占用了通信總線,這樣其它的分機(jī)就無法與
          主機(jī)進(jìn)行通信。這種情況尤其表現(xiàn)在某個(gè)分機(jī)出現(xiàn)異常情況下(死機(jī)),會(huì)使整個(gè)系統(tǒng)通信
          崩潰。因此在電路設(shè)計(jì)時(shí),應(yīng)保證系統(tǒng)上電復(fù)位時(shí)75176的DE端電位為“0”。由于8031在復(fù)
          位期間,I/O口輸出高電平,故圖2電路的接法有效地解決復(fù)位期間分機(jī)“咬”總線的問題。

          2.2 隔離光耦電路的參數(shù)選取

          在應(yīng)用系統(tǒng)中,由于要對(duì)現(xiàn)場(chǎng)情況進(jìn)行實(shí)時(shí)監(jiān)控及響應(yīng),通信數(shù)據(jù)的波特率往往做得較
          高(通常都在4800波特以上)。限制通信波特率提高的“瓶頸”,并不是現(xiàn)場(chǎng)的導(dǎo)線(現(xiàn)場(chǎng)
          施工一般使用5類非屏蔽的雙絞線),而是在與單片機(jī)系統(tǒng)進(jìn)行信號(hào)隔離的光耦電路上。此
          處采用TIL117。電路設(shè)計(jì)中可以考慮采用高速光耦,如6N137、6N136等芯片,也可以優(yōu)化普
          通光耦電路參數(shù)的設(shè)計(jì),使之能工作在最佳狀態(tài)。例如:電阻R2、R3如果選取得較大,將會(huì)
          使光耦的發(fā)光管由截止進(jìn)入飽和變得較慢;如果選取得過小,退出飽和也會(huì)很慢,所以這兩
          只電阻的數(shù)值要精心選取,不同型號(hào)的光耦及驅(qū)動(dòng)電路使得這兩個(gè)電阻的數(shù)值略有差異,這
          一點(diǎn)在電路設(shè)計(jì)中要特別慎重,不能隨意,通??梢杂蓪?shí)驗(yàn)來定。

          2.3 485總線輸出電路部分的設(shè)計(jì)

          輸出電路的設(shè)計(jì)要充分考慮到線路上的各種干擾及線路特性阻抗的匹配。由于工程環(huán)境
          比較復(fù)雜,現(xiàn)場(chǎng)常有各種形式的干擾源,所以485總線的傳輸端一定要加有保護(hù)措施。在電
          路設(shè)計(jì)中采用穩(wěn)壓管D1、D2組成的吸收回路,也可以選用能夠抗浪涌的TVS瞬態(tài)雜波抑制器
          件,或者直接選用能抗雷擊的485芯片(如SN75LBC184等)。

          考慮到線路的特殊情況(如某一臺(tái)分機(jī)的485芯片被擊穿短路),為防止總線中其它分
          機(jī)的通信受到影響,在75176的485信號(hào)輸出端串聯(lián)了兩個(gè)20Ω的電阻R10、R11。這樣本機(jī)的
          硬件故障就不會(huì)使整個(gè)總線的通信受到影響。

          在應(yīng)用系統(tǒng)工程的現(xiàn)場(chǎng)施工中,由于通信載體是雙絞線,它的特性阻抗為120Ω左右,
          所以線路設(shè)計(jì)時(shí),在RS-485網(wǎng)絡(luò)傳輸線的始端和末端各應(yīng)接1只120Ω的匹配電阻(如圖2中
          R8),以減少線路上傳輸信號(hào)的反射。

          由于RS-485芯片的特性,接收器的檢測(cè)靈敏度為± 200mV,即差分輸入端VA-VB ≥
          +200mV,輸出邏輯1,VA-VB ≤-200mV,輸出邏輯0;而A、B端電位差的絕對(duì)值小于200mV
          時(shí),輸出為不確定。如果在總線上所有發(fā)送器被禁止時(shí),接收器輸出邏輯0,這會(huì)誤認(rèn)為通
          信幀的起始引起工作不正常。解決這個(gè)問題的辦法是人為地使A端電位高于B兩端電位,這樣
          RXD的電平在485總線不發(fā)送期間(總線懸浮時(shí))呈現(xiàn)唯一的高電平,8031單片機(jī)就不會(huì)被誤
          中斷而收到亂字符。通過在485電路的A、B輸出端加接上拉、下拉電阻R7、R9,即可很好地
          解決這個(gè)問題。

          3 軟件的編程

          485芯片的軟件編程對(duì)產(chǎn)品的可靠性也有很大影響。由于485總線是異步半雙工的通信總
          線,在某一個(gè)時(shí)刻,總線只可能呈現(xiàn)一種狀態(tài),所以這種方式一般適用于主機(jī)對(duì)分機(jī)的查詢
          方式通信,總線上必然有一臺(tái)始終處于主機(jī)地位的設(shè)備在巡檢其它的分機(jī),所以需要制定一
          套合理的通信協(xié)議來協(xié)調(diào)總線的分時(shí)共用。這里采用的是數(shù)據(jù)包通信方式。通信數(shù)據(jù)是成幀
          成包發(fā)送的,每包數(shù)據(jù)都有引導(dǎo)碼、長(zhǎng)度碼、地址碼、命令碼、內(nèi)容、校驗(yàn)碼等部分組成。
          其中引導(dǎo)碼是用于同步每一包數(shù)據(jù)的引導(dǎo)頭;長(zhǎng)度碼是這一包數(shù)據(jù)的總長(zhǎng)度;命令碼是主機(jī)
          對(duì)分機(jī)(或分機(jī)應(yīng)答主機(jī))的控制命令;地址碼是分機(jī)的本機(jī)地址號(hào);“內(nèi)容”是這一包數(shù)
          據(jù)里的各種信息;校驗(yàn)碼是這一包數(shù)據(jù)的校驗(yàn)標(biāo)志,可以采用奇偶校驗(yàn)、和校驗(yàn)等不同的方
          式。

          在485芯片的通信中,尤其要注意對(duì)485控制端DE的軟件編程。為了可靠的工作,在485
          總線狀態(tài)切換時(shí)需要做適當(dāng)延時(shí),再進(jìn)行數(shù)據(jù)的收發(fā)。具體的做法是在數(shù)據(jù)發(fā)送狀態(tài)下,先
          將控制端置“1”,延時(shí)1ms左右的時(shí)間,再發(fā)送有效的數(shù)據(jù),一包數(shù)據(jù)發(fā)送結(jié)束后再延時(shí)
          1ms后,將控制端置“0”。這樣的處理會(huì)使總線在狀態(tài)切換時(shí),有一個(gè)穩(wěn)定的工作過程。

          4 結(jié)論

          經(jīng)過以上的軟硬件共同處理,RS-485總線在應(yīng)用系統(tǒng)工程中的可靠性大大提高,在通常
          的環(huán)境條件下,24小時(shí)連續(xù)開機(jī),系統(tǒng)的通信始終處于正常狀態(tài),整機(jī)性能滿足了現(xiàn)場(chǎng)工程
          的需要。

          但是RS-485總線仍然只是一種常規(guī)的通信總線,它不能夠做總線的自動(dòng)仲裁,也就是不
          能夠同時(shí)發(fā)送數(shù)據(jù)以避免總線競(jìng)爭(zhēng),所以整個(gè)系統(tǒng)的通信效率必然較低,數(shù)據(jù)的冗余量較
          大,對(duì)于速度要求高的應(yīng)用場(chǎng)所不適宜用RS-485總線。同時(shí)由于RS-485總線上通常只有一臺(tái)
          主機(jī),所以這種總線方式是典型的集中-分散型控制系統(tǒng)。一旦主機(jī)出現(xiàn)故障,會(huì)使整個(gè)系
          統(tǒng)的通信陷于癱瘓狀態(tài),因此做好主機(jī)的在線熱備份是一個(gè)重要措施。

          盡管RS-485總線存在這樣那樣的問題,但由于它的線路設(shè)計(jì)簡(jiǎn)單、價(jià)格低廉、控制方
          便,只要合理的使用在某些場(chǎng)所仍然能發(fā)揮良好的作用。



          關(guān)鍵詞: 51單片機(jī)RS485電路

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();