新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > RS-485總線的方向控制如何實(shí)現(xiàn)?要注意什么?

RS-485總線的方向控制如何實(shí)現(xiàn)?要注意什么?

作者: 時(shí)間:2016-12-15 來源:網(wǎng)絡(luò) 收藏
明:本篇原則上跟蹤通訊技術(shù)的帖子“rs485%u7684%u65B9%u5411%u63A7%u5236%u4E00%u822C%u600E%u4E48%u5B9E%u73B0">請(qǐng)教:rs485方向控制一般怎么實(shí)現(xiàn)”編寫,----我不寫那個(gè)過程,讓時(shí)間跟隨那個(gè)過程。目的是為了體現(xiàn)一個(gè)事從開始走到結(jié)果出來的可能是不尋常的過程。不便之處請(qǐng)讀者見諒。

A:準(zhǔn)雙工模式的RS-485會(huì)涉及這一問題,對(duì)于對(duì)于4線制的RS-485,因?yàn)樾盘?hào)是單向傳輸?shù)?,不存在這樣的問題。因?yàn)闇?zhǔn)雙工要在一條總線上傳輸上行和下行的信號(hào)。要解決這個(gè)問題,分兩個(gè)方面考慮----我們?cè)诜治鲞@個(gè)問題時(shí)將我們認(rèn)識(shí)到的都寫進(jìn)去,以便給大家提供一個(gè)電路設(shè)計(jì)時(shí)、考慮和分析處理問題的綜合參考,這也許不是很通用的范例,但對(duì)我們來說,有這樣的例子已經(jīng)是很滿足的“范例”了。值得提醒的是,部分同學(xué)可能認(rèn)為高手很特別,其實(shí)不然,他們會(huì)的東西你可能早知道大概了,但他們手里的知道與多少存在點(diǎn)生疏的情況相比,他們的知識(shí)比較活而有序,而你的比較散亂而無序,象一盤散沙,多與他們交流,你很快就會(huì)發(fā)現(xiàn)自己離高手的差距并不大,只是在應(yīng)用上,時(shí)不時(shí)出現(xiàn)這個(gè)想不到那個(gè)想不到。他們能這樣是靠積累得來的,靠自己的磨練出來的。你付出了同樣的勞動(dòng),應(yīng)該不難趕上和超過他們。

本文引用地址:http://www.butianyuan.cn/article/201612/330159.htm

一、注意事項(xiàng)----設(shè)計(jì)電路前要考慮什么問題?

存在這樣的問題的位置有2處:收發(fā)節(jié)點(diǎn)和線路中繼器。為了防止驅(qū)動(dòng)器沖突,必須考慮方向控制的問題。如圖,理論上有接收優(yōu)先和發(fā)送優(yōu)先方法。如圖1中的上和下的兩個(gè)接法,是接收優(yōu)先的方法。所謂接收優(yōu)先,就是如果處于接收狀態(tài),硬件電路自動(dòng)關(guān)閉發(fā)送功能;反之,如果電路處于發(fā)送狀態(tài)下硬件電路自動(dòng)關(guān)閉接收功能,甚至可以關(guān)斷接收器進(jìn)行發(fā)送,那么就是發(fā)送優(yōu)先。

事實(shí)上,發(fā)送優(yōu)先的方法是不可行的,但人們往往最先想到采用這種方法。因?yàn)槿绻娐反嬖诮邮諗?shù)據(jù)的時(shí)候已經(jīng)說明其它節(jié)點(diǎn)的驅(qū)動(dòng)器也在工作,如果這時(shí)強(qiáng)行發(fā)送數(shù)據(jù)不但會(huì)自己的數(shù)據(jù)發(fā)送不成還會(huì)破壞其它節(jié)點(diǎn)正在發(fā)送的數(shù)據(jù)。因此,對(duì)于兩線制的RS-485來說,只能采取接收優(yōu)先的方法。這是用RS-485做信號(hào)雙向傳輸時(shí)首先要注意的問題。

另一個(gè)問題是要注意RS-485的定義和數(shù)據(jù)的形式:線路側(cè)和設(shè)備側(cè),有效數(shù)據(jù)都是低電平而不是高電平,這是RS-485的定義所決定的。如圖2,發(fā)送器和接收器兩部分都如此。(如需了解為什么要選擇是低電平有效,請(qǐng)參閱“Q115.數(shù)字電路為什么是低電平有效的多?”)。數(shù)據(jù)形式是不可以控制的,如連續(xù)或間斷地出現(xiàn)0或1,在此期間,接收器不能因?yàn)橐粫r(shí)的電平轉(zhuǎn)換就釋放總線給發(fā)送器,以便讓接收器可以收到連結(jié)的1(通常0沒有問題,因?yàn)槲覀兛紤]問題就是從它開始的)。

二、如何實(shí)施?

表面上接收優(yōu)先很容易實(shí)現(xiàn),但實(shí)際上要考慮的問題并不是那么簡單的。我們下面把文件寫長一點(diǎn),逐個(gè)將問題加以細(xì)剖。

1 目標(biāo)及對(duì)目標(biāo)的理解

如果線路收發(fā)器有單片機(jī),問題比較容易解決,方向控制由節(jié)點(diǎn)主機(jī)的I/O實(shí)施控制就是了。不過,這并不是絕對(duì)沒有問題。畢竟它也要處理時(shí)間。我們現(xiàn)在的目標(biāo)是最大限度的避免軟件控制而使用硬件控制,并適合線路中繼器沒有單片機(jī)支持的要求。

如果節(jié)點(diǎn)類似于中繼器性質(zhì),那么就不會(huì)再有單片機(jī)支持。這時(shí),只有依靠硬件實(shí)現(xiàn)。純硬件實(shí)現(xiàn),可以避開軟件問題,工作可靠性和對(duì)線路數(shù)據(jù)的破壞性要下降。因此,下面我們重點(diǎn)分析討論這個(gè)問題。

如圖1,我們已經(jīng)否定了中間一個(gè)圖的發(fā)送優(yōu)先方式----狠狠地給它打一個(gè)叉叉!那么,剩下的雙向轉(zhuǎn)發(fā)電路還是已經(jīng)是否完善了?觀察發(fā)現(xiàn),當(dāng)線路處于空閑狀態(tài)或一旦輸出高電平時(shí),所有接收器都將被鎖定在高電平輸出----所有的接收器都處于被禁止?fàn)顟B(tài)而沒有一個(gè)可以能被打開----無論此時(shí)線路上A、B端是高電平還是低電平,都不能為接收器所接收。與此同時(shí),此時(shí)的驅(qū)動(dòng)器是全部打開的。不論4腳的電平是高或是低,都被直接送出線路A、B上,這樣是無論哪個(gè)節(jié)點(diǎn)都在“發(fā)送”數(shù)據(jù),因而,也無論哪個(gè)節(jié)點(diǎn)也發(fā)送不了數(shù)據(jù)!可見,圖1的方法過于簡單,不能使用,只能作為一種原理性思路。

2 基本思路----了解矛盾的要點(diǎn)

從上述分析可以發(fā)現(xiàn),不論接收器輸出高電平還是低電平,都要關(guān)閉驅(qū)動(dòng)器才能保證接收不被發(fā)送器的輸出干擾與破壞總線上的數(shù)據(jù)。要做到這點(diǎn),似乎很矛盾。但我們也知道,總線上必定要有空閑時(shí)間的,不然就不能正常傳輸數(shù)據(jù)了。如何識(shí)別正在傳輸高電平(數(shù)據(jù)1狀態(tài))和空閑狀態(tài)并利用兩者的差異來解決所面臨的問題,既是我們要解決的矛盾,也是我們現(xiàn)在的設(shè)計(jì)任務(wù)。為了在這種看上去很矛盾的情況下達(dá)到我們的目的,我們先進(jìn)行電路狀態(tài)確認(rèn):

  • 發(fā)送器的屏蔽----為了在不發(fā)送數(shù)據(jù)時(shí)不管總線是真正空閑或是連續(xù)處于發(fā)送1的假空閑狀態(tài)、正在接收0的真占用狀態(tài),控制電路仍然使發(fā)送功能處于關(guān)閉狀態(tài)(被屏蔽);
  • 發(fā)送器的開啟----而只有在確認(rèn)不是正在接收數(shù)據(jù)時(shí)再通過“發(fā)送控制”信號(hào)來撒銷對(duì)發(fā)送功能的屏蔽就是電路要實(shí)現(xiàn)的功能----體現(xiàn)了完全的接收優(yōu)先的前提;
  • 防止數(shù)據(jù)倒灌----當(dāng)然,發(fā)送時(shí)數(shù)據(jù)不能倒灌回來(發(fā)送時(shí),接收控制端必須為低電平)。如若不然,自己發(fā)送的低電平信號(hào)反過來鎖死發(fā)送器就無法“發(fā)送”數(shù)據(jù)了。
  • 狀態(tài)控制小結(jié)----只有在節(jié)點(diǎn)確認(rèn)數(shù)據(jù)線空閑后再主動(dòng)去開啟驅(qū)動(dòng)器并占用總線。具體上可從數(shù)據(jù)的特點(diǎn)下手:總線上是不會(huì)連續(xù)多次發(fā)送全1或全0的數(shù)據(jù)的,因此,如果利用這一特點(diǎn)作為觸發(fā)事件,每次給總線以一定的占用時(shí)間t就可以解決問題。硬件上能實(shí)現(xiàn)這個(gè)要求的就是單穩(wěn)態(tài)觸發(fā)器。

3 換向控制

現(xiàn)在讓我們的看看圈圈設(shè)計(jì)的一個(gè)電路(圖3)----這個(gè)電路是他改了幾次后出來的,電路在工作上有單穩(wěn)態(tài)電路的特點(diǎn),電路圖如圖3所示。詳見通訊技術(shù)的帖子“請(qǐng)教:rs485的方向控制一般怎么實(shí)現(xiàn)”(因本篇跟蹤此帖進(jìn)行修改,故而標(biāo)題就那樣起了)。圈圈的這個(gè)圖,除了參數(shù)需要調(diào)整外,原理是基本上可行的,目前的問題是(不管是不是高速傳輸),可能因觸發(fā)開通時(shí)間影響導(dǎo)致最早發(fā)送數(shù)據(jù)丟失或損壞(因?yàn)镃1和R3是有時(shí)間常數(shù)的,雖然充電時(shí)是經(jīng)過Q1進(jìn)行,時(shí)間很短,但不能不考慮數(shù)據(jù)被破壞的可能。稍后詳之。)。原理/邏輯上,如果不考慮接收高電平數(shù)據(jù),Q2和Q4還可以省去。電路中最值得注意的是R2的設(shè)置比較妙,它是一個(gè)“軟”下拉電阻:在C2的維持下,即使存在持續(xù)接收高電平時(shí)有“發(fā)送”信號(hào),也由于Q3的大電流作用而屏蔽了Tx信號(hào)的下拉。這個(gè)電路,開始看C2是多余的,但注意到存在連續(xù)高電平的數(shù)據(jù)后就能明白少不了它。只是它的取值比較困難----既要考慮維持連續(xù)接收高電平時(shí)通過Q2為Q3提供電流,也要考慮時(shí)間常數(shù)的問題。另外,僅僅從接收器來看,C1是多余的,但它同樣存在連續(xù)發(fā)送高電平數(shù)據(jù)的問題,因此不能少。好在C1和C2的時(shí)間常數(shù)并不耦合,具有相互獨(dú)立性,因此,調(diào)試還是比較容易些。

從以上分析看出,完善電路的接收控制后,最關(guān)鍵的問題是C1和R3處DE(高電平數(shù)據(jù)發(fā)送使能)和/RE(低電平數(shù)據(jù)接收使能)引腳的電平問題,即充電時(shí)間受制于Q1的導(dǎo)通電阻,應(yīng)當(dāng)因此而帶來的一些影響。

總的來看,真正傳輸數(shù)據(jù)前先打開驅(qū)動(dòng)器的條件不應(yīng)改變,只有這樣才能保證數(shù)據(jù)可靠地傳輸(按常規(guī)就是這樣做的)?,F(xiàn)在的問題是:打開驅(qū)動(dòng)器的時(shí)間總是要占用時(shí)間的,要求還必須是低電平,高電平不起任何作用。同時(shí),直接用數(shù)據(jù)打開驅(qū)動(dòng)器是不可取的,這樣做有損壞數(shù)據(jù)的危險(xiǎn)。因此,可以這樣說,設(shè)計(jì)思路上與使用I/O口先打開DE再發(fā)送數(shù)據(jù)的思路是一樣的。為了達(dá)到不需要I/O干預(yù),那么就需要使用專門的開啟代碼機(jī)制解決吧。

通過線與讓I/O控制先送出開啟電平來開啟驅(qū)動(dòng)器比之由數(shù)據(jù)線先送一個(gè)字節(jié)開啟代碼相對(duì)簡單,雖然電路稍為復(fù)雜一些,但不對(duì)接收方識(shí)別提出要求。線與的方法優(yōu)點(diǎn)是之一占用時(shí)間少又類似常規(guī)機(jī)制;第二個(gè)優(yōu)點(diǎn)是節(jié)省光耦,即在線路采用光隔離措施時(shí)能與數(shù)據(jù)線共用一個(gè)光耦。但必須在發(fā)送真正的數(shù)據(jù)前及時(shí)退出。為了及時(shí)準(zhǔn)確控制,感覺用單穩(wěn)態(tài)觸發(fā)器為好。圖3的電路,影響時(shí)間常數(shù)的主要因素是數(shù)據(jù)速率。速率高,時(shí)間常數(shù)要小些,速率低,時(shí)間常數(shù)要大些。調(diào)試相對(duì)難是這個(gè)電路的不一定的不足。不過,要注意這個(gè)電路的兩個(gè)時(shí)間常數(shù)并不相同,原因是C2要經(jīng)過Q4的發(fā)射結(jié)放電,而C1不存在這樣的問題。該電路的不足還有收發(fā)控制電平不是數(shù)字信號(hào)而是模擬信號(hào)。

編輯中……

參見圖2的真值表。只要把SN75LBC184的2、3腳接到1腳就可以實(shí)現(xiàn)自動(dòng)實(shí)現(xiàn)方向控制了。這時(shí),要求控制器能夠自動(dòng)偵測(cè)線路空閑狀態(tài)。只有在到總線空閑一定的時(shí)間后才能實(shí)施自己的數(shù)據(jù)發(fā)送(由波特率決定)。

為了解決這個(gè)問題,可以按圖3的方法進(jìn)行,圖1只能作為理解接收優(yōu)先的簡易電路看待。

圖1 75LBC184雙向傳輸.gif

圖2

圖3 RS-485的雙向傳輸之換向控制.jpg

編輯中

。[一點(diǎn)知識(shí):程序跑飛是常有的事,因此,我們不可能排除一個(gè)節(jié)點(diǎn)會(huì)抱死總線的問題發(fā)生。同樣,雖然我們可以認(rèn)為使用看門狗以后可以解決程序跑飛的問題,



關(guān)鍵詞: RS-485總線方向控

評(píng)論


相關(guān)推薦

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

關(guān)閉