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