微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于RS-485协议设计智能数据采集网络仪表

基于RS-485协议设计智能数据采集网络仪表

时间:11-17 来源:互联网 点击:

RB8:接收数据第9位;TB8:发送数据第9位;TI发送中断标志;RI:接收中断标志。本文中工作方式为方式3,即9位UART定时器T1作为波特率发生器,工作在方式2,若选定波特率为9600bps,则记数初值为0FAH(SMOD=0,时钟频率Fosc为11.0592MHz)

计算机的异步通信接口为INTEL8251A,它可设定1位、1.5位或2位停止位,数据可在5到8位之间选择,通信频率为0到9600bps,有奇偶校验、帧校验、溢出校验三种方式。可通过对它写入一定的方式控制字、命令控制字从而进行初始化。它的工作状态寄存于状态寄存器中,可由P89C51RD2的CPU读取。通信协议如下:(1)串行通信波特率为9600bps;(2)帧格式为8位数据位,一位起始位,一位可编程的第9位(即发送和接收的地址/数据位的标志位),一位停止位;(3)主机和从机遵循主从原则,主机用呼叫方式选择从机,数据在主机和从机之间双向传递,各从机之间的相互通信需通过主机作为中介;(4)主从机之间还应传送一些供它们识别的命令和状态字,如以00H表示主机发送从机接收命令,以01H表示从机发送主机接收命令等。

四、软件设计

该部分主要包括主机程序、从机和其中断服务程序组成。主机程序主要完成对串口初始化以及主机与从机之间的通信。而从机主程序主要完成对串口的初始化、波特率的设置(应与主机端的波特率一致),它的中断程序主要完成P89C51RD2与计算机的数据通信。

1.单片机部分

单片机端程序在KEIL公司提供的优秀可视化集成开发环境uVISION2中用C语言编写。通信波特率9600bps,晶振11.0592Mhz。需要注意的是PHILIPSP89C51RD2的1个机器周期为6个时钟周期,与标准8051单片机1个机器周期为12个时钟周期不同,因此,在相关参数设置时要注意这一差别,否则,无法正确建立通信连接。为配合多机通信方式,我们采用工作方式3.

单片机通信流程图如图二所示。

单片机串口初始化程序如下:

main()

{TMOD=0x20;

/*定时器1方式2*/

TH1=0xfa;

/*9600波特率晶振11.0592MHz*/

TCON=0x40;

/*启动定时器1*/

SCON=0x50;

/*允许接收*/

IE=0x90;

/*允许串行口中断*/

………..

2.计算机部分

计算机端程序我们采用优秀的可视化软件VisualBasic编写,其中关键部分是引用VisualBasic的串行通信控件MSComm,发送和接收完全由该控件管理实现,而不需要以往繁琐的驱动程序编写。这无疑大大提高了工作效率,降低了开发成本。

计算机通信流程如图三所示。

下面给出用VB6编制的通信程序:

Dim inbyte()ASByte’定义动态字节型数组

PrivateSubtxd_click()’通信建立及数据发送控制按钮

IfMSComm1.PortOpen=TrueThenGoTojj

如通信端口开则跳至jj

MSComm1.CommPort=1

’通信端口为COM1

MSComm1.Settings="9600,n,8,1"

’串口初始化为9600波特,8位数据位,1位停止位,无校验

MSComm1.PortOpen=True

’打开通信端口

jj:Mscomm1.output=Text1.text

’发送地址码

………..

Mscomm1.output=text2.text’发送工作方式控制字,采集通道以及校验码

EndSub

PrivateSubrxd_click()’数据接收按钮

Inbyte()=Mscomm1.input’接收的数据存于动态字节数组

…….’省略数据处理部分

EndSub

五、结束语

利用RS-485串行通信,可以保证快速、稳定、远距离传送数据。本文设计的系统已在智能数据采集网络仪表中得到成功应用,其通信设计方法还可以稍加修改即可移植到其他的工业测控系统中。由于本文设计方法开发成本低,设计简单,在目前及以后的工业控制和其他方面必将得到越来越多的应用。

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

网站地图

Top