一種單片機多機通信系統的設計
摘要: 融合單片機技術(shù)和計算機網(wǎng)絡(luò )技術(shù),優(yōu)化數據包的格式和控制方式以及引入幀檢測序列,設計基于A(yíng)T89S52的單片機網(wǎng)絡(luò )的單片機多機通信協(xié)議;系統網(wǎng)絡(luò )拓撲結構采用總線(xiàn)型;網(wǎng)絡(luò )接口電路采用端口轉發(fā)的形式等進(jìn)行單片機多機通信系統的設計,系統易于擴展且提高了穩定性。結果表明,此系統設計解決了8位單片機多機通信的問(wèn)題,實(shí)現了客戶(hù)機與服戶(hù)機間的通信,以及客戶(hù)機與客戶(hù)機間的通信。
本文引用地址:http://dyxdggzs.com/article/82877.htm關(guān)鍵字:單片機;通信協(xié)議;數據包;幀;網(wǎng)絡(luò )接口
1 引言
隨著(zhù)單片機和計算機技術(shù)的不斷發(fā)展,單片機的應用也從獨立的單機向網(wǎng)絡(luò )發(fā)展,由計算機和單片機構成的多機網(wǎng)絡(luò )系統已成為單片機技術(shù)發(fā)展的一個(gè)方向。二者的結合,充分發(fā)揮了單片機在實(shí)時(shí)數據采集和數據管理上的優(yōu)點(diǎn)。單片機在計算機的網(wǎng)絡(luò )通訊與數據傳輸、工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí)控制和數據處理等都有廣泛地應用,已滲透到我們生活的各個(gè)領(lǐng)域。許多應用都涉及到單片機多機通信。然而,單片機對網(wǎng)絡(luò )數據的處理方式不同于通用計算機系統,尤其有的單片機只提供8位的數據收發(fā)接口,在一定程度上阻礙了單片機在網(wǎng)絡(luò )方面的應用。因此,采用單片機技術(shù)與計算機網(wǎng)絡(luò )技術(shù)相結合的辦法 ,對單片機多機通信系統進(jìn)行研究,在設計單片機網(wǎng)絡(luò )的通信協(xié)議的基礎上,系統網(wǎng)絡(luò )拓撲結構采用總線(xiàn)型,網(wǎng)絡(luò )接口電路采用端口轉發(fā)的形式,實(shí)現了8位單片機多機通信。
2 系統網(wǎng)絡(luò )協(xié)議設計
擬定網(wǎng)絡(luò )容量為1臺服務(wù)機和62臺客戶(hù)機,客戶(hù)機之間可以相互通信??蛻?hù)機和服務(wù)機之間也可以相互通信。設計的協(xié)議考了停止等待協(xié)議,數據包參考了IP數據包而設計。經(jīng)過(guò)綜合分析和優(yōu)化處理,制定如下單片機多機通信協(xié)議。
(1)服務(wù)機協(xié)議
?、俜?wù)機按1/384的間隔發(fā)送詢(xún)問(wèn)數據包;
?、趯斍霸?xún)問(wèn)地址加1,判斷,如果大于63則置當前詢(xún)問(wèn)地址為1,如果小于1則置當前詢(xún)問(wèn)地址為62,轉下一步;
?、巯虍斍霸?xún)問(wèn)地址機器發(fā)送一詢(xún)問(wèn)數據包;
?、艿却粋€(gè)發(fā)送間隔時(shí)間;
?、萑绻麤](méi)有收到確認包則轉到將當前數據包重發(fā),重發(fā)計數器加1,計數器大于2則轉向⑥;如果收到確認包轉到⑦;
?、拊O置發(fā)送失敗標記,重發(fā)計數器清0,轉到②;
?、咴O置發(fā)送成功標記,重發(fā)計數器清0,轉到⑧;
?、嗖榭幢辉?xún)問(wèn)客戶(hù)機是否有數據要發(fā)送,有則分配總線(xiàn)使用權和時(shí)間片,轉到⑨,否則轉到②;
?、岬却辉?xún)問(wèn)客戶(hù)機的發(fā)送結束數據包,如果收到轉到②。在一個(gè)時(shí)間片(1/384s)內,沒(méi)有收到,視為超時(shí)。服務(wù)機收回總線(xiàn)使用權,轉到②。
(2)客戶(hù)機協(xié)議
?、俳邮諏儆诒緳C的數據包;
?、谌绻窃?xún)問(wèn)數據包,檢查本機是否有數據要發(fā)送,如果有,則發(fā)送"有數據發(fā)送信息"到服務(wù)機,并捎帶確認轉到③,否則發(fā)送"沒(méi)有數據發(fā)送信息"到服務(wù)機,并捎帶確認,轉到①;其它類(lèi)型數據包不處理,轉到①;
?、鄣却W(wǎng)絡(luò )資源分配數據包,收到則發(fā)送確認包,轉到⑤;超時(shí),停止等待轉到①;
?、艿却弦粩祿拇_認,收到則轉到⑤,否則轉到⑦;
?、輽z查是否還有數據要發(fā)送,有則發(fā)送數據包轉到⑥;否則發(fā)送"結束發(fā)送信息"到服務(wù)機,轉到①。
?、迿z查是否超時(shí),如果超時(shí)結束發(fā)送轉到①,否則轉到④。
?、咧匕l(fā),是否超過(guò)兩次,是則當前發(fā)送失敗,轉到⑤,否則轉到④。
因此,每發(fā)一數據包都會(huì )請求對方的確認,如果沒(méi)有確認,則會(huì )再重發(fā)一次,超過(guò)兩次則被視為對方不可達,發(fā)送失??;并且在被詢(xún)問(wèn)客戶(hù)機有數據發(fā)送時(shí),如果總線(xiàn)空閑,服務(wù)機將分配其使用時(shí)間片,在這個(gè)時(shí)間片內,如果數據未發(fā)送完成,服務(wù)機將強行收回。能發(fā)送完成,客戶(hù)機要發(fā)送結束數據包,歸還總線(xiàn)使用權。
3 系統網(wǎng)絡(luò )拓撲設計
選用總線(xiàn)型網(wǎng)絡(luò )拓撲結構,各站直接連在總線(xiàn)上,由服務(wù)機統一管理網(wǎng)絡(luò )總線(xiàn),分配網(wǎng)絡(luò )資源。使用類(lèi)似于令牌總線(xiàn)網(wǎng)的協(xié)議,由服務(wù)機輪詢(xún)每一客戶(hù)機是否有數據發(fā)送,如果有分配發(fā)送時(shí)間,移交總線(xiàn)使用權,否則詢(xún)問(wèn)下一客戶(hù)機;其中接口電路會(huì )將所接收到信號中繼,并轉發(fā)。因此網(wǎng)絡(luò )中任意一臺機器所發(fā)送的數據對其它機器都是可見(jiàn)的,并且在一定程度上保證了信號的可靠性。
系統網(wǎng)絡(luò )拓撲設計如下圖所示:
圖1系統網(wǎng)絡(luò )拓撲設計
4 網(wǎng)絡(luò )接口電路的功能與設計
?。?)網(wǎng)絡(luò )接口電路的功能
網(wǎng)絡(luò )接口電路完成的主要功能如下:①完成網(wǎng)絡(luò )數據元的接收;②對接收到的數據元轉發(fā)給其它端口;③多端口機制,端口間相互轉發(fā);④提交收到的數據元;⑤中繼收到的數據元;⑥提供網(wǎng)絡(luò )狀態(tài)信號;⑦各端口之間同構,使用交叉線(xiàn)。
(2)網(wǎng)絡(luò )接口電路的設計
為實(shí)現上述功能要求,網(wǎng)絡(luò )接口電路設計時(shí)一共采用了四片74HC245芯片,共同承擔數據的收發(fā)工作,其中每一塊芯片對應一個(gè)端口。在外表現為三個(gè)端口,這是因為有一個(gè)端口被本機占用,電路已布置在線(xiàn)路板上。各端口之間用交叉線(xiàn)連接,當檢測到收線(xiàn)上有信號時(shí),芯片開(kāi)始啟動(dòng)工作,將信號分成三路中繼出來(lái),一路發(fā)給單片機,其它兩種發(fā)給另外的兩個(gè)端口。在收方的收收線(xiàn)上如果檢測到同樣的信號,則進(jìn)行同樣的操作。當單片機向外界發(fā)送數據時(shí),就啟動(dòng)對應于單片機收發(fā)端口上的芯片,將信號中繼后發(fā)送給另外的三個(gè)端口,并隨時(shí)檢測收線(xiàn)信號的變化,一旦檢測到電平信號由高倒低的變化一次,即說(shuō)明有數據需要接收,接收完后將產(chǎn)生一中斷信號,啟動(dòng)處理程序進(jìn)行處理。
網(wǎng)絡(luò )接口電路中設計了網(wǎng)絡(luò )狀態(tài)信號BUS,當各芯片都沒(méi)有工作時(shí),表示網(wǎng)絡(luò )中沒(méi)有數據傳輸,這時(shí)BUS經(jīng)非門(mén)電路取反變成低電平,與單片機二號中斷引腳相連,單片機可以通過(guò)這一引腳撐握網(wǎng)絡(luò )狀態(tài),實(shí)現數據包的發(fā)送。
網(wǎng)絡(luò )接口電路中還設計了指標信號,當收到數據時(shí)信號便置高,這時(shí)接在信號上的LED發(fā)光管將會(huì )發(fā)光,以表示收到數據。
5 客戶(hù)機與服務(wù)機電路設計
系統中有客戶(hù)機和服務(wù)機兩種不同的電路。將客戶(hù)機電路和服務(wù)機電路整合在一個(gè)電路板上
,即兩種電路用同一塊電路板表現出來(lái)。
對于客戶(hù)機,客戶(hù)不需要部門(mén)控制電路,但其需要編址,故需要地址獲取電路。
對于服務(wù)機,它不需要編址,統一固定為65這一地址,故不需要地址獲取這一部分電路。服務(wù)機擔負著(zhù)整個(gè)網(wǎng)絡(luò )的監管與輪詢(xún)工作。
其它電路客戶(hù)機與服務(wù)機均同構,所以不需要做任何修改。
電路板上,采取不插器件的方式實(shí)現兩種不同構的電路在同一電路板上實(shí)現,大大地壓縮開(kāi)發(fā)成本。
6 系統功能模塊圖
(1) 系統功能:
服務(wù)器部分
?、?完成網(wǎng)絡(luò )的輪詢(xún),每隔一定時(shí)間向網(wǎng)絡(luò )中的機器發(fā)出詢(xún)問(wèn)數據包。
?、?讀取ADC數據,顯示當前環(huán)境溫度
?、?控制一個(gè)調風(fēng)閥,顯示電機角度數據
?、?掃描鍵盤(pán),提供按鍵控制
?、?從網(wǎng)絡(luò )中收集調風(fēng)閥信息,智能控制風(fēng)機的開(kāi)啟
?、?控制本實(shí)驗室照明電路的開(kāi)、關(guān)
?、?能夠接管網(wǎng)絡(luò )中任意一臺客戶(hù)機
客戶(hù)機部分
?、?接收服務(wù)機的輪詢(xún),發(fā)送確認數據包
?、?讀取ADC數據,顯示當前環(huán)境溫度
?、?控制一個(gè)調風(fēng)閥,顯示電機角度數據
?、?掃描鍵盤(pán),提供按鍵控制
?、?讀取本機地址
?、?接收來(lái)自服務(wù)器的管理操作
(2)功能劃分:
軟件系統采用模塊化的方式,每個(gè)設備編寫(xiě)一個(gè)驅動(dòng)程序。驅動(dòng)程序負責驅動(dòng)其所控制的設備。并向其它程序提供接口,方便其它程序調用,控制設備。
各個(gè)驅動(dòng)功能劃分如下:
?、?數碼管驅動(dòng)程序:驅動(dòng)數據管顯示,按指定方式顯示數據。
?、?鍵盤(pán)驅動(dòng)程序:動(dòng)態(tài)掃描鍵盤(pán),判別按鍵,并避開(kāi)電路毛刺。
?、?蜂鳴器驅動(dòng)程序:驅動(dòng)蜂鳴器安指定方式發(fā)聲。
?、?ADC驅動(dòng)程序:讀取模數轉換器數據,并轉換為溫度數值。
?、?串口驅動(dòng)程序:收發(fā)數據包,過(guò)濾非本機數據包
其中還有一個(gè)輪詢(xún)模塊,它在時(shí)鐘的驅動(dòng)下按一定間隔時(shí)間向網(wǎng)絡(luò )中各臺客戶(hù)機發(fā)送詢(xún)問(wèn)數據包。如果兩次沒(méi)有收到回應,則視發(fā)送數據包失敗。并能夠向被接管的客戶(hù)機發(fā)送管理數據包。同樣也需要確認,超過(guò)兩次則視為失敗。
系統功能模塊圖如圖2所示。
圖2 系統功能模塊圖
由圖可知,所有的驅動(dòng)程序都掛靠在時(shí)鐘中斷上,由時(shí)鐘中斷按一定的頻率調用這些驅動(dòng)程序。
7 小結
系統設計了一個(gè)基于網(wǎng)絡(luò )控制和管理的控制系統。它將計算機機網(wǎng)絡(luò )技術(shù)和單片機技術(shù)進(jìn)行融合,網(wǎng)絡(luò )協(xié)議設計參考計算機網(wǎng)絡(luò )中的停止等待協(xié)議和TCP/IP協(xié)議,但為了更好的適應于單片機處理,優(yōu)化了數據包的格式和控制方式,大大提高了處理速度和效率。同時(shí),引入幀檢測序列,提供數據包的檢測機制,提高了網(wǎng)絡(luò )的可靠性。系統網(wǎng)絡(luò )拓撲結構采用總線(xiàn)型,網(wǎng)絡(luò )接口電路采用端口轉發(fā)的形式,便于擴展且提高了穩定性。此系統設計功能齊全可以通過(guò)服務(wù)器控制整個(gè)網(wǎng)絡(luò )的所有客戶(hù)機,監視所有客戶(hù)機運行情況;系統操作簡(jiǎn)單,具有一定的經(jīng)濟意義和實(shí)用價(jià)值。
參考文獻
[1] (美)Christa Anderson.Mark Minasi.Mastering Local Area Networks [M] .出版社Sybex ,1999.
[2] 江曉安.董秀峰.模擬電子技術(shù)[M].西安電子科技大學(xué)出版社,2002.
[3] 張永瑞.楊林耀.張雅蘭.電路分析基礎[M].西安電子科技大學(xué)出版社,2001.
[4] Barry B.Brey.Programming the 80286,80386,80486,and Pentium-Based Personal Computer[M].電子工業(yè)出版社,1998.
[5] 湯子瀛.哲風(fēng)屏.湯小丹.計算機操作系統[M].西安電子科技大學(xué)出版社,1996.
[6] 江曉安.董秀峰.楊頌華.數字電子技術(shù)[M].西安電子科技大學(xué)出版社,2002.
[7] 周明德.微型計算機系統原理及應用[M].清華大學(xué)出版社,1998.
[8] 林雪梅.彭佳紅.姚志成.單片機多機通信協(xié)議的設計[J] .微計算機信息,2006.2-2:24-26
[9] 張魯.智能卡操作系統中存儲管理設計[J] .微計算機信息,2005,8-3:18-19
tcp/ip相關(guān)文章:tcp/ip是什么
蜂鳴器相關(guān)文章:蜂鳴器原理
評論