基于RS485總線(xiàn)的單片機對等網(wǎng)絡(luò )的設計與實(shí)現
1 引 言
本文引用地址:http://dyxdggzs.com/article/172121.htm隨著(zhù)自動(dòng)控制技術(shù)的應用和發(fā)展,控制系統越來(lái)越復雜。單片機的應用系統已從單機逐漸向多機聯(lián)網(wǎng)的方向發(fā)展,如:數據采集、消防、門(mén)禁、消費等控制系統,這就需要單片機之間或單片機與微機之間組成網(wǎng)絡(luò )以進(jìn)行相互通信?,F有的各種總線(xiàn)產(chǎn)品,如基金總線(xiàn)(FF)、LonWorks總線(xiàn)、ProfiBus總線(xiàn)、 HART總線(xiàn)及CAN總線(xiàn)等,雖然各有特色,但由于其兼容性差、造價(jià)高、維護不便等方面的原因,未能得到普遍應用。
RS485總線(xiàn)作為一種簡(jiǎn)易、廉價(jià)的通信技術(shù),其收發(fā)器采用平衡驅動(dòng)和差分接收,具有抑制共模干擾的能力。RS485接收器靈敏度可達±200 mV,因而大大提高了通信距離。在100 kb/s速率下電纜長(cháng)度可達1 200 m,如果通信距離縮短,最大速率更可達10 Mb/s。RS485總線(xiàn)上允許帶多個(gè)驅動(dòng)器和接收器,最新的收發(fā)器可帶128個(gè)節點(diǎn),用于構建多點(diǎn)通信網(wǎng)絡(luò )。由于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ò)主機,增加了從機間通信的難度。
針對主從式網(wǎng)絡(luò )的這些缺點(diǎn),本文提出一種采用RS485總線(xiàn)的單片機對等網(wǎng)絡(luò )的設計方法。在這種網(wǎng)絡(luò )中,各節點(diǎn)(單片機)之間沒(méi)有主從之分,是完全吞吐量大而且靈活。最后給出了該網(wǎng)絡(luò )的C51語(yǔ)言實(shí)現方法。
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)實(shí)現網(wǎng)絡(luò )通信。
3 硬件電路設計
實(shí)現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所示。
4 軟件實(shí)現
本文采用Franklin C51來(lái)實(shí)現CSMA/CD網(wǎng)絡(luò )協(xié)議。用C語(yǔ)言來(lái)編寫(xiě)單片機目標系統軟件可縮短開(kāi)發(fā)周期,增加軟件的可讀性,便于改進(jìn)和擴充,從而研制出規模更大,性能更完備的系統[2]。
系統中設置定時(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].
評論