微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于RS-485总线的PC与多单片机间的串行通信

基于RS-485总线的PC与多单片机间的串行通信

时间:01-30 来源:互联网 点击:

0 前言

单片机因其优越的性价比和灵活的功能配置而被广泛的应用于测控领域。而PC则因为丰富的软、硬件资源,被广泛应用于网络监控系统中。这就是一台PC与多台单片机所组成的主从式网络测控系统。串行通信是计算机和外部设备进行数据交换的重要渠道,由于其成本低,性能稳定并遵循统一的标准,因而在工程中被广泛应用。本文以华东石油局的一台油田钻井的滚动轴承信号采集系统为例,讨论一种基于串行通信标准的测控系统的通信协议及其具体的软、硬件实现。在本系统中,上位机以PC和Windows操作系统为软、硬件资源;下位机采用ATMEL公司89C51,总线标准采用的是测控系统常用的RS-485。

1 通信系统的硬件设计

尽管RS-232有些缺点,但在两台短距离设备间的短距离信息传输时,最通用的还是RS-232。但对于多台设备的长距离传输,它就很难实现。而 RS-485是一个多引出线接口,这个接口可以有多个驱动器和接收器,可以实现一台PC和多台单片机之间的串行通信;而且RS-485的最长的传输距离为 1200m,适合中距离的传输。本文针对油田钻井的滚动轴承信号采集及传输,根据工地实际工作环境,采用RS-485通信接口。

1.1 PC和RS-485总线的接口[3]

该接口的主要功能是完成RS-232到RS-485的转变,完成这个功能的芯片很多,比如MAX-485,我们的系统采用的是ADAM公司的ADAM4250,RS-232/RS-485转换器,结构如图(1)所示:

图1 ADAM4250


1.2 89c51和RS-485总线的接口[1],[4]

由于MAX48x/49x系列收发器组成的差分平衡系统抗干扰能力强,接收器可检测到200mV的信号,传输的数据可以在千米以外得到恢复,特别适合远距离通信,可以组成标准的通信网络。本系统采用MAX487接口芯片作为收发器,由于它的输入阻抗是标准接收器的4倍,因此最多可以挂128个接收器。

1.3 系统的总体连接

本系统采用一主多从的总线型连接方式,如图2所示。为了消除反射,吸收噪音,采用2个120 的匹配电阻R1和R2连在总线的两端。其中n不大于128。

图2 系统总体连接图

2 通信协议的设计

由于RS-485通信是一种半双工通信,发送和接受共用同一物理通道,在任意时刻只允许一台单片机处于发送状态,因此要求应答的单片机必须在侦听到总线上呼叫信号已经发送完毕,并且在没有其他单片机应答信号的情况下才能应答。如果在时序上配合不好,就会发生总线冲突,使整个系统的通信瘫痪,无法正常工作。上位机与下位机之间如何进行数据传输,怎么提高通信的效率和可靠性,以及对通信过程中的故障处理,帧格式的约定,都需要一套详尽的通信协议。RS- 485总线只制定了物理层电气标准,对上层通信协议没有规定。这给设计者提供了很大的灵活性。一套完整的通信协议既要求结构简单,功能完备,又要求具有可扩充性与兼容性,并且尽量标准化。本系统的协议就是从这几个方面考虑的,它主要包括以下几个部分:

2.1 上下位机间的通信过程

(1)通信均有上位机发起,下位机不主动申请通信;

(2)当处于轮询状态时,上位机依据下位机地址,定时向下位机发送呼叫指令。此时,每台下位机都中断接受并判断,地址不相符的下位机中断返回,执行其他下位机任务;反之则把本机地址及其状态作为应答信号发送给上位机。上位机接收到应答信号后,可以作进一步的处理。

2.2 通信协议

本系统采用比较简单的通信协议:PC机需要与单片机通信时,首先发送一个字节的信号,以16进制表示为AAH,单片机接收到AAH后,就将需要发送的数据连续地向PC机发送;PC机与单片机通信结束时,向单片机发送一个字节的信号,以16进制表示为55H,结束数据发送。单片机发送给PC机的数据格式为:

开始码

数据体

校验和

结束码

00H

DATA[0]DATA[1]…DATA[N-1]

DATASUM

FFH

3 通信系统的软件设计

3.1 上位机通信软件设计

本系统的上位机软件用VB6.0实现,利用VB6.0提供的MSComm通信控件,可以方便的访问串口,实现数据的接收和发送。由于本系统用一台上位机监控多台下位机,所以上位机监控界面主要包括3个:

(1)轮询界面,即主监控界面。可以监测到下位机的状态(运行,停机,故障)。考虑到通用型,下位机的台数可以根据实际需要添加或删除,最多可带128台下位机。本系统默认为50台。

(2)下位机运行监视和控制界面。主要是对某一台定位控制器进行状态监视和位置给定。

(3)下位机内部参数设定界面。可以根据实际需要对某一台定位控制器的运行参数进行修改。

开发通信程序的关键是发送和接受数据。下面给出上位机中数据发送和接收的部分程序:

MSComml.Settings=Settings ; 串口的波特率设置

send_arr0(0)=H02 ;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top