基于RS-485协议设计智能数据采集网络仪表
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串行通信,可以保证快速、稳定、远距离传送数据。本文设计的系统已在智能数据采集网络仪表中得到成功应用,其通信设计方法还可以稍加修改即可移植到其他的工业测控系统中。由于本文设计方法开发成本低,设计简单,在目前及以后的工业控制和其他方面必将得到越来越多的应用。
RS-485协议智能数据采集网络仪 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)