一、导言
在由以单片机为中心构成的仪器外表、智能设备等许多数据收集体系中,往往需求完结核算机与单片机之间的数据交流,这也便是单片机与核算机之间的通讯,以此来充分发挥单片机与核算机各自的利益,提高整个运用体系性能及性价比。传统的依据RS-232协议的通讯因为传输间隔短、速度慢、信号易受搅扰等缺乏,使得其运用局限性日益突出。有鉴于此,作者在文中评论了怎么依据RS-485通讯协议,构建RS-485通讯网络,完结若干单片机与核算机之间长途通讯。
二、硬件规划
1.RS-485通讯简介
RS-485是EIA(美国电子工业协会)拟定的平衡发送、平衡接纳的规范异步串行总线,它具有传输间隔远、灵敏度高、多点通讯才干强等长处。RS-485接口规范参见表一。
2.MAX485芯片介绍
RS-485转化接口芯片咱们选用MAXIM公司的MAX485(见图一),该芯片选用单电源+5V作业,额定电流300uA,半双工通讯办法,它完结将TTL电平转化成
RS-485电平。该芯片具有8条引脚,内部含2个驱动器和接纳器,RO,DI别离为接纳器的输出端和驱动器的输入端,二者别离接单片机TXD和RXD。/RE和DE别离为接纳和发送使能端,当/RE=0时,MAX485处于接纳状况;当DE=1时,MAX485处于发送状况。因为MAX485作业在半双工状况,所以它与单片机衔接时接线十分简略,只需用单片机一个管脚操控这两个引脚即可。A端和B端别离为接纳和发送的差分信号端,当VA大于VB时,表明发送数据为“1”,当VA小于VB时,表明发送数据为“0”,作业时,A、B之间应加匹配电阻,一般可选100~120欧。
.电平转化接口
在PHILIPSP89C51RD2单片机与核算机进行通讯时,有必要对电平作一转化。因为单片机与核算机之间是RS-485网络,单片机侧信号经MAX485后,从TTL电平转化为RS-485电平信号,因而,在核算机侧有必要再把RS-485信号转化成RS-232电平信号,这样,二者才干正确通讯。在本体系选用DAC-8520转化器,把RS485信号转化为RS-232信号,该转化器数据转化传输速度快,且不需求用户对其进行初始化和参数修正。
表一RS-485接口规范
4.核算机端接口
核算机选用可编程串行异步通讯操控器8251A来完结,经过对8251A初始化能够操控串行数据传送格局和速度及其作业办法,使得它与单片机的通讯办法共同,然后完结核算机与单片机之间的通讯。
三、多点通讯
3.1多点通讯原理
RS485总线规范是在RS-422基础上发展起来的,它增加了多点双向通讯才干,使分布式网络的多点通讯得以完结。咱们在了解了器材的驱动才干后,就能够依据需求和驱动才干参加需求的节点。本体系便是运用一台核算机操控多达32块单片机,核算机经过发送操控字和作业办法字来确认和所需求的单片机树立通讯衔接。单片机依据核算机发送的指令进行数据收集,并依据需求与核算机交流数据或对生产过程参数及所连设备状况进行调整。核算机对单片机传回的数据进行剖析与核算后,再将相关操控信息传给单片机。
51系列单片机用于多点通讯时有必要作业在办法2或办法3。以办法3为例,每发送一帧数据为11位:1位开始位(0),8位数据位和1位中止位(1),附加的第9位数据在非多点通讯体系中为奇偶校验位,在发送端有SCON的TB8产生,在接纳端传送到RB8。它还可设定为“0”或“1”作为在多点通讯中区分数据帧(0标志)仍是地址帧(1标志)的标志。在51系列单片机多点通讯体系中有以下通讯协议:一切的各从机均处于听命状况,即SM2=1,以便接纳主机发送来的地址,当接纳到一帧信息的RB8为“1”时,表明主机发送来的是地址信息,一切的从机均产生接纳中止,不然中止屏蔽。当一从机进入相应的中止服务程序,把接纳到的地址和本机的地址比较,假如契合就令其SM2=0,并向主机发回本机地址以作应对,该从机就与主机连通,预备接纳主机发来的指令或数据信息,而其他的未被寻址的从机坚持SM2=1并退出各自的中止服务程序。这样,只要SM2=0的从机才干接纳到主机发来的数据信息,顺利完结地址帧和数据帧的别离。被寻址的从机在通讯完结后从头使SM2=1,并退出中止服务程序,等候下次通讯。
3.2多点通讯协议
完结核算机和单片机的正常通讯,有必要正确设置它们两者之间的作业办法,确保两边都用相同的波特率、开始位、中止位、奇偶校验位,而且要树立两边通讯的应对信号。
单片机既能够作业在同步移位存放器办法,也可作业在UART(通用异步收发器)下。串行口的通讯办法是由特别功用存放器SCON来操控的。其各位界说如下:
SM0,SM1:作业形式设定位;SM2:答应运用办法2、3多机通讯操控位;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串行通讯,能够确保快速、安稳、远间隔传送数据。本文规划的体系已在智能数据收集网络外表中得到成功运用,其通讯规划办法还能够稍加修正即可移植到其他的工业测控体系中。因为本文规划办法开发本钱低,规划简略,在现在及今后的工业操控和其他方面必将得到越来越多的运用。