我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 859|回复: 0

基于nRF401的双绞线故障诊断 - 通信/网络 - 电子工程师俱乐

[复制链接]

该用户从未签到

1万

主题

1292

回帖

2万

积分

管理员

积分
29577

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2013-3-30 00:31:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
随着计算机局域网的不断发展,网络连接越来越复杂,给网络工程师布线、维修等工作带来了很大的困难。困难的原因有两个:第一,双绞线的错接、断接、压线接触不良等问题在工程实践中层出不穷,很难直观发现,而分清每条双绞线两端的对应关系在综合布线中又显得尤其重要;第二,在一般情况下,局域网的终端之间或终端与集线器之间的距离较远,很难采用直接测量的办法对网线故障做出正确判断。

针对以上两点原因,本文对双绞线的故障检测提出了可行的方案与实现方法。首先,将微处理器快速数据分析与逻辑运算应用于双绞线故障检测,使问题变得简单,结果直观化。其次,采用射频无线收发器 nRF401进行数据传输,实现远距离数据交换,使距离远的问题迎刃而解,简化测量过程。

<strong>1系统构成</strong>

1.1nRF401结构简介[1]

nRF401内部结构如图1所示。它是由挪威Nordic公司推出的集收、发为一体的集成芯片,工作于433MHz ISM频段;采用FSK调制与解调技术;传输速率达20Kb/s,传输功率最大+10dBm;差分式天线接口,非常适合做成PCB天线,以节约成本。


<ignore_js_op>





2010-3-22 20:57:40 上传
<strong>下载附件</strong> (5.25 KB)




</ignore_js_op>

图1nRF401内部结构

图1中各引脚含义如下。
  DOUT:数据输出端。
  DIN:数据输入端。
  TXEN:高电平允许发送数据,低电平允许接收数据。
  ANT1、ANT2:天线接入端。
  PWR_UP: 器件低功耗控制。

1.2nRF401外部连接及与微处理器接口

在本设计中,将天线以覆铜的方式做在印制板上,在保证了数据安全可靠传递的前提下,减小了产品的体积。nRF401的配置如图2所示。


<ignore_js_op>





2010-3-22 20:57:41 上传
<strong>下载附件</strong> (12.35 KB)




</ignore_js_op>

图2nRF401外部连接及与微处理器接口

nRF401与CPU之间控制和数据传递接口如图3 所示。


<ignore_js_op>





2010-3-22 20:57:41 上传
<strong>下载附件</strong> (5.75 KB)




</ignore_js_op>

图3nRF401与CPU接口  图4CPU与双绞线接口

1.3CPU与双绞线接口

普通双绞线包含8根线,可以将89C51的P0口作为双绞线线上电平状态的输入口。通过设置和检测P0口的状态,即可对双绞线的连接状况做出正确判断,连接如图4所示。

<strong>2双绞线连接标准</strong>

关于连接的标准有两个:T568A和T568B。两个标准的线序排列如图5所示,方向为水晶头金属压片向上且正对观测者的方向。T568B为常用的标准。


<ignore_js_op>





2010-3-22 20:57:41 上传
<strong>下载附件</strong> (4.12 KB)




</ignore_js_op>

图5RJ45连接器标准

  ◆ 两边使用同样标准的线称为直通线,用于PC到HUB普通口、HUB普通口到HUB级联口之间的连接。
  ◆ 两边使用不同标准的线称为级联线, 用于PC到PC、HUB普通口到HUB普通口之间的连接。

以上两条是判断的主要理论依据。

根据标准,对应 RJ-45插头引脚线序颜色如表1所列。

<strong>表1</strong>

<ignore_js_op>





2010-3-22 20:57:41 上传
<strong>下载附件</strong> (3.13 KB)




</ignore_js_op>


引脚定义如表2所列。

<strong>表2</strong>

<ignore_js_op>





2010-3-22 20:57:40 上传
<strong>下载附件</strong> (7.49 KB)




</ignore_js_op>


<strong>3工作原理</strong>

因为双绞线故障的不确定性,所以不能通过双绞线自身作为主设备和从设备之间数据传递的途径。通过微波进行无线数据传递,对于双绞线的故障判断实在是合适不过的。为此,我们自行设计了主从设备间的数据通信协议及相应的判断规则。

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为系统工作流程。下面将整个程序设计的主要通信程序提供给大家,以供参考。


<ignore_js_op>





2010-3-22 20:57:41 上传
<strong>下载附件</strong> (11.68 KB)




</ignore_js_op>

图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口状态
    ............
}

从设备程序设计可仿照主设备程序设计。

<strong>参考文献</strong>

1. nRF401 Product Specification.Nordic VLSI ASA 2002
2. 马忠梅 单片机的C语言应用程序设计 1999
3. 傅清祥.王晓东 算法与数据结构 1998

作 者:北方交通大学 周长勇 张晓冬
来 源:单片机与嵌入式系统应用2003(11)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

公告:服务器刚移机,
大家请不要下载东西。
会下载失败


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表