1、RS485 串行通信接口电路的总体设计 在电参数仪的设计中,数据采集由单片机 AT89C52 负责,上位 PC 机主要负责通信(包括与单片机之间的串行通信和数据的远程通信),以及数据处理等工作。在工作中,单片机需要定时向上位 PC 机传送大批量的采样数据。通常,主控 PC 机和由单片机构成的现场数据采集系统相距较远,近则几十米,远则上百米,并且数据传输通道环境比较恶劣,经常有大容量的电器(如电动机,电焊机等)启动或切断。为了保证下位机的数据能高速及时、安全地传送至上位 PC 机,单片机和 PC 机之间采用 RS485 协议的串行通信方式较为合理。实际应用中,由于大多数普通 PC 机只有常用的
2、RS232 串行通信口,而不具备 RS485 通信接口。因此,为了实现 RS485 协议的串行通信,必须在 PC 机侧配置 RS485/RS232 转换器,或者购买适合 PC 机的 RS485 卡。这些附加设备的价格一般较贵,尤其是一些 RS485 卡具有自己独特的驱动程序,上位 PC 机的通信一般不能直接采用 WINDOW95/98 环境下有关串口的WIN32 通信 API 函数,程序员还必须熟悉 RS485 卡的应用函数。为了避开采用 RS485 通信协议的上述问题,我们决定自制 RS485/RS232 转换器来实现单片机和 PC 机之间的通信。单片机和 PC 机之间的 RS485 通信硬
3、件接口电路的框图,如下图 1 所示。从图 1 可看出,单片机的通信信号首先通过光隔,然后经过 RS485 接口芯片,将电平信号转换成电流环信号。经过长距离传输后,再通过另一个 RS485 接口芯片,将电流环信号转换成电平信号。图 1 单片机与 PC 机之间的 RS485 通信硬件接口电路的框图(略)该电平信号再经过光电隔离,最后由 SR232 接口芯片,将该电平信号转换成与 PC 机 RS232端口相兼容的 RS232 电平。由于整个传输通道的两端均有光电隔离,故无论是 PC 机还是单片机都不会因数据传输线上可能遭受到的高压静电等的干扰而出现“死机”现象。2 接口电路的具体设计2-1 单片机侧
4、 RS485 接口电路的设计单片机侧 RS485 接口电路如图 2 所示。AT89C52 单片机的串行通信口 P30 (RXD)和 P31 (TXD)的电平符合 TTL/CMOS 标准(逻辑“0”的电平范围为 0V0.8V,逻辑“1”的电平为 24V VCC),它们首先通过光电隔离器件 6N137 隔离,以保护单片机不受传输通道的干扰影响,其中 T01 和?T02 是为了增加光隔输入端的驱动能力。光隔 6N137 的左侧电源与单片机相同,右侧必须采用另一组独立的5V 电源,且两组电源不能供电。图 2 单片机侧 RS485 接口电路图 3MAX490 的内部结构MAX4904是 MAXIM 公司
5、的 RS485 接口芯片,其内部结构如图 3 所示。MAX490 支持单电源5V 工作,传输速率最高可达 25MBPS ,可实现全双工通信。其 RO、DI 端的逻辑“0”的电平在0.5V0.8V 之间,逻辑“1”的电平在 20V VCC 之间。输出电流环的电流在150A500A 之间。其工作状态为:当 A 端电压比 B 端电压高 200mV 以上,RO 输出逻辑“1”,当 A 端电压比 B 端电压低 200mV,RO 输出逻辑“0”;当 DI 为逻辑“0”,输出 Y 低、Z 高,当 DI 为逻辑“1”,输出 Y 高、Z 低。图 2 中的电阻器 RRS 为 MAX490 的终端匹配电阻器。22P
6、C 机侧 RS485/RS232 转换器的设计RC 机侧 RS485/RS232 转换器的电路如图 4 所示。该电路首先通过 MAX490 芯片将单片机侧经远距离传输的电流环信号转换成 TTL/CMOS 标准图 4PC 机侧 RS485/RS232 转换器的实际电路(略)图 5MAX232A 的内部结构的电平信号,然后通过光隔 6N137 隔离,得到两个同样是与 TTL/CMOS 电平相兼容的电平信号;最后,经 RS232 芯片转换成 RS232 电平:其中 RS232 电平的逻辑“0”的电平范围为5V15V,逻辑“1”的电平范围为5V15V。这里 RS232 电平转换芯片选 用MAXIM 公
7、司的 MAX232A4,该芯片采用单电源(5V)供电,RS232 电平由内部电荷泵产生,其内部结构如图 5 所示。在 RS485/RS232 转换器的设计过程中需要特别注意的是电源的设计。单片机侧和 PC 机侧的RS485 芯片理论上可共用一个电源。实际上,如果稳压电路安装在单片机侧,同时又将此电源直接拉至 PC 侧的 RS485/RS232 转换器中,由于电源线可能长达上百米,电源线的线径又不可能选得很粗。如此远距离的传输将会导致电源电压在 PC 机侧有一个很大的落差,这样,有可能造成 PC 机侧的 MAX490 或光隔 IC702 工作不正常。一个比较好的解决办法是首先直接将单片机侧变压器
8、输出的交流信号经长距离传输至 RS485/RS232 转换器,然后经整流和稳压,作为 PC 机侧 MAX490 和光隔 IC702 的供电电源。此外,RS232 和光隔左侧的供电电源 PCVCC 可以利用 PC 机内部开关电源的5V 输出,或者由外部稳压电源提供。3 通信软件的设计利用上述硬件通信电路,可以实现符合 RS485 协议的串行通信,同时又对软件的编写没有任何额外要求,因为本电路改变了传输通道的信号传输方式。单片机侧的通信可以采用查询方式或串行中断方式。在电参数测试仪中,为了保证上位机和下位机之间时序的严格一致,我们采用了查询方式,这部分程序的编写较简单,具体可参阅文献13。PC 机
9、侧WINDOWS 环境下的通信程序,可直接利用 VC提供的相应于串口的 API 函数完成 RS232通信编程,具体可参阅文献23。由于数据传输是在强干扰的环境中进行的,而且传输距离又较远,为了保证数据能高速、准确传输,软件编程时可以考虑对大批量的数据进行分组传送,同时对每组数据进行和校验,检查其传输的准确性。在实际使用中,设定每组数据的数据头为单字节 0AAH,中间为256 个字节的采样数据,数据最后一个字节为和校验结果。PC 机每接收到一组数据,均要进行再次和校验,然后将 PC 机的校验结果和单片机的校验结果(该组数据的最后一个字节)相比较,若两者不等则校验失败,PC 机给单片机发重传命令,
10、要求单片机重传本组数据;若两者相等则校验正常,PC 机给单片机发确认认号,并准备接收下一组采样数据,单片机则开始新一轮采样。4 实际应用在电参数测试仪的工作过程中,大约每隔一分钟单片机和上位 PC 机之间就要经过多次命令和数据的双向传递,其数据量较大,每次约有 7k 字节左右。本系统单片机选用 ATMEL 公司的 AT89C52,晶振频率为 110592MHz ,串行通信方式为模式 1,通信速率为 57.6kBPS。上位机的通信和数据处理程序采用 VC6.0 编写。单片机和 PC 机之间的距离约 100 米左右,传输线由普通的多芯电源线替代,且经过有电焊机、电动机、高压静电发生器等频繁起动的场合。采用上述硬件通信电路,同时考虑编程时的软件纠错,该仪器经过多次 24 小时的不间断运行,都没有发生过死机现象,工作一切正常。调试时,通过观察上位 PC 机中设置的数据重传计数器,发现数据重传次数极少。实践证明本文设计符合 RS485 协议的串行通信电路,可以满足高速率、高可靠、远距离的串行通信,同时价格又比较便宜,不失为一种较为理想的串行通信方案。