<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è) > 嵌入式系統 > 設計應用 > 基于RS485總線(xiàn)的單片機對等網(wǎng)絡(luò )的設計與實(shí)現

基于RS485總線(xiàn)的單片機對等網(wǎng)絡(luò )的設計與實(shí)現

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

1 引 言

本文引用地址:http://dyxdggzs.com/article/172121.htm

隨著(zhù)自動(dòng)控制技術(shù)的應用和發(fā)展,控制系統越來(lái)越復雜。的應用系統已從單機逐漸向多機聯(lián)網(wǎng)的方向發(fā)展,如:數據采集、消防、門(mén)禁、消費等控制系統,這就需要之間或與微機之間組成以進(jìn)行相互通信?,F有的各種產(chǎn)品,如基金(FF)、LonWorks、ProfiBus總線(xiàn)、 HART總線(xiàn)及CAN總線(xiàn)等,雖然各有特色,但由于其兼容性差、造價(jià)高、維護不便等方面的原因,未能得到普遍應用。

總線(xiàn)作為一種簡(jiǎn)易、廉價(jià)的通信技術(shù),其收發(fā)器采用平衡驅動(dòng)和差分接收,具有抑制共模干擾的能力。接收器靈敏度可達±200 mV,因而大大提高了通信距離。在100 kb/s速率下電纜長(cháng)度可達1 200 m,如果通信距離縮短,最大速率更可達10 Mb/s。總線(xiàn)上允許帶多個(gè)驅動(dòng)器和接收器,最新的收發(fā)器可帶128個(gè)節點(diǎn),用于構建多點(diǎn)通信。由于RS485總線(xiàn)具有設備簡(jiǎn)單、價(jià)格低廉、能進(jìn)行長(cháng)距離通信的特點(diǎn),故在工程中得到了廣泛應用。

通常在RS485總線(xiàn)產(chǎn)品的應用中,都采用主從控制方式,即由1臺微機或1臺單片機作為主機,其余的作為從機。主機和從機之間可以直接進(jìn)行通信,從機之間要進(jìn)行通信時(shí)必須通過(guò)主機。通信方式則由主機采取輪詢(xún)的方式對各從機進(jìn)行查詢(xún)。這種方式使軟件的大為簡(jiǎn)化,但也帶來(lái)很多弊端。

(1)由于采取主機輪詢(xún)方式進(jìn)行通信,因此,通信的吞吐量較低,不適用于通信量要求較大,或平均通信量較低,但呈突發(fā)式的場(chǎng)合,如:消費系統、考勤系統等。

(2)由于采取主機輪詢(xún)方式進(jìn)行通信,因此,系統較大時(shí),實(shí)時(shí)性較差。

(3)由于采取主機輪詢(xún)方式進(jìn)行通信,主機在不停地查詢(xún)各從機,每個(gè)從機都必須對主機的查詢(xún)作出響應,以決定是否對該機進(jìn)行通信,這樣,勢必增加各從機的系統開(kāi)銷(xiāo)。

(4)當從機之間需要進(jìn)行通信時(shí),必須通過(guò)主機,增加了從機間通信的難度。

針對主從式的這些缺點(diǎn),本文提出一種采用RS485總線(xiàn)的單片機網(wǎng)絡(luò )的方法。在這種網(wǎng)絡(luò )中,各節點(diǎn)(單片機)之間沒(méi)有主從之分,是完全吞吐量大而且靈活。最后給出了該網(wǎng)絡(luò )的C51語(yǔ)言方法。

2 網(wǎng)絡(luò )原理

在主從式網(wǎng)絡(luò )中,信道由主機進(jìn)行控制,不存在競爭信道的問(wèn)題。在式網(wǎng)絡(luò )中則不同,由于每個(gè)節點(diǎn)均可根據自己的需要隨時(shí)發(fā)送信息,必然會(huì )競爭使用信道,因此,如何合理分配信道的使用權就成為式網(wǎng)絡(luò )的關(guān)鍵問(wèn)題。與計算機網(wǎng)絡(luò )[1]類(lèi)似,解決信道分配問(wèn)題可采用靜態(tài)分配方案和動(dòng)態(tài)分配方案。在靜態(tài)分配方案中,時(shí)分多路復用TDMA(TimeDivision Multiple Access)是常用的方法,在TDMA中,時(shí)間被均分為N段時(shí)隙,每個(gè)節點(diǎn)靜態(tài)的占用一個(gè)。如果每個(gè)節點(diǎn)都能充分利用自己的時(shí)隙發(fā)送數據,該方案是十分靈活而高效的。

然而,實(shí)際中有些節點(diǎn)數據很多,時(shí)隙不夠用,而有些節點(diǎn)數據卻很少,不能充分利用分配給他的時(shí)隙而使這段時(shí)間被閑置。因此,信道靜態(tài)分配方案不能有效地處理通信的突發(fā)性。在動(dòng)態(tài)分配方案中,帶沖突檢測的載波偵聽(tīng)多路訪(fǎng)問(wèn)CSMA/CD(carrier sensemultiple access with collision detection)協(xié)議是常用的方法。

該協(xié)議中,當一個(gè)節點(diǎn)要發(fā)送數據時(shí),他首先偵聽(tīng)信道,看是否有其他節點(diǎn)正在發(fā)送。若沒(méi)有其他節點(diǎn)在發(fā)送,他就開(kāi)始發(fā)送,否則,等待一個(gè)隨機的時(shí)間后,重復上述過(guò)程。當2個(gè)節點(diǎn)偵聽(tīng)到信道空閑并同時(shí)開(kāi)始傳送時(shí),必然會(huì )產(chǎn)生沖突,此時(shí),他們幾乎將同時(shí)檢測到?jīng)_突,一旦檢測到?jīng)_突,不是繼續傳完他們的幀,而是盡快停止,這樣既節省了時(shí)間又節省了頻帶。在等待一個(gè)隨機的時(shí)間后,重新開(kāi)始上述的發(fā)送過(guò)程。

CSMA/CD能有效地解決通信的突發(fā)性。在負載較低時(shí),欲發(fā)送數據的節點(diǎn)能立即發(fā)送,負載較重時(shí),也可保證通信的穩定,本文中將采用該協(xié)議來(lái)網(wǎng)絡(luò )通信。

3 硬件電路

CSMA/CD協(xié)議的關(guān)鍵是載波偵聽(tīng)和沖突檢測。這就要求每個(gè)節點(diǎn)能夠接收所有節點(diǎn)傳送過(guò)來(lái)的數據,包括他自己。

在RS485總線(xiàn)組成的網(wǎng)絡(luò )中,由于單片機串口為T(mén)TL電平,需要通過(guò)485專(zhuān)用收發(fā)芯片,完成電平轉換及數據收發(fā)。這里選用較常用的 SN75176。該芯片內將3態(tài)差分線(xiàn)驅動(dòng)器和差分輸入線(xiàn)接收器結合在一起。驅動(dòng)器和接收器分別具有高電平有效和低電平有效使能端,如圖1所示。在主從式網(wǎng)絡(luò )中,一般將驅動(dòng)器和接收器的使能端連接在一起以便起方向控制的作用,使收發(fā)器工作于半雙工狀態(tài)。在這里收發(fā)器必須工作于全雙工狀態(tài),以便節點(diǎn)能接收到自己發(fā)出的信息。因此,將接收器的使能端接低電平,而驅動(dòng)器的使能端則由單片機的IO口控制,平時(shí)為低電平,釋放總線(xiàn),要發(fā)送數據時(shí)則轉換為高電平。這樣構成的單片機對等網(wǎng)絡(luò )如圖2所示。

19.jpg

4 軟件實(shí)現

本文采用Franklin C51來(lái)實(shí)現CSMA/CD網(wǎng)絡(luò )協(xié)議。用C語(yǔ)言來(lái)編寫(xiě)單片機目標系統軟件可縮短開(kāi)發(fā)周期,增加軟件的可讀性,便于改進(jìn)和擴充,從而研制出規模更大,性能更完備的系統[2]。

20.jpg

21.jpg

22.jpg

系統中設置定時(shí)器0作為延時(shí)計時(shí)器,他有兩組延時(shí)參數。一組用于偵聽(tīng)網(wǎng)絡(luò )是否空閑。每次接收中斷時(shí),給定時(shí)器0重裝延時(shí)參數,并設置網(wǎng)絡(luò )忙標志。該參數的值應保證在正常的數據發(fā)送時(shí),定時(shí)器不會(huì )溢出。這樣,若有節點(diǎn)正在發(fā)送數據,定時(shí)器0將被反復重裝,并設置網(wǎng)絡(luò )忙標志。若所有節點(diǎn)停止發(fā)送數據,定時(shí)器將溢出,此時(shí),停止計時(shí)并清除網(wǎng)絡(luò )忙標志,表示網(wǎng)絡(luò )空閑。發(fā)送程序檢測到該標志,即可開(kāi)始發(fā)送數據。發(fā)送程序每發(fā)送1 B數據時(shí),將該數據存入一個(gè)臨時(shí)變量中。此時(shí),接收程序同時(shí)也會(huì )接收到一個(gè)數據,將接收到的數據與臨時(shí)變量中的數據進(jìn)行比較,若相等,表示數據發(fā)送成功,否則,表示發(fā)生沖突,此時(shí)立即停止發(fā)送,并給定時(shí)器0設置一個(gè)隨機延時(shí)值,延時(shí)結束后重復上述過(guò)程。實(shí)現以上算法的C51程序如下[3]:

5 結 語(yǔ)

本文設計了一個(gè)RS485總線(xiàn)的單片機對等網(wǎng)絡(luò ),并用C51語(yǔ)言實(shí)現了該網(wǎng)絡(luò )。與常用的主從式的單片機網(wǎng)絡(luò )相比,對等網(wǎng)絡(luò )具有數據吞吐量大、節點(diǎn)與節點(diǎn)間可直接通信的特點(diǎn),因此,特別適合通信量大、通信呈突發(fā)式或節點(diǎn)間通信頻繁的場(chǎng)合。該網(wǎng)絡(luò )已在門(mén)禁系統中實(shí)際應用。實(shí)踐表明,該方法是十分有效而靈活的。

參考文獻
[1]AndrewS.Tanenbaum計算機網(wǎng)絡(luò )[M].第3版.北京:清華大學(xué)出版社,1998.
[2]馬忠梅.單片機的C語(yǔ)言應用程序設計[M].修訂版.北京:北京航空航天出版社,1999.
[3]KeilC51使用技巧及實(shí)踐[DB].



評論


相關(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>