新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 如何基于RS485研究总线集散式测控系统?

如何基于RS485研究总线集散式测控系统?

作者:时间:2018-08-07来源:网络收藏

1引言

本文引用地址:http://www.eepw.com.cn/article/201808/385590.htm

RS-485由电子工业协EIA(Electronics?Industry?Association)于1983年制定。它具有了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。

RS-485采用平衡发送和差分接收,具有抑制共模干扰的能力。其传输时的电气协议规定:当A线的电压低于B线时,传送的是信号1,当A线的电压高于B线时,传送的是信号0。A线和B线能承受的共模信号为 -7V~+12V,这里讲的共模信号是指A线或B线对地的电压。一个标准发送器能够直接驱动几个接收器,且发送器可以被关闭使其输出端变成高阻,因此只需 2条连线既可实现一个半双工的通信网络。RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。

2硬件电路和通信时序

由RS-485组成单主机-多从机的集散式控制系统的简图如图1所示。

图1RS-485总线的结构图

对于单片机异步通信,除了直接连接TX和RX端外,不同于RS-232通信协议,RS-485一定要用单片机的一个I/O引脚负责数据接收或发送方向的控制。用RS-485协议组成的主从通信方式中,所有的通信由一个主机掌控,其它所有从机平时处于接收模式,一旦某一个从机被主机呼叫,就将其通信状态改成为发送模式,待数据发送完毕后又转为接收模式。系统硬件连接电路原理图如图2所示。

图2系统硬件连接原理图

2.1上位机主控端

由于上位机上只有传统的9针D型串口,要和多个下位机节点组成数据通信网络,需要将RS-232通信协议转换,RS-485协议方式,需要用到MAX232和MAX485芯片各一块,其电路原理图如图3所示。

图3RS-232到RS-485的电平转换图

RS-232-485转换器主要包括了电源、RS-232电平转换、RS-485电平转换三部分。该电路的RS-232电平转换电路使用了市场上常见的MAX232集成电路,RS-485电平转换电路采用了MAX485集成电路。为了使用方便,电源部分设计成无源方式,整个电路的供电直接从PC机的RS232接口中的DTR(4脚)和RTS(7脚)取出。PC串口每根线可以提供大约9mA的电流,因此两根线提供的电流就足够供给本电路使用。经实验,本电路只使用其中一条线也能够正常工作。使用本电路需注意PC程序必须使串口的DTR和RTS输出高电平,经过D3稳压后得到VCC,经过实际测试,VCC电压大约在4.7V左右。因此,电路中要说D3起的作用是稳压和限压功能。

MAX485是通过两个引脚RE(2脚)和DE(3脚)来控制数据的输入和输出。当RE为低电平时,MAX485 数据输入有效;当DE为高电平时,MAX485数据输出有效。在半双工使用中,通常可以将这两个脚直接相连,然后由PC或者单片机输出的高低电平就可以让 MAX485在接收和发送状态之间转换了。由于本电路DTR和RTS都用于了电路供电,因此使用TX线和MAX232的另外一个通道及Ql来控制 MAX485的状态切换。平时MAX232的9脚输出高电平,经Ql倒相后,使MAX485的RE和DE为低电平而处于数据接收状态。当PC机发送数据时,MAX232的9脚输出低电平,经Ql倒相后,使MAX485的RE和DE为高电平而处于数据发送状态。

2.2下位机从动端

PIC16F877单片机具有一个通用同步异步接收发送器USART,又名串行通讯接口(SCI),可工作于全双工异步工作模式和半双工同步工作模式,它是一种利用PORTC口的RC6和RC7两个引脚作为通讯的两线制串行通讯接口。为了把PORTC口的RC6和RC7两个引脚分别设置成串行通讯接口的发送(TX)脚和接收(RX)脚,必须要把USART的接收状态和控制寄存器TCSTA的bit7(SPEN)位和TRISC寄存器的bit7置1,把TRISC寄存器的bit6置0。为了使USART分别工作于接收或发送状态,就必须设置相应的状态寄存器和控制寄存器。

USART发送器和接收器在功能上是完全独立的,要使USART工作在异步通讯方式,它们所用的数据格式和波特率就必须是相同的。这里使用常用的格式:波特率9600,无校验,8个数据位,1个停止位。

在编写程序时首先要设置好USART异步通讯模块工作模式及相关寄存器,主要有以下模块寄存器:TXSTA(数据发送控制及状态寄存器),RCSTA(数据接收控制及状态寄存器),SPBRG(波特率控制寄存器),INTCON、PIEI、PIRI(相关的中断控制寄存器),TXREG(串行数据发送寄存器),TCTEG(串行数据接收寄存器)。

在PIC单片机中,决定USART通信波特率高低的,只有SPBRG寄存器和TXSTA寄存器中的BGRH位,不占用任何其它定时器资源。波特率发生器的工作时钟取自于单片机主振荡器的振荡频率输出,通过设置SPBRG寄存器和BGRH控制位对振荡频率分频,最后产生所需的波特率值。

当BRGH=0时,为低速波特率发生方式;BRGH=1则产生高速波特率。这里使用高速波特率,因为这样可以减少与标准波特率值的误差。异步通信告诉波特率的计算方法如下:若单片机的工作振荡频率为fosc,,SPBRG寄存器值为X,则高速波特率的计算公式为:

(1)

在设计过程中,我们一般是先选定需要得到的波特率,然后计算SPBRG的设定值X,变换式(1),即得:

(2)

异步通信波特率设定时得注意事项:当选用标准波特率时,如果一味追求一步通信时波特率的准确度,那就应该选择11.0592MHz作为单片机的工作振荡频率。但其实大可不必如此计较。异步通信允许波特率存在一定的偏差,只要偏差值在士3%之内就可以保证正常通信,所以对于常用的1200bps~9600bps波特率的设定,可选的振荡频率可以有很多种,用户完全可以根据自己所设计系统的其他功能要求而兼顾选择振荡频率。使得单片机的振荡频率越低,功耗就越小,系统抗干扰能力也越强。另外,对于所选的波特率如果既可以用低速方式又可以用高速方式时,在程序中应尽量选择高速方式,这样得到的实际波特率误差相对较小。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭