隨著計算機局域網的不斷發展,網絡連接越來越復雜,給網絡工程師布線、維修等工作帶來了很大的困難。困難的原因有兩個:第一,雙絞線的錯接、斷接、壓線接觸不良等問題在工程實踐中層出不窮,很難直觀發現,而分清每條雙絞線兩端的對應關系在綜合布線中又顯得尤其重要;第二,在一般情況下,局域網的終端之間或終端與集線器之間的距離較遠,很難采用直接測量的辦法對網線故障做出正確判斷。 針對以上兩點原因,本文對雙絞線的故障檢測提出了可行的方案與實現方法。首先,將微處理器快速數據分析與邏輯運算應用于雙絞線故障檢測,使問題變得簡單,結果直觀化。其次,采用射頻無線收發器 nRF401進行數據傳輸,實現遠距離數據交換,使距離遠的問題迎刃而解,簡化測量過程。 1 系統構成 1.1 nRF401結構簡介[1] nRF401內部結構如圖1所示。它是由挪威Nordic公司推出的集收、發為一體的集成芯片,工作于433MHz ISM頻段;采用FSK調制與解調技術;傳輸速率達20Kb/s,傳輸功率最大+10dBm;差分式天線接口,非常適合做成PCB天線,以節約成本。 圖1 nRF401內部結構 圖1中各引腳含義如下。 DOUT:數據輸出端。 DIN:數據輸入端。 TXEN:高電平允許發送數據,低電平允許接收數據。 ANT1、ANT2:天線接入端。 PWR_UP: 器件低功耗控制。 1.2 nRF401外部連接及與微處理器接口 在本設計中,將天線以覆銅的方式做在印制板上,在保證了數據安全可靠傳遞的前提下,減小了產品的體積。nRF401的配置如圖2所示。 圖2 nRF401外部連接及與微處理器接口 nRF401與CPU之間控制和數據傳遞接口如圖3 所示。 圖3 nRF401與CPU接口 圖4 CPU與雙絞線接口 1.3 CPU與雙絞線接口 普通雙絞線包含8根線,可以將89C51的P0口作為雙絞線線上電平狀態的輸入口。通過設置和檢測P0口的狀態,即可對雙絞線的連接狀況做出正確判斷,連接如圖4所示。 2 雙絞線連接標準 關于連接的標準有兩個:T568A和T568B。兩個標準的線序排列如圖5所示,方向為水晶頭金屬壓片向上且正對觀測者的方向。T568B為常用的標準。 圖5 RJ45連接器標準 ◆ 兩邊使用同樣標準的線稱為直通線,用于PC到HUB普通口、HUB普通口到HUB級聯口之間的連接。 ◆ 兩邊使用不同標準的線稱為級聯線, 用于PC到PC、HUB普通口到HUB普通口之間的連接。 以上兩條是判斷的主要理論依據。 根據標準,對應 RJ-45插頭引腳線序顏色如表1所列。 表1 引腳定義如表2所列。 表2 3 工作原理 因為雙絞線故障的不確定性,所以不能通過雙絞線自身作為主設備和從設備之間數據傳遞的途徑。通過微波進行無線數據傳遞,對于雙絞線的故障判斷實在是合適不過的。為此,我們自行設計了主從設備間的數據通信協議及相應的判斷規則。 3.1 通信協議 (1) 連接標準選擇命令(01H) 下行報文:01H + 標準數據碼(T568A為0AH;T568B為0BH)+ LPC。 上行報文:01H + 確認碼(00H) + LPC。 (2) 通道選擇命令(02H) 下行報文:02H + 通道碼(01~08:通道1~通道8)+ LPC。 上行報文:02H + 確認碼(00H) + LPC。 注:報文中LPC是指校驗和,用于數據校驗。 3.2 檢測算法 要檢測雙絞線連接的正確性,必須使電平信號在兩條線上傳遞,否則無法檢測。在本設計中,故障檢測可分為三步:第一,在 8條導線中尋找1條能傳遞電平信號的公用導線;第二,將公用導線與待測導線在從設備端短接,使公用導線電平信號經過待測導線傳遞到主設備側,從而確定待測導線的故障所在;第三,顯示線路的連接狀態。 3.2.1 選公用導線 實際上在10M、100M網絡中,僅僅使用1-2 、3-6 這兩對線,而1000M網絡要用所有的導線,但這并不影響雙絞線的測量方法。上文已經闡明,對于直通線雙絞線的兩端線的排列順序是相同的,而級聯線不同于直通線,雙絞線的一端1-2對應另一端的3-6,3-6對應1-2,其余與直通線連接對應關系相同。因為在實際應用中,直通線的數量遠大于級聯線的數量, 所以將直通線列為首要判斷對象。公用導線的選擇可以從1號線開始進行,主從設備均選中1號線(暫列為公用導線)。通過通道選擇命令,由主設備指導從設備將 1號線(臨時公用導線)和2號線在從設備端連接起來。如果兩條線無故障且兩個端子同屬于一條雙絞線,那么,1號線與2號線將形成通路,在主設備端2號線上,主設備能夠檢測到加在1號線上的電平信號。由此可知,1號線可選為公用導線,應用于其它導線的測量。否則,兩條線中的一條出現故障不能導通,主設備將指導從設備將1、3號線連接起來,重復以上步驟,直到找到公用導線為止。如果公用導線找不到,則說明本線路最多有一條導線導通,或測量的兩端不同屬于一條線路,或所有的導線發生錯接現象。 3.2.2 其它導線對應關系測量 經過公用導線的測量結果分為兩種:一, 找到公用導線;二,沒有找到公用導線。在公用導線的前提下,首先按照直通線的對應關系,在從設備側進行連接,看其它導線是否與公用導線形成環路。如果測量最終結果與直通線的對應關系不一致,則按照級聯線的對應關系進行測量。如果測量結果還不一致,那么說明有錯接現象。通過以上步驟已經獲得部分連線導通的信息。將這些導線排除在外,利用排列、組合的數學方法與公用導線連接,從而得出錯接導線的連接狀況。 如果沒有找到公用導線,系統只能通過排列、組合的數學方法找出導線的連接狀況。當然,這種幾率較少。由于微處理器的速度較快,即使出現這種極端情況,耗時也是瞬間完成的。 另外,每進行一次測量結果的記錄是非常重要的,避免了重復性工作,提高了判斷速度。 3.2.3 顯示兩端對應關系 將測量結果顯示于液晶屏上,使雙絞線兩端的對應關系一目了然,便于排除故障。 本設計采用手動和自動測量兩種方法。以上敘述了自動測量的原理,手動測量的原理與自動測量相同。區別在于選擇手動測量時,已經明確線路接線采用的標準。 4 軟件設計[2,3] 根據以上工作原理設計了相應的軟件,圖6為系統工作流程。下面將整個程序設計的主要通信程序提供給大家,以供參考。 圖6 主從設備軟件設計流程圖 部分程序如下: include "reg51.h" include "com.h" //自定義頭文件 char Cri_opt[3]; //標準選擇命令碼 char Cha_opt[3]; //通道選擇命令碼 char Xbuff[15]; //數據發送緩沖區 char Rbuff[15]; //數據接收緩沖 Xmit_mst() interrupt 4 using 3 //主設備發送中斷程序 { TI = 0; //關閉發送中斷 if(Xput != Xget){ //Xput:發送緩沖區入指針;//Xget:發送緩沖區出指針 SBUF = Xbuff(Xget); //發送數據 Xget = (Xget++)&0fh; //當數據取空時指針Xget轉到起始位置 } delay(10ms); } Rcv_mst() interrupt 4 using 3//主設備接收中斷程序 { RI = 0; //關閉接收中斷 if(Rput != Rget) { //Rput:接收緩沖區入指針;Rget://接收緩沖區出指針 Rbuff(Rput) = SBUF; Rput = (Rput++)&0fh; } delay(10ms); } void SendCmd(char*Buff, char TotalChar){ char cnt; for(cnt=0; Cnt<=TotalChar; Cnt++){ Xbuff[Xput] = Buff[Cnt]; //將命令移入發送緩沖區 Xput = (Xput++)&0fh; //當發送緩沖區滿時入隊指針由隊尾指向隊頭 } SBUF = Xbuff[Xget]; //引起通信中斷,發送數據 delay(10ms); //延時 } main(){ char P0_state; Init(); //系統初始化 ............ //選擇連線標準 Cri_opt[1] = 0ah; //0ah或0bh LpcGen(Cri_opt); //生成校驗碼并寫入相應位置 SendCmd(Cri_opt,3); //將采用的連接標準通知從設備 P0 = 0ffh; //P0口操作 ............ 等待從設備響應; //等待從設備確認后的狀態置位 //選擇通道 ............ Cha_opt[1] = 01h; // 01h-08h LpcGen(Cha_opt); SendCmd(Cha_opt,3); //發送選擇通道命令 P0 = 0ffh; //P0口操作 ............ 等待從設備響應; P0_state = P0; //讀P0口狀態 ............ } 從設備程序設計可仿照主設備程序設計。 參考文獻 1. nRF401 Product Specification.Nordic VLSI ASA 2002 2. 馬忠梅 單片機的C語言應用程序設計 1999 3. 傅清祥.王曉東 算法與數據結構 1998 作 者:北方交通大學 周長勇 張曉冬 來 源:單片機與嵌入式系統應用2003(11) |