当前位置:自动化网>武汉波仕电子有限公司门户>应用案例>单片机的RS-485/422多机通信方案

单片机的RS-485/422多机通信方案

发布时间:2011-03-29 15:56   类型:解决方案   人浏览

                                    武汉波仕电子公司  2011-3

8051单片机的串行通信里可以支持多处理器通信,本文讨论的就是这方面的技巧。不过若连接的对象是PC机时,(9600bps,n,8,1)反而是最常用的通信格式,所以本文介绍的是要实现多个8051单片机与PC机的连接实例,因为PC机身我们身边最常用且最方便取得外部设备,当然你也可以用两块8051单片机做串口通信实验。

     8051单片机串行传输模式2和模式3可以做多处理器通信,其中的重点正在SCON寄存器的SM2位和TB8及RB8位上,这几位就决定了多处理器通信的核心。至于波特率的问题,只要发送与接收的双方一致即可。图1 是一个典型的多处理器通信的连接示意图。

     多处理器通信与RS-232的一对一通信的最大的差异就是多了一个地址传输码。一对一通信时,我送数据就轮到你接收,而你送数据时就换成为我接收,完全没有商量的余地。但是多处理器通信时,主CPU发出的信息如何正确地传到某个从CPU呢?针对这个问题,在多处理器系统中每一个从CPU都有其特定的编号(也有人称为ID),在数据传输前面个从CPU都处于待命的状态,当主CPU指定到某个特定的从CPU时,改从CPU才开始接收或发送数据,而这项指定特定从CPU的操作,实际上就是送出地址ID值,每个从CPU上的程序收到地址后,会先判断一下是否叫到要启动,若属实则开始执行启动的所有程序。接下来我们用一步一步说明的方式,详细介绍多处理器通信额程序。

     在多处理器通信中我们一直提到“地址传送”,在串行通信时,我们如何去辨别地址值(Adress)和数据(Data)呢?这正是8051串行模式2和模式3的魅力所在。当8051工作在以上两个模式时,除了数据占8位外,传输时多了一个TB8位,接收时则多了一个RB8位。在多处理器通信时,当TB8=1代表正传输一个地址值,该地址值有8位宽,所以理论上可以连接256个CPU在同一个系统中。TB=0代表正在传输一个数据值,在此串行传输线上,每笔串行数据共有11个位,但其中以第10个位的状态来区分地址或数据,接收端可以依此格式立刻判断出其中的差异来。

   在从CPU上通常以串行中断的方式来对待进来的数据,若把SCON寄存器的SM2位设置成为1时,即允许8051的串行接口做多处理器的地址判断,在这个模式下:

    CPU只在接收地址值(其RB8=1)时才产生中断要求。

    在串行中断的服务程序上,只要由SBUF内读回地址值,再做一个判断是否被调用。若YES时则跳去执行程序设置的操作,若NO时则不做任何操作,随即结束此中断服务程序回主程序,被指定到的从CPU先设置成为SM2,然后开始发送或者接收数据,而其他的从CPU并未启动传输,所以此瞬间仍然是一对一的通信,当主CPU在最初的发送地址阶段却是一对多的通信。图1的连接方式是否可以用RS-232呢?答案是否定的。

    当主CPU传送数据给各从CPU时,如果只有发送其他都是接收的情况下是可以使用RS-232的构架,可是当主CPU欲收数据而其中只有一个从CPU发送时,会造成数据电平冲突,使得主CPU无法由RXD脚上得到正确值。因此,在实际应用上改采用另外一种传输规格RS-422,这种传输方式只有传输的硬件上不同而已,软件上的串行通信程序都无需做任何修改。波仕电子的H485C型号的转换器可以实现单片机TTL电平的串口与RS-422之间的相互转换。RS-422的传输线有4条(T+、T—、R+、R—),其连接方式如图2。注意波仕电子的H485C转换器还具有将PC机的RS-232转换为RS-422/485的功能,所以如果上位机的接口上计算机的RS-232口,也一样可以用H485C。

  


   另外一种常用的多处理器传输的接口上RS-485接口,只要2根线就可以将多个CPU连接在一起,这种做法使得数据共享的可能性大为提高,请看图3的RS-485连线图。波仕电子的H485C型号的转换器还可以实现单片机TTL电平的串口与RS-422之间的相互转换,。当多处理器以RS-422接口连接时,一定有一个主CPU和多个从CPU,若想作从CPU之间的数据传输时,所传输的路径是从CPU到主CPU ,然后由主CPU再送给另外一个从CPU。若采用图3的RS-485构架时,只要传输线空闲,任意两个CPU,无论主从,都可以相互传输数据,完全没有主从之分。若以此构架再做发展时,就形成了现在我们常用的ARCNET或ETHERNET的LAN网络了。


    

 

   为什么要将8051的串行口抓换为RS-485呢?首先可以方便地实现多机通信。另外通信距离也有TTL的几米延长到了1200米!虽然波仕的H485C也可以将PC机的RS-232口转换为RS-485或者RS-422,但是现在许多新的计算机都已经没有了RS-232串行口,且操作系统都是WINDOWS。那么就需要加USB到RS-485的转换器。由于USB的驱动程序几乎都是WINDOWS版的,所以你只能够在WINDOWS下与从单片机进行通信。波仕的USB1485型号的转换器提供了USB与RS-485或者RS-422的转换。



本文地址:http://www.ca800.com/apply/d_1nrutga2l1t6u_1.html

拷贝地址

免责声明:本文仅代表作者个人观点,与中国自动化网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容!

留言反馈
  • 评价:

  • 关于:

  • 联系人:

  • 联系电话:

  • 联系邮箱:

  • 需求意向:

  • 验证码:

    看不清楚?