摘 要:
融合單片機技術和計算機網絡技術,優化數據包的格式和控制方式以及引入幀檢測序列,設計基于AT89S52的單片機網絡的單片機多機通信協議;系統網絡拓撲結構采用總線型;網絡接口電路采用端口轉發的形式等進行單片機多機通信系統的設計,系統易于擴展且提高了穩定性。結果表明,此系統設計解決了8位單片機多機通信的問題,實現了客戶機與服戶機間的通信,以及客戶機與客戶機間的通信。
關鍵字:單片機;通信協議;數據包;幀;網絡接口
1、引言
隨著單片機和計算機技術的不斷發展,單片機的應用也從獨立的單機向網絡發展,由計算機和單片機構成的多機網絡系統已成為單片機技術發展的一個方向。二者的結合,充分發揮了單片機在實時數據采集和數據管理上的優點。單片機在計算機的網絡通訊與數據傳輸、工業自動化過程的實時控制和數據處理等都有廣泛地應用,已滲透到我們生活的各個領域。許多應用都涉及到單片機多機通信。然而,單片機對網絡數據的處理方式不同于通用計算機系統,尤其有的單片機只提供8位的數據收發接口,在一定程度上阻礙了單片機在網絡方面的應用。因此,采用單片機技術與計算機網絡技術相結合的辦法,對單片機多機通信系統進行研究,在設計單片機網絡的通信協議的基礎上,系統網絡拓撲結構采用總線型,網絡接口電路采用端口轉發的形式,實現了8位單片機多機通信。
2、系統網絡協議設計
擬定網絡容量為1臺服務機和62臺客戶機,客戶機之間可以相互通信。客戶機和服務機之間也可以相互通信。設計的協議考了停止等待協議,數據包參考了IP數據包而設計。
經過綜合分析和優化處理,制定如下單片機多機通信協議。
(1)服務機協議
①服務機按1/384的間隔發送詢問數據包;
②將當前詢問地址加1,判斷,如果大于63則置當前詢問地址為1,如果小于1則置當前詢問地址為62,轉下一步;
③向當前詢問地址機器發送一詢問數據包;
④等待一個發送間隔時間;
⑤如果沒有收到確認包則轉到將當前數據包重發,重發計數器加1,計數器大于2則轉向⑥;如果收到確認包轉到⑦;
⑥設置發送失敗標記,重發計數器清0,轉到②;
⑦設置發送成功標記,重發計數器清0,轉到⑧;
⑧查看被詢問客戶機是否有數據要發送,有則分配總線使用權和時間片,轉到⑨,否則轉到②;
⑨等待被詢問客戶機的發送結束數據包,如果收到轉到②。在一個時間片(1/384s)內,沒有收到,視為超時。服務機收回總線使用權,轉到②。
(2)客戶機協議
①接收屬于本機的數據包;
②如果是詢問數據包,檢查本機是否有數據要發送,如果有,則發送"有數據發送信息"到服務機,并捎帶確認轉到③,否則發送"沒有數據發送信息"到服務機,并捎帶確認,轉到①;其它類型數據包不處理,轉到①;
③等待網絡資源分配數據包,收到則發送確認包,轉到⑤;超時,停止等待轉到①;
④等待上一數據包的確認,收到則轉到⑤,否則轉到⑦;
⑤檢查是否還有數據要發送,有則發送數據包轉到⑥;否則發送"結束發送信息"到服務機,轉到①。
⑥檢查是否超時,如果超時結束發送轉到①,否則轉到④。
⑦重發,是否超過兩次,是則當前發送失敗,轉到⑤,否則轉到④。
因此,每發一數據包都會請求對方的確認,如果沒有確認,則會再重發一次,超過兩次則被視為對方不可達,發送失敗;并且在被詢問客戶機有數據發送時,如果總線空閑,服務機將分配其使用時間片,在這個時間片內,如果數據未發送完成,服務機將強行收回。能發送完成,客戶機要發送結束數據包,歸還總線使用權。
3、系統網絡拓撲設計
選用總線型網絡拓撲結構,各站直接連在總線上,由服務機統一管理網絡總線,分配網絡資源。使用類似于令牌總線網的協議,由服務機輪詢每一客戶機是否有數據發送,如果有分配發送時間,移交總線使用權,否則詢問下一客戶機;其中接口電路會將所接收到信號中繼,并轉發。因此網絡中任意一臺機器所發送的數據對其它機器都是可見的,并且在一定程度上保證了信號的可靠性。
系統網絡拓撲設計如下圖所示:
[align=center]

圖1 系統網絡拓撲設計[/align]
4、網絡接口電路的功能與設計
(1)網絡接口電路的功能
網絡接口電路完成的主要功能如下:①完成網絡數據元的接收;②對接收到的數據元轉發給其它端口;③多端口機制,端口間相互轉發;④提交收到的數據元;⑤中繼收到的數據元;⑥提供網絡狀態信號;⑦各端口之間同構,使用交叉線。
(2)網絡接口電路的設計
為實現上述功能要求,網絡接口電路設計時一共采用了四片74HC245芯片,共同承擔數據的收發工作,其中每一塊芯片對應一個端口。在外表現為三個端口,這是因為有一個端口被本機占用,電路已布置在線路板上。各端口之間用交叉線連接,當檢測到收線上有信號時,芯片開始啟動工作,將信號分成三路中繼出來,一路發給單片機,其它兩種發給另外的兩個端口。在收方的收收線上如果檢測到同樣的信號,則進行同樣的操作。當單片機向外界發送數據時,就啟動對應于單片機收發端口上的芯片,將信號中繼后發送給另外的三個端口,并隨時檢測收線信號的變化,一旦檢測到電平信號由高倒低的變化一次,即說明有數據需要接收,接收完后將產生一中斷信號,啟動處理程序進行處理。
網絡接口電路中設計了網絡狀態信號BUS,當各芯片都沒有工作時,表示網絡中沒有數據傳輸,這時BUS經非門電路取反變成低電平,與單片機二號中斷引腳相連,單片機可以通過這一引腳撐握網絡狀態,實現數據包的發送。
網絡接口電路中還設計了指標信號,當收到數據時信號便置高,這時接在信號上的LED發光管將會發光,以表示收到數據。
5、客戶機與服務機電路設計
系統中有客戶機和服務機兩種不同的電路。將客戶機電路和服務機電路整合在一個電路板上,即兩種電路用同一塊電路板表現出來。
對于客戶機,客戶不需要部門控制電路,但其需要編址,故需要地址獲取電路。
對于服務機,它不需要編址,統一固定為65這一地址,故不需要地址獲取這一部分電路。服務機擔負著整個網絡的監管與輪詢工作。
其它電路客戶機與服務機均同構,所以不需要做任何修改。
電路板上,采取不插器件的方式實現兩種不同構的電路在同一電路板上實現,大大地壓縮開發成本。
6、系統功能模塊圖
(1) 系統功能:
服務器部分
① 完成網絡的輪詢,每隔一定時間向網絡中的機器發出詢問數據包。
② 讀取ADC數據,顯示當前環境溫度
③ 控制一個調風閥,顯示電機角度數據
④ 掃描鍵盤,提供按鍵控制
⑤ 從網絡中收集調風閥信息,智能控制風機的開啟
⑥ 控制本實驗室照明電路的開、關
⑦ 能夠接管網絡中任意一臺客戶機
客戶機部分
① 接收服務機的輪詢,發送確認數據包
② 讀取ADC數據,顯示當前環境溫度
③ 控制一個調風閥,顯示電機角度數據
④ 掃描鍵盤,提供按鍵控制
⑤ 讀取本機地址
⑥ 接收來自服務器的管理操作
(2)功能劃分:
軟件系統采用模塊化的方式,每個設備編寫一個驅動程序。驅動程序負責驅動其所控制的設備。并向其它程序提供接口,方便其它程序調用,控制設備。
各個驅動功能劃分如下:
① 數碼管驅動程序:驅動數據管顯示,按指定方式顯示數據。
② 鍵盤驅動程序:動態掃描鍵盤,判別按鍵,并避開電路毛刺。
③ 蜂鳴器驅動程序:驅動蜂鳴器安指定方式發聲。
④ ADC驅動程序:讀取模數轉換器數據,并轉換為溫度數值。
⑤ 串口驅動程序:收發數據包,過濾非本機數據包
其中還有一個輪詢模塊,它在時鐘的驅動下按一定間隔時間向網絡中各臺客戶機發送詢問數據包。如果兩次沒有收到回應,則視發送數據包失敗。并能夠向被接管的客戶機發送管理數據包。同樣也需要確認,超過兩次則視為失敗。
系統功能模塊圖如圖2所示。
[align=center]

圖2 系統功能模塊圖[/align]
由圖可知,所有的驅動程序都掛靠在時鐘中斷上,由時鐘中斷按一定的頻率調用這些驅動程序。
7、小結
系統設計了一個基于網絡控制和管理的控制系統。它將計算機機網絡技術和單片機技術進行融合,網絡協議設計參考計算機網絡中的停止等待協議和TCP/IP協議,但為了更好的適應于單片機處理,優化了數據包的格式和控制方式,大大提高了處理速度和效率。同時,引入幀檢測序列,提供數據包的檢測機制,提高了網絡的可靠性。系統網絡拓撲結構采用總線型,網絡接口電路采用端口轉發的形式,便于擴展且提高了穩定性。此系統設計功能齊全可以通過服務器控制整個網絡的所有客戶機,監視所有客戶機運行情況;系統操作簡單,具有一定的經濟意義和實用價值。
參考文獻
[1] (美)Christa Anderson.Mark Minasi.Mastering Local Area Networks [M] .出版社Sybex ,1999.
[2] 江曉安.董秀峰.模擬電子技術[M].西安電子科技大學出版社,2002.
[3] 張永瑞.楊林耀.張雅蘭.電路分析基礎[M].西安電子科技大學出版社,2001.
[4] Barry B.Brey.Programming the 80286,80386,80486,and Pentium-Base