李浩1,吳建龍1,李長艷2
(1.首鋼工學(xué)院 機電工程系,北京 100144;2.北京佳點風(fēng)向網(wǎng)絡(luò)科技有限公司,北京 100013)
摘要:詳細闡述利用AT89x51單片機異步串行口組成的主從式網(wǎng)絡(luò)系統(tǒng)和對等式網(wǎng)絡(luò)系統(tǒng)的特點、硬件構(gòu)成、通信協(xié)議、軟件程序流程圖以及信道爭用的應(yīng)對等,并通過軟件仿真驗證了系統(tǒng)設(shè)計的正確性。
關(guān)鍵詞:AT89x51;網(wǎng)絡(luò)體系架構(gòu);主從式網(wǎng)絡(luò);對等式網(wǎng)絡(luò);令牌環(huán)
0引言
眾所周知,計算機網(wǎng)絡(luò)的類型可以從多個角度劃分,從地理位置上分為局域網(wǎng)、城域網(wǎng)和廣域網(wǎng)等;從傳輸介質(zhì)上分為有線網(wǎng)、光纖網(wǎng)和無線網(wǎng)等;從拓撲結(jié)構(gòu)上分為星型網(wǎng)絡(luò)、環(huán)形網(wǎng)絡(luò)、總線網(wǎng)絡(luò)等;從服務(wù)類型上分為主從式(C/S)網(wǎng)絡(luò)和對等式網(wǎng)絡(luò)。當(dāng)然,隨著計算機網(wǎng)絡(luò)在各行各業(yè)應(yīng)用越來越廣泛,關(guān)注點不同,也就出現(xiàn)了更多的分類方法,此處不再一一列舉。本文對基于51單片機構(gòu)成的主從式網(wǎng)絡(luò)和對等式網(wǎng)絡(luò)的體系架構(gòu)的設(shè)計與實現(xiàn)進行詳細闡述。
1當(dāng)前研究現(xiàn)狀及研究對象模型
圖1是本文項目的載體平臺,欲實現(xiàn)的功能是:3臺單片機均在00~99范圍內(nèi)循環(huán)計數(shù)并顯示;每臺機器上都加裝有按鍵,且每次按下的計數(shù)值不一樣;每臺機器上的計數(shù)值不能在本臺機器控制的LED上顯示,需要通過總線網(wǎng)絡(luò)傳輸?shù)狡渌麢C器上顯示。要實現(xiàn)這個功能,可以利用兩種網(wǎng)絡(luò)架構(gòu)來實現(xiàn),即主從式網(wǎng)絡(luò)和對等式網(wǎng)絡(luò)。通過查詢中國知網(wǎng)、萬方數(shù)據(jù)庫以及國內(nèi)絕大多數(shù)的教科書和科技文獻可以發(fā)現(xiàn):51單片機多機串口通信方面的內(nèi)容大多限于主從式網(wǎng)絡(luò),即使涉及了對等式網(wǎng)絡(luò),這些論文中又將它們?nèi)藶榈胤殖闪薃組和B組,異組之間可以隨意通信,同組之間的單片機還是不能實現(xiàn)直接通信[13],沒有徹底解決地位“平等”的問題。
2AT89x51/52單片機的串口通信資源
AT89x51/52單片機的異步串口由接收端RXD和發(fā)送端TXD兩個管腳組成。
完成一次傳輸?shù)幕締挝皇且粋€字節(jié),它是通過發(fā)送SBUF字節(jié)寄存器和接收SBUF字節(jié)寄存器來完成的。
串口控制寄存器SCON[4]的各位功能如表1所示。
異步串行通信方式下,該控制寄存器中,對實現(xiàn)多機通信起著關(guān)鍵作用的是SM2和TB8/SB8這3位。這3個控制位的具體工作機制(通信協(xié)議)如下。
?。?)接收令牌(地址)幀信息,然后與本地站地址比對,如果相同,則可以進行以下步驟;如果不同,則不能往總線上發(fā)送信息。
(2)在傳輸信息以前,必須首先分別將3臺單片機的SM2都設(shè)置為1,表示發(fā)送機即將發(fā)送的地址幀信息,其余兩臺單片機都需要接收。
(3)發(fā)送機端需將TB8置位,表示本幀信息為地址幀。兩臺接收機接收到地址幀后立即與本機地址進行比對,如果相同,則將自己的SM2設(shè)置為0,該接收機能對接下來即將發(fā)送過來的數(shù)據(jù)幀產(chǎn)生接收中斷,即下一步通信不再是多方接收,而是雙機之間的一對一通信;如果不同,則該接收機仍然保持SM2的置位狀態(tài),它對接下來發(fā)送的數(shù)據(jù)幀不會產(chǎn)生中斷信號RI,因此不予接收。
?。?)發(fā)送機清零TB8,表示本幀信息為數(shù)據(jù)幀。只有SM2=0的接收機才能接收到本數(shù)據(jù)幀,本次數(shù)據(jù)傳輸結(jié)束,該接收機需將SM2置為1,為下一次接收地址幀作好準(zhǔn)備。
?。?)令牌字節(jié)的處理以及令牌的傳遞。
經(jīng)過大量的實驗歸納如下:異步串行通信方式下,不論是雙機一對一通信還是多機的一對一、一對多通信,中斷信號RI與控制位SM2和RB8之間的邏輯關(guān)系為:RI=SM2+RB8。
3基于主從式網(wǎng)絡(luò)的系統(tǒng)實現(xiàn)
當(dāng)多臺51單片機工作于多機主從通信模式下,通信各方之間就有主、從之分;若直接采用TTL電平進行互連,則主機與各臺從機之間的連接距離最好不要超過1 m[5]。主從式架構(gòu)的網(wǎng)絡(luò)具有如下一些特點。
(1)該網(wǎng)絡(luò)體系中只能有一臺主機,可以有多臺從機;
(2)主機與從機都能自主地在網(wǎng)絡(luò)上發(fā)送信息;
(3)主機可以在網(wǎng)絡(luò)上進行一對多廣播或一對一單播;
(4)從機所發(fā)信息的接收對象只能是主機,如果從機之間必須要通信,則只能通過主機進行周轉(zhuǎn),這樣就增加了主機的負擔(dān)。
3.1本系統(tǒng)的主從式網(wǎng)絡(luò)體系架構(gòu)
基于主從式網(wǎng)絡(luò)的特點,本項目平臺硬件連接如圖2所示。本系統(tǒng)欲實現(xiàn)的功能有:主機的計數(shù)值送1號從機,主機的計數(shù)值加1后送2號從機;1號從機和2號從機的計數(shù)值分別送主機間隔3 s循環(huán)顯示。
主機的程序流程圖如圖3所示,1、2號從機的程序流程圖如圖4所示。
主從式網(wǎng)絡(luò)架構(gòu)下,主機在發(fā)送信息給某臺從機以前,先在網(wǎng)絡(luò)上廣播接收機的站地址,待目的站地址回送該地址幀(本文成為握手成功)后再與目的接收機一對一地進行通信。
主從式網(wǎng)絡(luò)架構(gòu)下,從機先發(fā)送地址幀信息給主機(只有主機能接收),主機不回送該地址幀,緊接著,發(fā)送數(shù)據(jù)幀給主機。主機間隔3 s輪流顯示兩臺從機發(fā)送過來的數(shù)據(jù)值。
4基于對等式網(wǎng)絡(luò)的系統(tǒng)實現(xiàn)
4.1對等式網(wǎng)絡(luò)的特點
對等式網(wǎng)絡(luò)中的終端在地位上完全相等,網(wǎng)絡(luò)終端均可以發(fā)送信息給網(wǎng)絡(luò)中其他任何一方,沒有任何限制。
4.2異步串行通信的數(shù)據(jù)格式
異步串行通信數(shù)據(jù)格式如圖5所示。
由其數(shù)據(jù)格式可以看出,網(wǎng)絡(luò)在空閑時,TXD和RXD網(wǎng)線上始終是高電平,它對構(gòu)建51單片機之間的連接具有至關(guān)重要的作用。
4.3本系統(tǒng)的對等式網(wǎng)絡(luò)體系架構(gòu)
基于對等式架構(gòu)的網(wǎng)絡(luò)系統(tǒng)如圖6所示。
根據(jù)對等網(wǎng)的要求,每臺單片機的輸出信號都需要送到其他各臺單片機的輸入口??紤]到單片機的TXD端在空閑時始終處于高電平,因此,另外兩臺單片機的輸出端TXD的信號通過兩輸入的與門74LS08或CD4081的輸出連接到本機的RXD端,這樣就能有效地將該3臺單片機進行互連,此時,每臺單片機地位平等、沒有主次之分,任何一臺單片機都能將信息傳遞到任何其他的機器上。
本系統(tǒng)欲實現(xiàn)的功能有:1號機的計數(shù)值送2號機LED顯示,2號機的計數(shù)值送3號機LED顯示,3號機的計數(shù)值送1號機LED顯示。
4.4系統(tǒng)的軟件流程圖
由于2、3號機的程序流程圖與1號機類同,予以省略。1號機的程序流程圖如圖7所示。
對等式網(wǎng)絡(luò)架構(gòu)下,每臺機器在發(fā)送信息給其他某臺機器以前,先在網(wǎng)絡(luò)上廣播接收機的站地址,待目的站地址回送該地址幀(握手成功)后再與目的接收機進行一對一的通信。
5信道爭用的應(yīng)對
不論是主從式網(wǎng)絡(luò)系統(tǒng)還是對等式網(wǎng)絡(luò)系統(tǒng),都存在多臺機器同時往總線上發(fā)送信息導(dǎo)致信息被破壞的情況,為了有效地克服這個重大的缺陷,本文采用令牌環(huán)的方式來加以規(guī)范和應(yīng)對。
具體的工作機制如下。
(1)令牌的實質(zhì)就是一個地址幀,它由一個字節(jié)的變量來表示,該字節(jié)表示當(dāng)前時刻能往總線上發(fā)送數(shù)據(jù)的站地址,因此,構(gòu)成該網(wǎng)絡(luò)的單片機總數(shù)可以達到256臺。
(2)所有連網(wǎng)的單片機構(gòu)成一個令牌環(huán)網(wǎng)。
(3)每臺單片機每次死循環(huán)的最后一項任務(wù)就是在該令牌環(huán)網(wǎng)內(nèi)廣播傳遞令牌。
(4)所有單片機接收到該令牌后,將令牌中的內(nèi)容和本站地址作一比對,如果相同,則該站可以主動往總線上發(fā)送信息;若不相同,則不允許發(fā)送。
(5)除最大站地址外,本站在完成了網(wǎng)絡(luò)傳遞任務(wù)后,會將令牌幀內(nèi)容加1并在網(wǎng)絡(luò)上廣播以傳遞令牌給下一站;而最大地址站則需將令牌幀的內(nèi)容賦為最小站地址,表示下一次能占用網(wǎng)絡(luò)資源的站點地址。
因此,出現(xiàn)了第2節(jié)網(wǎng)絡(luò)協(xié)議的步驟(1)和(5),同時在前述圖3、圖4以及圖7的流程圖中也已經(jīng)包含了令牌環(huán)的傳遞和處理等功能。
需要特別指出的是,圖3主從式網(wǎng)絡(luò)中,由于從機之間不能互發(fā)信息,因此從機之間互發(fā)令牌幀的操作需要通過主機來周轉(zhuǎn),由于篇幅限制,在流程圖中沒有詳細體現(xiàn)出來。
6系統(tǒng)仿真與驗證
6.1主從式網(wǎng)絡(luò)系統(tǒng)仿真與驗證
硬件仿真原理圖[6]以及仿真結(jié)果如圖8所示。
6.2對等式網(wǎng)絡(luò)系統(tǒng)仿真與驗證
硬件仿真原理圖以及仿真結(jié)果如圖9所示。
7結(jié)論
本文從服務(wù)分類的角度,對51單片機異步串口的網(wǎng)絡(luò)體系結(jié)構(gòu)進行了詳細、全面的闡述。實踐證明上述原理和方法是可行的,但是出現(xiàn)了網(wǎng)絡(luò)利用率不高的缺陷,因此,提高總線的利用率是以后研究的重點?!?br/>
參考文獻
[1] 虞耀君,王曉紅,張幼明.對等式令牌測控網(wǎng)絡(luò)的設(shè)計與實現(xiàn)[J].微計算機信息,2007,23(82):5153.
?。?] 吳德會,王曉紅.對等式測控網(wǎng)的設(shè)計與實現(xiàn)[J].計算機測量與控制,2005,13(7):627630.
?。?] 楊會成,卓芝強.單片機與PC機串行數(shù)據(jù)通信的工程實踐[J].微型機與應(yīng)用,2003,22(5):2225.
?。?] 楊瑞良,李平,邱清,等.計算機網(wǎng)絡(luò)技術(shù)基礎(chǔ)[M].北京:北京大學(xué)出版社, 2008.
?。?] 俞國亮.MCS51單片機原理與應(yīng)用[M].北京:清華大學(xué)出版社,2010.
?。?] 彭偉.單片機C語言程序設(shè)計實訓(xùn)100例——基于8051+ Proteus仿真(第2版)[M].北京:電子工業(yè)出版社,2012.