广州菱控自动化科技有限公司
主营:欧姆龙,三菱,安川,Pro-face,松下
首页 > 解决方案 > 网络通讯_单片机 > 单片机的RS-485/422多机通信方案
行业类别
全部 航空航天 新能源 冶金 石油 石化 化工 汽车 建材 包装 造纸印刷 纺织印染 机械 机床 木工 矿业 塑胶 交通 铁路 机场 港口 仓储 物流 能源 电力 输配电 水利 环保水处理 电子 食品饮料 制药医疗 烟草 电梯 网络通讯 市政 商业 楼宇 安防 锅炉供暖 制冷 金融保险 邮政 广电 军工 机器人 其它
产品类别
全部 PLC 变频器 伺服 DCS 触摸屏 传感器 机器视觉 仪器仪表 工业以太网 现场总线 工控机 嵌入式 数据采集 软件 低压电器 数传 电源 数控 机柜箱体 工具 单片机 流体 工业安全 安防 媒体 其它

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

发布日期:2026/2/5

                                    武汉波仕电子公司  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的转换。


销售热线

销售微信