加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 单片机学习

单片机多机通信网络改进及数据通信容错技术

时间:2013-09-03  来源:123485.com  作者:9stone

    在目前单片机组成的嵌入式控制系统中,所谓的多机通信是指上位机与下位机之间的主从模式的通信,一个单片机系统为主机, n 个应用系统为从机,从机之间不能进行通信. 目前单片机通信存在通信网络模式简单,数据的通信速率低,没有容错技术等缺点.
    MCS-51 单片机串行接口SBUF ,由SCON 控制为用于多机通信的工作方式2 ,3. 当SM2 = 1 ,出现两种情况:接收到第9 位数据为1 时,数据才装入SBUF ,并置RI = 1 ,向CPU 发出中断请求;如果接收到第9 位数据为0 时,则不发生中断,信息被丢失. 若SM2 = 0 ,则接收到的第9 位数据无论是0 还是1 ,都产生RI = 1 中断标志,接收到的数据装入SBUF 中. 多机通信过程安排如下:
1) 使所有的从机SM2 = 1 ,处于接收地址状态;
2) 主机发一帧地址信息,从机接收到地址帧后,将与本从机的地址进行比较. 是本机,使SM2 = 0 ,地址不符合的从机,保持SM2 = 1 ,退出本次通信;
3) 主机发送的数据或命令,以第九位为0 表示. 主从模式的多机通信的拓扑结构,主机的RXD 与所有从机的TXD 端相连,而主机的TXD 与所有的从机的RXD 端连接,如图1 所示.
 
图1  主从多机通信拓扑结构

1  网络结构的改进
    主从模式的多机通信在拓扑结构中,主机只有一个且固定不变,从机是多个,它们之间不能通信.在新的多机通信网络中,没有真正的主机和从机之分,所有的结点都是平权的. 总线也是两条,一根作为主机发送信息,从机接收;另一根是从机发送信息,主机接收. 每一个结点的机器既是从机,又是潜在的主机. 非主动通信状态时,为从机状态. 需要通信时,改变连线的接法,并使自己变为主机状态. 主机状态:它的TXD 端与所有从机的RXD 连接,它的RXD 与所有从机的TXD 连接,以便发送从机地址,与从机建立通信联系,完成交流信息的目的. 本次通信完毕后,自动降为从机状态,并且线路的连接方式也变成从机连接. 从机状态:它的TXD 与所有从机的TXD 连载一条总线上,连接到主机的RXD 端,它的RXD 连接到主机的TXD.其拓扑结构如图2 所示.
多机串行通信拓扑结构 
图2  多机串行通信拓扑结构
说明:1) 任一个结点机器,不主动通信时,处于从机状态,要求通信时,跃迁为主机状态. 行使主机通信形式和权利;
2) 结点机器的TXD ,RXD 与总线的连接有两种方式:主机连接、从机连接. 由机器的状态来决定,也就是说,连接方式与机器的状态相适应,受机器状态的控制.
    逻辑电路接口式连接:用三态门74HC126. 非门用74HC04 实现连接转换功能. 用P1. 0 控制三态门,当P1. 0 = 0 时,其TXD 接主机的RXD ,它的RXD 接主机的TXD ,结点成为从机状态;当P1. 0 = 1 时,其TXD 连接所有从机的RXD ,它的RXD 连接所有从机TXD ,该结点成为主机状态. 连接变换电路图如图3 所示.
由三态门构成多机串行通信智能连接电路 
图3  由三态门构成多机串行通信智能连接电路
多机通信协议: 1) 在初始化或复位时,每个结点都使P1. 0 = 0 ,SM2 = 1 ,处于只接收地址帧(串行帧的第9 位为1) ,对数据帧(串行口的第9 位为0) 则不做响应的从机状态.
2) 需要通信的结点机器,检测到总线空时,置SM2 = 0 ,P1. 0 = 1 ,跃迁为主机状态,发送一个地址帧,其中含8 位地址数据,第9 位为标志位.
3) 当从机接收到主机发来的地址帧后,将所接收的地址与本机地址相比较,若地址与本机地址相符,便使SM2 = 0 ,以便接收主机后发来的数据P命令,对于地址不相符合的从机,仍保持SM2 = 1 状态,故不能接收主机随后发来的数据信息.
4) 主机发送数据或控制指令,其数据帧第9 位置0 ,表示发送的是数据.
5) 当主机改为与另外从机联系时,可再发出地址帧来寻找其它从机. 而先前被寻址过的从机在分析出主机是对其它从机寻址时,恢复其SM2 = 1 ,等待主机的再一次寻址. 主机也可以通过发送一个复位指令,使所有从机处于等待寻址状态.
6) 通信结束后,置P1. 0 为0 ,SM2 位为1 ,退回到从机状态.

2  RS485 总线改善信道
    RS485 串行接口和传统的RS232 串行接口相比有以下特点:RS485 的电气特性:逻辑“1”以两线间的电压差为+ 2~ + 6 V 表示,逻辑“0”以两线间的电压差为- 2~ - 6 V 表示. 接口信号电平比RS232C 低. 不易损坏接口电路的芯片,且该电平信号与TTL电平兼容,可方便的TTL 电路连接. RS485 的数据最高传输速率为10Mbps. RS485 接口是采用平衡驱动器、差分接收器的组合,抗共模干扰能力强,即抗噪声干扰性好.RS485 接口的最大传输距离为1219.5 m(标准值) ,实际上可达3000 m. RS485 接口在总线上允许连接多达128 个接收器,即具有多站能力,这样用户利用单一的RS485 接口方便的建立起设备网络. 因RS485 接口具有上述优点,使其得到广泛的应用.
    半双工通信:采用一对平衡差分信号线,R 为TTL/CMOS 接收端;RE 为其使能端,低电平有效. D 为TTL/CMOS 的发送端,DE为其使能端,高电平有效. A 、B 为一对平衡线,RS485 通过它来接收和发送信号. 每个端口的RS485 收发器的接收使能端接低电平,保证端RS485 总线上的数据都能通过RS485 的接收驱动器,送到每个终端的微处理器的串行输入口;RS485 收发器的发送使能端由每个终端的并行口控制,每个终端在需要发送数据时,才使发送使能拉高,将数据通过RS485 的发送驱动器,送到RS485总线上,如图4 所示.
基于RS - 485 总线的单片机多机通信原理图 
图4  基于RS - 485 总线的单片机多机通信原理图
 RS485 实现全双工通信:采用两对平衡差分信号线, R 为TTL/CMOS 接收端;RE为其使能端,低电平有效. D 为TTL/CMOS的发送端,DE 为其使能端,高电平有效. A 、B 为一对平衡线,RS485 通过它来接收和发送信号. 总线采用RS - 485 模式,用MAX88 完成收发功能. 如距离较远时,在中途进行接收并放大.多机通信网络电路如图5 所示.
 
图5  基于RS - 485 总线的单片机多机通信原理图
    多机竞争总线的问题:在通信系统中,有多个单片机同时要求通信时,就出现多主争用总线问题. 解决的方法:
1) 通信过程中,设有启始和结束标志符,如果通信正在进行,除正在通信的结点外,其它所有的结点置为从机状态;
2) 在测量总线是空状态之后,才允许请求通信的机器由从机状态升为主机状态;
3) 联络从机过程中,五次不成,就退出本次通信. 避免无效通信占用过长的时间,影响通信质量.

3  容错技术
    在单片机组成的嵌入式控制系统中,利用单片机的串行口,可实现单机对单机的通信、或者实现一个主机与多台从机的通信,利用MODEN 实现远距离的信息传输. 基于RS485 总线可实现网络化自由通信. 但单片机多用在工业控制现场,其通信受到各种各样的干扰信号的干扰,由于单片机的内存及操作系统不允许装载复杂的通信容错程序. 针对单片机通信的特点,介绍一种简单可行的差错纠错的编码方法:
    单片机串行通信以8 位数据或九位,一个启始位,一个停止位的通信模型. 通信数据量不会太大等特点. 采用混合纠错检错的方法. 首先采用Hamming(7 ,4) 模型编码. 即在7 位编码中,其中4 位是有效数据,3 位是冗余校验码. 设D3 D2 D1 D0 是4 位有效数据, P2 P1 P0 是3 位校验码,将D3 D2 D1 D0 分成三组, P2 , P1 , P0 分别是3 组的校验位, G2 G1 G0 为检错信息,当G2 G1 G0 = 000时,传送没有错. G2 G1 G0 的值就指明7 位编码中第i 位传错,对该位求反,即可完成纠错. (7 ,4) 校验码的格式,见表1 :
D3 D2 D1 P2 D0 P1 P0 . 7 位(7 ,4) D3 D2 D1 P2 D0 P1 P0 校验码分成三组:
第一组:检错信息G0 ,含有: D3 、D1 、D0 、P0 ,其中: P0 = D3⊕D1⊕D0 , G0 = P0⊕D3⊕D1⊕D0 .
第二组:检错信息G1 ,含有: D3 、D2 、D0 、P1 ,其中: P1 = D3⊕D2⊕D0 , G1 = P1⊕D3⊕D2⊕D0 .
第三组:检错信息G2 ,含有: D3 、D2 、D1 、P2 ,其中: P2 = D3⊕D2⊕D1 , G2 = P2⊕D3⊕D2⊕D1 .
 单片机在发送数据前,先按汉明编码格式,把要发送的数据变成汉明码,即8 位编码中,有4 位数据. 所以一个字节有效数据分成低4 位、高4 位,然后编成汉明码后,发送到缩机. 接收机收到数据后,对数据进行差错和纠错. 即首先计算出G2 G1 G0 检错信息字的值,由信息检错字知道那一位出错,对该位求反,即可完全纠错. 错位与信息字G2 G1 G0 的关系见表2.

表1
B7 B6 B5 B4 B3 B2 B1 B0
  D3 D2 D1 P2 D0 P1 P0
    
 
表2  纠错信息
G2 G1 G0 出错位  求反纠错
000  正确  
001 P0  -P0
010 P1 -P1
011 D0 -D0
100 P2 -P2
101 D1 -D1
110 D2 -D2
111 D3 -D3
     
    汉明校验码可以查出信息中的一位错,并能知道是那位错,可以纠正. 如果两位出错,仅靠汉明码不能进行差错和纠错. 利用第八位作为奇偶验位,可以查出两位错,但不能纠错.
    对单片机通信结点进行改进,适合快速通信的RS - 485 网络技术. 并用汉明校验码使单片机数据通信具有容错功能,提高单片机通信数据传输速率,减少误码率. 使单片机有望成为各种网络的普通的网络结点.


分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->单片机学习
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门