学位论文基于rs485接口的数据传输电路设计.docx
- 文档编号:27434925
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:29
- 大小:441.96KB
学位论文基于rs485接口的数据传输电路设计.docx
《学位论文基于rs485接口的数据传输电路设计.docx》由会员分享,可在线阅读,更多相关《学位论文基于rs485接口的数据传输电路设计.docx(29页珍藏版)》请在冰豆网上搜索。
学位论文基于rs485接口的数据传输电路设计
单片机技术课程设计说明书
基于RS485接口的数据传输电路设计
专业
电气工程及其自动化
学生姓名
周琪
班级
BM电气101
学号
1051402115
指导教师
周云龙
完成日期
2013年6月18日
目录
1.概述1
2.RS485硬件问题6
2.1问题的提出6
2.2电路基本原理6
2.3RS-485的DE控制端设计8
2.4避免总线冲突的设计8
2.5RS-485输出电路部分的设计8
2.6系统的电源选择6
2.7软件的编程6
2.8结论6
2.硬件设计6
2.1RS4856
2.2多通机原理6
2.3单片机通信原理8
2.4MX4858
2.5整题电路设计8
3.软件设计11
3.1通信软件实现11
3.2程序流程图12
4.联合调试14
5设计小结16
参考文献16
附录17
附录1:
程序清单17
附录2:
系统电路图21
1.概述
单片机是一种采用超大规模集成电路技术把多种功能集成到一块硅片上构成的一个小而完善的计算机系统。
它广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高,在许场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。
串行通信作为单片机之间常用的通信方法之一,由于其通信编程灵活、硬件简洁并遵循统一的标准,因此其在工业控制领域得到了广泛的应用。
本次课程设计就是利用单片机,基于RS-485芯片,设计一种简单的多机通信——一主两从。
RS一485接口是一种基于平衡发送和差分接收的串行总线,具有很强的抗共模干扰能力,在适当的波特率下传输距离远;同时易于进行网络扩展,被广泛的应用在很多工业现场。
节能灯寿命检测环境中,主要干扰来自开关和寿命检测的强电干扰、开关产生的电磁干扰、空气循环设备的干扰等等;同时由于寿命检测环境温度高,强电系统复杂,也给系统的运行提出更高的要求。
寿命检测系统要求实时报告每一盏节能灯的运行状态、环境温度、电压等,并在寿终计算出节能灯寿命、光通等参数。
可见系统的传输数据量大,实时性强,因此物理总线的拓扑结构和通信协议尤为关键。
1.1总设计方案
在多机通信中,最重要的是保证通信有条不紊地进行,因此需要严格的通信协议和完善的通信软件,本次课程设计就是利用RS-485电气特性和简单的结构方式,基于RS-485的多机通信系统,采用自定义串行通信协议,实现2个通信终端之间互相通信的功能
该设计方案通信距离远、抗干扰能力强也可实现主机与从机的通信,但不能实现从机之间的通信。
RS-485方式构成的多机通信系统采用主从式结构:
主机控制多个从机,作为从机的单片机不主动发送命令或数据,一切都由主机单片机控制;并且在一个多机系统中,只有一台主机,各台从机之间不能相互通信,即使有信息交换也必须通过主机转发。
采用RS-485构成的多机通信系统原理。
在总线末端接一个匹配电阻,吸收总线上的反射信号,使得正常传输信号无毛刺。
匹配电阻的取值应该与总线的特性阻抗相当。
在总线上没有信号传输时,总线处于悬浮状态,容易受干扰信号的影响。
将总线上的差分信号的正端A+和负端B-之间接一个10K的电阻;负端B-和地间接一个10K的电阻,形成一个电阻网路。
当总线上没有信号传输时,正端A+的电平大约为3.2V,负端B-的电平大约为1.6V,即使有干扰信号,也很难产生串行通信的起始信号0,从而增加了总线抗干扰的能力。
1.2设计要求:
设计一个RS485接口并能实现双机通讯的单片机应用系统。
1.3设计方案:
本次设计,对于两片89C51,采用RS485进行双机通信。
发送方的数据由串行口TXD段输出,经过电平转换芯片MAX485将TTL电平转换为RS485电平输出,经过传输线将信号传送到接收端。
接收方也使用MAX485芯片进行电平转换后,信号到达接收方串行口的接收端。
接受方接收后,在数码管上显示接收的信息。
为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。
软件部分,通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH。
主机收到BBH后就把数码表TAB[16]中的10个数据送给从机,并发送检验和。
从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH给主机,重新接受。
从机收到16个正确数据后送到一个数码管显示。
选择STC单片机作为控制MCU,用6N137高速光耦进行隔离,其结构图如图所示。
1.4设计系统流程图
首先判断是接收中断还是发送中断,若是接收中断,则清除RI,同时启动字符间隔定时器TO,并置收发标志为收。
当接收完第2个字节后,各从机立即判断是否寻址本机,若是,则置SM2为‘0’,继续接收主机送来的数据;若不是,则禁止T0定时,不在接收后面的数据。
当被寻址从机接收完一帧信息后,字符间隔定时器会产生定时中断,进入TO中断服务程序。
下图是TO中断服务程序流程图。
进入TO中断服务程序后,首先清除TO中断请求标志,停止TO定时器,接着判断是接收完成还是发送超时,若是接收完成,再判断校验和是否正确,若正确,对接收的命令进行解释,看是主机读还是主机写操作,若是主机读,则将数据打包,送到专门用于通信的数组,接着,禁止接收,置本机为应答工作方式,最后启动发送,发送第一个字节,同时启动发送时限定时器TO。
当一个字节发送完后,便进入通信中断服务程序,继续发送余下数据。
如果在上边判校验和时,发现不正确,则置SM2为‘1’,恢复本机的侦听状态,以便接收主机的重发信息
2RS485硬件问题
2.1问题的提出
在工业控制及测量领域较为常用的网络之一就是物理层采用RS-485通信接口所组成的工控设备网络。
这种通信接口可以十分方便地将许多设备组成一个控制网络。
从目前解决单片机之间中长距离通信的诸多方案分析来看,RS-485总线通信模式由于具有结构简单、价格低廉、通信距离和数据传输速率适当等特点而被广泛应用于仪器仪表、智能化传感器集散控制、楼宇控制、监控报警等领域。
但RS485总线存在自适应、自保护功能脆弱等缺点,如不注意一些细节的处理,常出现通信失败甚至系统瘫痪等故障,因此提高RS-485总线运行可靠性至关重要。
2.2电路基本原理
某节点的硬件电路设计如图1所示,在该电路中,使用了一种RS-485接口芯片SN75LBC184,它采用单一电源Vcc,电压在+3~+5.5V范围内都能正常工作。
与普通的RS-485芯片相比,它不但能抗雷电的冲击而且能承受高达8kV的静电放电冲击,片内集成4个瞬时过压保护管,可承受高达400V的瞬态脉冲电压。
因此,它能显著提高防止雷电损坏器件的可靠性。
对一些环境比较恶劣的现场,可直接与传输线相接而不需要任何外加保护元件。
该芯片还有一个独特的设计,当输入端开路时,其输出为高电平,这样可保证接收器输入端电缆有开路故障时,不影响系统的正常工作。
另外,它的输入阻抗为RS485标准输入阻抗的2倍(≥24kΩ),故可以在总线上连接64个收发器。
芯片内部设计了限斜率驱动,使输出信号边沿不会过陡,使传输线上不会产生过多的高频分量,从而有效扼制电磁干扰。
在图1中,四位一体的光电耦合器TLP521让单片机与SN75LBC184之间完全没有了电的联系,提高了工作的可靠性。
基本原理为:
当单片机P1.6=0时,光电耦合器的发光二极管发光,光敏三极管导通,输出高电压(+5V),选中RS485接口芯片的DE端,允许发送。
当单片机P1.6=1时,光电耦合器的发光二极管不发光,光敏三极管不导通,输出低电压(0V),选中RS485接口芯片的RE端,允许接收。
SN75LBC184的R端(接收端)和D端(发送端)的原理与上述类似。
2.3RS-485的DE控制端设计
在RS-485总线构筑的半双工通信系统中,在整个网络中任一时刻只能有一个节点处于发送状态并向总线发送数据,其他所有节点都必须处于接收状态。
如果有2个节点或2个以上节点同时向总线发送数据,将会导致所有发送方的数据发送失败。
因此,在系统各个节点的硬件设计中,应首先力求避免因异常情况而引起本节点向总线发送数据而导致总线数据冲突。
以MCS51系列的单片机为例,因其在系统复位时,I/O口都输出高电平,如果把I/O口直接与RS-485接口芯片的驱动器使能端DE相连,会在CPU复位期间使DE为高,从而使本节点处于发送状态。
如果此时总线上有其他节点正在发送数据,则此次数据传输将被打断而告失败,甚至引起整个总线因某一节点的故障而通信阻塞,继而影响整个系统的正常运行。
考虑到通信的稳定性和可靠性,在每个节点的设计中应将控制RS485总线接口芯片的发送引脚设计成DE端的反逻辑,即控制引脚为逻辑“1”时,DE端为“0”;控制引脚为逻辑“0”时,DE端为“1”。
在图1中,将CPU的引脚P1.6通过光电耦合器驱动DE端,这样就可以使控制引脚为高或者异常复位时使SN75LBC184始终处于接收状态,从而从硬件上有效避免节点因异常情况而对整个系统造成的影响。
这就为整个系统的通信可靠奠定了基础。
此外,电路中还有1片看门狗MAX813L,能在节点发生死循环或其他故障时,自动复位程序,交出RS-485总线控制权。
这样就能保证整个系统不会因某一节点发生故障而独占总线,导致整个系统瘫痪。
2.4避免总线冲突的设计
当一个节点需要使用总线时,为了实现总线通信可靠,在有数据需要发送的情况下先侦听总线。
在硬件接口上,首先将RS-485接口芯片的数据接收引脚反相后接至CPU的中断引脚INT0。
在图1中,INT0是连至光电耦合器的输出端。
当总线上有数据正在传输时,SN75LBC184的数据接收端(R端)表现为变化的高低电平,利用其产生的CPU下降沿中断(也可采用查询方式),能得知此时总线是否正“忙”,即总线上是否有节点正在通信。
如果“空闲”,则可以得到对总线的使用权限,这样就较好地解决了总线冲突的问题。
在此基础上,还可以定义各种消息的优先级,使高优先级的消息得以优先发送,从而进一步提高系统的实时性。
采用这种工作方式后,系统中已经没有主、从节点之分,各个节点对总线的使用权限是平等的,从而有效避免了个别节点通信负担较重的情况。
总线的利用率和系统的通信效率都得以大大提高,从而也使系统响应的实时性得到改善,而且即使系统中个别节点发生故障,也不会影响其他节点的正常通信和正常工作。
这样使得系统的“危险”分散了,从某种程度上来说增强了系统的工作可靠性和稳定性。
2.5RS-485输出电路部分的设计
在图1中,VD1~VD4为信号限幅二极管,其稳压值应保证符合RS-485标准,VD1和VD3取12V,VD2和VD4取7V,以保证将信号幅度限定在-7~+12V之间,进一步提高抗过压的能力。
考虑到线路的特殊情况(如某一节点的RS-485芯片被击穿短路),为防止总线中其他分机的通信受到影响,在SN75LBC184的信号输出端串联了2个20Ω的电阻R1和R2,这样本机的硬件故障就不会使整个总线的通信受到影响。
在应用系统工程的现场施工中,由于通信载体是双绞线,它的特性阻抗为120Ω左右,所以线路设计时,在RS485网络传输线的始端和末端应各接1个120Ω的匹配电阻(如图1中的R3),以减少线路上传输信号的反射。
2.6系统的电源选择
对于由单片机结合RS-485组建的测控网络,应优先采用各节点独立供电的方案,同时电源线不能与RS-485信号线共用同一股多芯电缆。
RS-485信号线宜选用截面积0.75mm2以上的双绞线而不是平直线,并且选用线性电源TL750L05比选用开关电源更合适。
TL750L05必须有输出电容,若没有输出电容,则其输出端的电压为锯齿波形状,锯齿波的上升沿随输入电压变化而变化,加输出电容后,可以抑制该现象。
2.7软件的编程
SN75LBC184在接收方式时,A、B为输入,R为输出;在发送方式时,D为输入,A、B为输出。
当传送方向改变一次后,如果输入未变化,则此时输出为随机状态,直至输入状态变化一次,输出状态才确定。
显然,在由发送方式转入接收方式后,如果A、B状态变化前,R为低电平,在第一个数据起始位时,R仍为低电平,CPU认为此时无起始位,直到出现第一个下降沿,CPU才开始接收第一个数据,这将导致接收错误。
由接收方式转入发送方式后,D变化前,若A与B之间为低电压,发送第一个数据起始位时,A与B之间仍为低电压,A、B引脚无起始位,同样会导致发送错误。
克服这种后果的方案是:
主机连续发送两个同步字,同步字要包含多次边沿变化(如55H,0AAH),并发送两次(第一次可能接收错误而忽略),接收端收到同步字后,就可以传送数据了,从而保证正确通信。
为了更可靠地工作,在RS485总线状态切换时需要适当延时,再进行数据的收发。
具体的做法是在数据发送状态下,先将控制端置“1”,延时0.5ms左右的时间,再发送有效的数据,数据发送结束后,再延时0.5ms,将控制端置“0”。
这样的处理会使总线在状态切换时,有一个稳定的工作过程。
单片机通信节点的程序基本上可以分为6个主要部分,分别为预定义部分、初始化部分、主程序部分、设备状态检测部分、帧接收部分和帧发送部分。
预定义部分主要定义了通信中使用的握手信号,用于保存设备信息的缓冲区和保存本节点设备号的变量。
设备状态检测部分应能在程序初始化后,当硬件发生故障时,作出相应的反应。
主程序部分应能接收命令帧,并根据命令的内容作出相应的回应。
为缩短篇幅,这里仅给出主程序部分的代码。
如下所示:
/*主程序流程*/
while
(1){ //主循环
if(recv_cmd(&type)==0)//发生帧错误或帧地址与本机
//地址不符,丢弃当前帧后返回
continue;
switch(type){
case__ACTIVE_:
//主机询问从机是否存在
send_data(__OK_,0,dbuf);//发送应答信息
break;
case__GETDATA_:
len=strlen(dbuf);
send_data(__STATUS_,len,dbuf);//发送状态信息
break;
default:
break; //命令类型错误,丢弃当前帧后返回
}
}
2.8结论
RS-485由于使用了差分电平传输信号,传输距离比RS-232更长,最多可以达到3000m,因此很适合工业环境下的应用。
但与CAN总线等更为先进的现场工业总线相比,其处理错误的能力还稍显逊色,所以在软件部分还需要进行特别的设计,以避免数据错误等情况发生。
另外,系统的数据冗余量较大,对于速度要求高的应用场所不适宜用RS-485总线。
虽然RS-485总线存在一些缺点,但由于它的线路设计简单、价格低廉、控制方便,只要处理好细节,在某些工程应用中仍然能发挥良好的作用。
总之,解决可靠性的关键在于工程开始施工前就要全盘考虑可采取的措施,这样才能从根本上解决问题,而不要等到工程后期再去亡羊补牢。
2、硬件设计
2.1RS-485
RS-485标准接口是单片机系统种常用的一种串行总线之一。
RS-485通信方式RS-485标准是由EIA(电子工业协会)和TIA(通讯工业协会)共同制订和开发的。
RS-485作为一种多点差分数据传输的电气规范,已成为业界最广泛应用的标准通信接口之一。
理论上,RS-485标准最多接入32个设备(受芯片驱动能力的影响),可以工作在半双工或全双工模式下,最大传输距离约为1219米,最大传输速率约为10Mbps[1]。
然而通常RS-485网络采用平衡双绞线作为传输媒体,平衡双绞线的长度与传输速率成反比,只有在20Kbps的传输速率下,才可能达到最大传输距离。
一般15米长的双绞线最大传输速率仅为1Mbps。
不过对于速率要求不是很高的控制系统来说已经足够了。
RS-485采用平衡发送和差分接收方式来实现通信:
在发送端TXD将串行口的TTL电平信号转换成差分信号A、B两路输出,经传输后在接收端将差分信号还原成TTL电平信号。
两条传输线通常使用双绞线,又是差分传输,因此有极强的抗共模干扰的能力,接收灵敏度也相当高。
同时,最大传输速率和最大传输距离也大大提高。
如果以10Kbps速率传输数据时传输距离可达12m,而用100Kbps时传输距离可达1.2km。
如果降低波特率,传输距离还可进一步提高。
另外RS-485实现了多点互连,最多可达256台驱动器和256台接收器,非常便于多器件的连接。
不仅可以实现半双工通信,而且可以实现全双工通信。
2.2多机通原理
在多机通信中,每台从机均分配有一个从机地址,主机与从机之间进行串行通信时,通常是主机先呼叫某从机地址,唤醒被叫从机后,主、从两机之间进行数据交换。
而未被呼叫的从机则继续进行各自的工作。
可是,如果在主机与某被呼叫从机进行数据交换过程中,其他从机如果不采取相应的数据识别技术,则这些从机就会因为串行通信线上有数据传输而时时被打断,影响正常的工作。
利用单片机的串口工作方式2、方式3可以很好解决上述问题。
在多机通信过程中,从机首先要解决的是如何识别主机发送的是地址信息还是数据信息。
当发送的是地址信息时,各从机都响应串口中断,接收主机下发的一帧地址数据。
而当主机发送数据帧时,无关从机可不响应串口中断。
解决的方法是:
当主机发送一帧地址信息时,应保持这帧数据的第9位为1(即TB8=1)。
从机按照工作方式2或工作方式3运行时,将串口寄存器SCON中的控制位SM2置为1,当所接收的一帧数据的第9位为1,所有从机都产生串口中断,接收这一帧地址数据并与各自的从机地址进行比较,以判断主机是否要与本机通信。
接收到的地址数据与从机地址相等达到为被呼叫从机,该从机将串口控制寄存器SCON中的控制位SM2清为0,去接收主机发送来的数据帧(数据帧的第9位为0),此时不管接收到的第9位数据是否为1或0,都要产生串口中断,这就保证了主机与被呼叫从机间的正常数据通信。
数据通信结束后,该从机又重新将串行口控制寄存器SCON中的控制位SM2置为1,为下一次与主机进行通信做好准备。
其他从机则一直在SM2=1下继续自己的工作,不会因为主、从机之间的数据通信而被打断。
多机通信的实现,主要靠主、从机正确地设置与判断多机通信控制位SM2和发送或接收的第9位数据(TB8或RB8)。
当主机给从机发送信息时,要根据发送信息的性质来设置TB8,发送地址信号时,设置TB8=1;发送数据或命令时,设置TB8=0。
当从机的SM2为1时,该从机只接收地址帧(RB8位为1),对数据帧(RB8位为0)将不予理睬。
而当SM2为0时,该从机接收所有发送来的信息。
多机通信过程如下:
使所有从机的SM2置1,处于只接收地址帧的状态(即从机复位);
主机发送一地址帧信息,其中包含8位地址,第9位为地址、数据标志位,第9位置1表示发送的是地址;
从机接收到地址帧后,各自中断CPU,把接收到的地址与本地址作比较;
地址相符的从机,使SM2清零以接收主机随后发来的所有信息,对于地址不相符的从机,仍保持SM2=1状态,对主机随后发送的数据不予理睬,直到主机发送来新的地址帧;
主机发送数据或控制信息给被寻址的从机;
被寻址的从机,因SM2=0,可以接收主机发送过来的所有数据,当从机接收数据结束时,置位SM2,返回接收地址帧状态(复位状态);
当主机改为与另外从机联系时,可再发地址帧寻址其从机,而先前被寻址过的从机恢复SM2=1。
2.3单片机通信功能
单片机
计算机与外界的信息交换称为通信,常用的通信方式有两种:
并行通信和串行通信。
51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。
串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。
51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。
51单片机串行接口的结构如下:
(1)数据缓冲器(SBUF)
接受或发送的数据都要先送到SBUF缓存。
有两个,一个缓存,另一个接受,用同一直接地址99H,发送时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取出。
(2)串行控制寄存器(PCON)
SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下:
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SM0,SM1:
串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。
串行接口工作方式特点见下表
SM0
SM1
工作方式
功能
波特率
0
0
0
8位同步移位寄存器(用于I/O扩展)
fORC/12
0
1
1
10位异步串行通信(UART)
可变(T1溢出率*2SMOD/32)
1
0
2
11位异步串行通信(UART)
fORC/64或fORC/32
1
1
3
11位异步串行通信(UART)
可变(T1溢出率*2SMOD/32)
SM2:
多机通信控制位。
REN:
接收允许控制位。
软件置1允许接收;软件置0禁止接收。
TB8:
方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。
RB9:
在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。
TI:
发送中断标志。
发送完一帧数据后由硬件自动置位,并申请中断。
必须要软件清零后才能继续发送。
RI:
接收中断标志。
接收完一帧数据后由硬件自动置位,并申请中断。
必须要软件清零后才能继续接收。
(3)输入移位寄存器
接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。
(4)波特率发生器
波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。
波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。
(5)电源控制寄存器PCON
其最高位为SMOD。
(6)波特率计算
当定时器T1工作在定时方式的时候,定时器T1溢出率=(T1计数率)/(产生溢出所需机器周期)。
由于是定时方式,T1计数率=fORC/12。
产生溢出所需机器周期数=模M-计数初值X。
2.4MAX485芯片
MAX485是芯片接口的一种类型。
MAX485接口芯片是Maxim公司的一种RS-485芯片。
MAX485、MAX487-MAX491以及MAX1487是用于RS-485与RS-422通信的低功耗收发器,每个器件中都具有一个驱动器和一个接收器。
MAX483、MAX487、MAX488以及MAX489具有限摆率驱动器,可以减小EMI,并降低由不恰当的终端匹配电缆引起的反射,实现最高250kbps的无差错数据传输。
MAX481、MAX485、MAX490、MAX491、MAX1487的驱动器摆率不受限制,可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学位 论文 基于 rs485 接口 数据传输 电路设计