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