《基于RS485总线的多机通信系统设计.doc》由会员分享,可在线阅读,更多相关《基于RS485总线的多机通信系统设计.doc(37页珍藏版)》请在三一办公上搜索。
1、摘 要在多机通信领域由于单片机具有灵活高效的多机通信功能和价格优势,应用越来越广泛,但由于单片机的收发信号都是TTI 电平,驱动能力和抗干扰性有限,实用中常配合其它总线实现互联,RS-485总线就是其中之一。RS-485总线是平衡差分传输,抗干扰性好,最远可传输4000 m,可互联多达128个单片机,非常适台组成多机通信系统。在多机通信中,最重要的是保证通信有条不紊地进行,因此需要严格的通信协议和完善的通信软件,本文将重点介绍应用于某大型工程的单片机多机通信协议和通信软件的设计方法。本文介绍一种利用单片机本身所提供的串行通讯口,采用自定义串行通信协议,加上总线驱动器如MAX481、MAX483
2、、MAX485、MAX487等组合成简单的RS485通讯网络,完成单片机间的多机通讯。 关键词: 单片机;串行通信;RS485总线: 多机通信协议 AbstractIn computer communication field. Because of the single chip microcomputer has flexible and efficient computer communication function and price advantage, used more and more widely, but because of the single chip microc
3、omputer to send and receive signals are TTI level, drive and anti-interference ability is limited, practical cooperation with other bus realize in Internet, RS-485 bus is one of them. RS-485 bus is a balanced differential transmission, anti-jamming of the good and as far as 4000 m could be transmitt
4、ed, interconnected as many as 128 single chip microcomputer, very comfortable a composition computer communication system. In computer communication, the most important is to ensure that communications in an orderly way, and therefore need to strict communication protocol and perfect communication s
5、oftware, this paper will focus on introduces applied in a large project single-chip computer communication association Put the communication software design method. This paper introduces a microcontroller itself provide the serial communication mouth, use custom serial communication protocol, plus t
6、he bus drives as MAX481, MAX483, MAX485, MAX487 combined into simple RS-485 communication network, finish between the single chip computer communication. Keywords: SCM; Serial communication; RS-485 bus: computer communication agreement目 录第1章 绪论11.1 课题研究背景与意义11.2 单片机多机通信发展1第2章 总体介绍32.1 系统组成32.2 RS-48
7、532.3 多机通信原理4第3章 硬件设计及原理63.1 80C51单片机硬件结构63.2 最小应用系统设计73.2.1 时钟电路73.2.2 复位电路83.3 总线驱动芯片9第4章 系统问题及其解决124.1 通信规则124.2 总线匹配134.3 硬件抗干扰措施134.3.1 RO及DI端配置上拉电阻134.3.2 地线与接地144.3.3 电磁干扰(EMI)问题144.3.4 瞬态保护154.3.5 总线隔离164.4 软件抗干扰措施164.4.1 指令冗余164.4.2 拦截技术164.4.3 软件“看门狗”技术17第5章 软件设计195.1 系统结构195.2 通信协议195.2.1
8、 信息格式195.2.2 定时与重发205.2.3 通信过程205.3 通信软件设计215.3.1 从机通信软件设计215.3.2 主机通信软件设计23第6章 程序设计246.1 主机程序如下:246.2 从机1程序如下:266.3 从机2程序如下:27第7章 系统仿真29结束语31致 谢32参考文献33第1章 绪论1.1 课题研究背景与意义单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块
9、硅片上构成的一个小而完善的计算机系统目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高, 在许多场合采用单机控制已不能满足现场要求,因而必须采用多机
10、控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。串行通信作为单片机之间常用的通信方法之一, 由于其通信编程灵活、硬件简洁并遵循统一的标准, 因此其在工业控制领域得到了广泛的应用。构成较大规模的检测、控制系统,经常要采用多个单片机,组成可以通信的多机系统。Mcs一51系列单片机为实现多机通信联网设计了方便的串行通信接口功能。将多个Mcs一51单片机组成串行总线形式的相互通道,通过写单片机的串行控制方式寄存器,将串行口置成方式2或方式3,就可以实现主机与分机之间的串行通信。这种多机系统结构简单,应用广泛,但它只能实现由主机呼叫分机,然后实现主机与分机之间的全双工串行通信。我们在监控系统
11、中要求既有主机与分机主动通信,又有分机与主机主动通信,这种结构的多机系统就无法满足要求。多机协同工作已是单片机发展的一个重要趋势,目前单片机多机通信的主要方式仍然是主从式多机通信系统。单片机多机通信的目的是实现分布式处理系统,单片机多机通信的方式有很多种,应用前景广阔,非常具有研究意义!1.2 单片机多机通信发展随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、
12、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。 所涉及的市场占有率最高的是MCS51系列,因为世界上很多知名的IC生产厂家都生产51兼容的芯片。生产MCS51系列单片机的厂家如美国AMD公司、ATMEL公司、INTEL公司、WINBOND公司、PHILIPS公司、ISSI公司、TEMIC公司及南韩的LG公司、日本NEC、西门子公司等。到目前为止,MCS51单片机已有数百个品种,还在不断推出功能更强的新产品。现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本
13、上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。单片机的通信领域应用首先从两片单片机之间的通信发展起来,后来有了主从式多机通信并得到了广泛的应用,又出现了以单片机作为下位机与以PC机作为上位机的通信应用,上位机用VB或VC+等面向对象的程序设计语言编写通信收发程序,也得到了广泛的应用。虽然,单片机多机通信已经有较长的研究历史了,但其形式大多是主从式的,很少是平权式的。第2章 总体介绍2.1 系统组成本设计采用MCS-51系列中的80C51单片机。80C51是一款八位单片机,它的易用性和
14、多功能性受到了广大使用者的好评。它是第三代单片机的代表。新一代的单片机的最主要的技术特点是向外部接口电路扩展,以实现Microcomputer完善的控制功能为己任,将一些外部接口功能单元如A/DPWMPCA(可编程计数器阵列)WDT(监视定时器)高速I/O口计数器的捕获/比较逻辑等。这一代单片机中,在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式。Philips公司还为这一代单片机80C51系列8C592单片机引入了具有较强功能的设备间网络系统总线-CAN(Controller Area Network BUS).新一代单片机为外部提供了相当完善
15、的总线结构,为系统的扩展与配置打下了良好的基础。菲利浦公司研发的LPC900系列单片机是一个基于80C51内核的高速、低功耗Flash单片机,主要集成了字节方式的I2C总线、SPI接口、UART通信接口、实时时钟、E2PROM、A/D转换器、ISP/IAP在线编程和远程编程方式等一系列有特色的功能部件。本文中系统构成使用了P89LPC932单片机。P89LPC932是一款单片封装的微控制器,适用于许多要求高集成度、低成本的场合。它采用了高性能的处理器结构,指令执行时间只需要2-4个时钟周期,6倍于标准80C51器件。2.2 RS-485RS485标准接口是单片机系统种常用的一种串行总线之一。R
16、S-485通信方式RS-485标准是由EIA(电子工业协会)和TIA(通讯工业协会)共同制订和开发的。RS-485作为一种多点差分数据传输的电气规范,已成为业界最广泛应用的标准通信接口之一。理论上,RS-485标准最多接入32个设备(受芯片驱动能力的影响),可以工作在半双工或全双工模式下,最大传输距离约为1219米,最大传输速率约为10Mbps1。然而通常RS-485网络采用平衡双绞线作为传输媒体,平衡双绞线的长度与传输速率成反比,只有在20Kbps的传输速率下,才可能达到最大传输距离。一般15米长的双绞线最大传输速率仅为1Mbps。不过对于速率要求不是很高的控制系统来说已经足够了。RS-48
17、5采用平衡发送和差分接收方式来实现通信:在发送端TXD将串行口的TTL电平信号转换成差分信号A、B两路输出,经传输后在接收端将差分信号还原成TTL电平信号。两条传输线通常使用双绞线,又是差分传输,因此有极强的抗共模干扰的能力,接收灵敏度也相当高。同时,最大传输速率和最大传输距离也大大提高。如果以10Kbps速率传输数据时传输距离可达12m,而用100Kbps时传输距离可达1.2km。如果降低波特率,传输距离还可进一步提高。另外RS-485实现了多点互连,最多可达256台驱动器和256台接收器,非常便于多器件的连接。不仅可以实现半双工通信,而且可以实现全双工通信。 2.3 多机通信原理在多机通信
18、中,每台从机均分配有一个从机地址,主机与从机之间进行串行通信时,通常是主机先呼叫某从机地址,唤醒被叫从机后,主、从两机之间进行数据交换。而未被呼叫的从机则继续进行各自的工作。可是,如果在主机与某被呼叫从机进行数据交换过程中,其他从机如果不采取相应的数据识别技术,则这些从机就会因为串行通信线上有数据传输而时时被打断,影响正常的工作。利用单片机的串口工作方式2、方式3可以很好解决上述问题。在多机通信过程中,从机首先要解决的是如何识别主机发送的是地址信息还是数据信息。当发送的是地址信息时,各从机都响应串口中断,接收主机下发的一帧地址数据。而当主机发送数据帧时,无关从机可不响应串口中断。解决的方法是:
19、当主机发送一帧地址信息时,应保持这帧数据的第9位为1。从机按照工作方式2或工作方式3运行时,将串口寄存器SCON中的控制位SM2置为1,当所接收的一帧数据的第9位为1,所以从机产生串口中断,接收这一帧地址数据并与各自的从机地址进行比较,以判断主机是否要与本机通信。接收到的地址数据与从机地址相等达到为被呼叫从机,该从机将串口控制寄存器SCON中的控制位SM2清为0,去接收主机发送来的数据帧(数据帧的第9位为0),此时不管接收到的第9位数据是否为1或0,都要产生串口中断,这就保证了主机与被呼叫从机间的正常数据通信。数据通信结束后,该从机又重新将串行口控制寄存器SCON中的控制位SM2置为1,为下一
20、次与主机进行通信做好准备。其他从机则一直在SM2=1下继续自己的工作,不会因为主、从机之间的数据通信而被打断。多机通信的实现,主要靠主、从机正确地设置与判断多机通信控制位SM2和发送或接收的第9位数据(TB8或RB8)。当主机给从机发送信息时,要根据发送信息的性质来设置TB8,发送地址信号时,设置TB8=1;发送数据或命令时,设置TB8=0。当从机的SM2为1时,该从机只接收地址帧(RB8位为1),对数据帧(RB8位为0)将不予理睬。而当SM2为0时,该从机接收所有发送来的信息。多机通信过程如下:(1) 使所有从机的SM2置1,处于只接收地址帧的状态(即从机复位);(2) 主机发送一地址帧信息
21、,其中包含8位地址,第9位为地址、数据标志位,第9位置1表示发送的是地址;(3) 从机接收到地址帧后,各自中断CPU,把接收到的地址与本地址作比较;(4) 地址相符的从机,使SM2清零以接收主机随后发来的所有信息,对于地址不相符的从机,仍保持SM2=1状态,对主机随后发送的数据不予理睬,直到主机发送来新的地址帧;(5) 主机发送数据或控制信息给被寻址的从机;(6) 被寻址的从机,因SM2=0,可以接收主机发送过来的所有数据,当从机接收数据结束时,置位SM2,返回接收地址帧状态(复位状态);(7) 当主机改为与另外从机联系时,可再发地址帧寻址其从机,而先前被寻址过的从机恢复SM2=1。第3章 硬
22、件设计及原理一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,即单片机内部的功能单元,如ROMRAMI/O口定时/记数器中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统配置,既按照系统功能要求配置外围设备,如键盘显示器打印机A/DD/A转换器等,要设计合适的接口电路。3.1 80C51单片机硬件结构80C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上2。如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。它们
23、都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。微处理器:该单片机中有一个8位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数据,还可以进行位变量的处理。数据存储器:片内为128个字节,片外最多可外扩至64k字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存储器。程序存储器:由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至
24、64k字节。 中断系统:具有5个中断源,2级中断优先权。定时器/计数器:片内有2个16位的定时器/计数器, 具有四种工作方式。串行口:1个全双工的串行口,具有四种工作方式。可用来进行串行通讯,扩展并行I/O口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。 P1口、P2口、P3口、P4口:为4个并行8位I/O口。特殊功能寄存器:共有21个,用于对片内的个功能的部件进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。由上可见,80C51单片机的硬件结构具有功能部件种类全,功能强等特点。特别值得一提的是该单片机CPU中的位处理器,它实际上是
25、一个完整的1位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精美之处。3.2 最小应用系统设计80C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单可靠。用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图3-1 80C51单片机最小系统所示。由于集成度的限制,最小应用系统只能用作一些小型的
26、控制单元。其应用特点:(1) 有可供用户使用的大量I/O口线。(2) 内部存储器容量有限。(3) 应用系统开发具有特殊性。图3-1 80C51单片机最小系统3.2.1 时钟电路80C51虽然有内部振荡电路,但要形成时钟,必须外部附加电路。80C51单片机的时钟产生方法有两种。内部时钟方式和外部时钟方式。本设计采用内部时钟方式,利用芯片内部的振荡电路,在XTAL1、XTAL2引脚上外接定时元件,内部的振荡电路便产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体可在1.2MHZ到12MHZ之间选择。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、
27、振荡电路起振速度有少许影响,CX1、CX2可在20pF到100pF之间取值,但在60pF到70pF时振荡器有较高的频率稳定性。所以本设计中,振荡晶体选择6MHZ,电容选择65pF。时钟电路如图3-2。 图3-2 80C51时钟电路在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠地工作。为了提高温度稳定性,应采用NPO电容。3.2.2 复位电路80C51的复位是由外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电
28、路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。时钟频率用6MHZ时C取22uF,R取1K。除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST端经电阻与电源Vcc接通而实现的。按键手动复位电路见图3-3。时钟频率选用6MHZ时,C取22uF,R2取200,R1取1K。图3-3 80C51复位电路 在这种简单的复位电路中,干扰容易串入复位端,在大多数情况下不会造成单片机错误复位,但会引起内部
29、某些寄存器错误复位。这时可在复位引脚上接一个去耦电容。如果干扰严重,或整个系统干扰严重,引起单片机复位,可采用屏蔽的办法解决,如加屏蔽网或移动位置等。 在实际应用中,为了保证复位电路可靠地工作,常将RC电路接施密特电路后接入单片机复位端,特别适合于应用系统现场干扰大,电压波动大的工作环境,如图3-4所示的抗干扰复位电路。 图3-4 抗干扰复位电路3.3 总线驱动芯片 MAX481、MAX483、MAX485、MAX487-MAX491以及MAX1487是用于RS-485与RS-422通信的低功耗收发器,每个器件中都具有一个驱动器和一个接收器。MAX483、MAX487、MAX488以及MAX4
30、89具有限摆率驱动器,可以减小EMI,并降低由不恰当的终端匹配电缆引起的反射,实现最高250kbps 的无差错数据传输。MAX481、MAX485、MAX490、MAX491、MAX1487的驱动器摆率不受限制,可以实现最高2.5Mbps的传输速率。这些收发器在驱动器禁用的空载或满载状态下,吸取的电源电流在120(A 至500(A 之间。另外,MAX481、MAX483与MAX487具有低电流关断模式, 仅消耗0.1A。所有器件都工作在5V单电源下。驱动器具有短路电流限制,并可以通过热关断电路将驱动器输出置为高阻状态,防止过度的功率损耗。接收器输入具有失效保护特性,当输入开路时,可以确保逻辑高
31、电平输出。MAX487与MAX1487具有四分之一单位负载的接收器输入阻抗, 使得总线上最多可以有1 2 8 个MAX487/MAX1487收发器。使用MAX488-MAX491可以实现全双工通信,而MAX481、MAX483、MAX485、MAX487与MAX1487则为半双工应用设计。MAX481/MAX483/MAX485/MAX487-MAX491以及MAX1487是用于RS-485与RS-422通信的低功耗收发器。MAX481、MAX485、MAX490、MAX491以及MAX1487能够以最高2.5Mbps 的数据速率发送并接收数据;而MAX483、MAX487、MAX488以及M
32、AX489则用于最高250kbps的数据速率。MAX488-MAX491是全双工收发器,MAX481、MAX483、MAX485、MAX487以及MAX1487是半双工收发器。另外,MAX481、MAX483、MAX485、MAX487、MAX489、MAX491以及MAX1487中包含驱动器使能(DE)与接收器使能(RE)控制引脚,被禁用时,驱动器或接收器输出为高阻态。 与标准RS-485 驱动器( 最多32 个收发器) 的单位负载( 12k输入阻抗) 相比,MAX487与MAX1487具有48k输入电阻,1/4单位负载的接收器输入阻抗,在一条总线上允许最多挂接128个收发器。MAX487/
33、MAX1487与其他RS-485收发器的任意组合可以允许32个收发器或更少的收发器连接在同一条总线上。MAX481/MAX483/MAX485与MAX488-MAX491具有标准的12k接收器输入阻抗。常用的RS485总线驱动芯片有MAX485、MAX3080、MAX3088、SN75176,MAX485、MAX3080、MAX3088芯片都有一个发送器和一个接收器,非常适合作为RS485总线驱动芯片,其中MAX3080、MAX3088可以在一条通讯线上连接256只,MAX3088达到10Mbps的通讯速率,下面以MAX485为例介绍其逻辑表。 MAX485及其逻辑如图3-5所示。图3-5 M
34、AX485芯片RS485方式构成的多机通信原理在由单片机构成的多机串行通信系统中,一般采用主从式结构:从机不主动发送命令或数据,一切都由主机控制。并且在一个多机通信系统中,只有一台单机作为主机,各台从机之间不能相互通讯,即使有信息交换也必须通过主机转发。采用RS485构成的多机通信原理框图,如图3-6所示。图3-6 MAX485典型半双工RS-485网络第4章 系统问题及其解决4.1 通信规则 由于MAX485通讯是一种半双工通讯,发送和接收共用同一物理信道。在任意时刻只允许一台单机处于发送状态。因此要求应答的单机必须在侦听到总线上呼叫信号已经发送完毕,并且没有其它单机发出应答信号的情况下,才
35、能应答。半双工通讯对主机和从机的发送和接收时序有严格的要求。如果在时序上配合不好,就会发生总线冲突,使整个系统的通讯瘫痪,无法正常工作。要做到总线上的设备在时序上的严格配合,必须要遵从以下几项原则: (1) 复位时,主从机都应该处于接收状态。 MAX485芯片的发送和接收功能转换是由芯片的 RE* ,DE端控制的。RE*=1,DE=1时,MAX485发送状态;RE*=0,DE=0时,MAX485处于接收状态。一般使用单片机的一根口线连接RE*,DE端。在上电复位时,由于硬件电路稳定需要一定的时间,并且单片机各端口复位后处于高电平状态,这样就会使总线上各个分机处于发送状态,加上上电时各电路的不稳
36、定,可能向总线发送信息。因此,如果用一根口线作发送和接收控制信号,应该将口线反向后接入MAX485的控制端,使上电时MAX485处于接收状态。 另外,在主从机软件上也应附加若干处理措施,如:上电时或正式通讯之前,对串行口做几次空操作,清除端口的非法数据和命令。 (2) 控制端RE*,DE的信号的有效脉宽应该大于发送或接收一帧信号的宽度。 在全双工通讯过程中,发送和接收信号分别在不同的物理链路上传输,发送端始终为发送端,接收端始终为接收端,不存在发送、接收控制信号切换问题。在RS485半双工通讯中,由于MAX485的发送和接收都由同一器件完成,并且发送和接收使用同一物理链路,必须对控制信号进行切
37、换。控制信号何时为高电平,何时为低电平,一般以单片机的TXC(发送完成标记),RXC(接收完成标记)信号作参考。 发送时,检测TXC是否建立起来,当TXC为高电平后关闭发送功能转为接收功能; 接收时,检测RXC是否建立起来,当RXC为高电平后,接收完毕,又可以转为发送。 在理论上虽然行得通,但在实际联调中却出现传输数据时对时错的现象。根据查证有关资料,并借助示波器反复测试,才发现一个值得注意的问题,我们可以查看单片机的时序: 单片机在串行口发送数据时,只要将8位数据位传送完毕,TXC标志即建立,但此时应发送的第九位数据位(若发送地址帧时)和停止位尚未发出。如果在这是关闭发送控制,势必造成发送帧
38、数据不完整。如果单片机多机通讯采用较高的波特率,几条操作指令的延时就可能超过2位(或1位)数据的发送时间,问题或许不会出现。但是如果采用较低波特率,如9600,发送一位数据需104s左右,单靠几条操作指令的延时远远不够,问题就明显地暴露出来。接收数据时也同样如此,单片机在接收完8个数据位后就建立起RXC信号,但此时还未接收到第九位数据位(若接收地址帧时)和停止位。所以,接收端必须延时大于2位数据位的时间(1位数据位时间=1/波特率),再作应答,否则会发生总线冲突。 (3) 总线上所连接的各单机的发送控制信号在时序上完全隔开。 为了保证发送和接收信号的完整和正确,避免总线上信号的碰撞,对总线的使
39、用权必须进行分配才能避免竞争,连接到总线上的单机,其发送控制信号在时间上要完全隔离。 总之,发送和接收控制信号应该足够宽,以保证完整地接收一帧数据,任意两个单机的发送控制信号在时间上完全分开,避免总线争端。 4.2 总线匹配 总线匹配有两种方法,一种是加匹配电阻,位于总线两端的差分端口VA与VB之间应跨接120匹配电阻,以减少由于不匹配而引起的反射、吸收噪声,有效地抑制了噪声干扰。但匹配电阻要消耗较大电流,不适用于功耗限制严格的系统。 另外一种比较省电的匹配方案是RC 匹配利用一只电容C 隔断直流成分,可以节省大部分功率,但电容C的取值是个难点,需要在功耗和匹配质量间进行折衷。除上述两种外还有
40、一种采用二极管的匹配方案,这种方案虽未实现真正的匹配,但它利用二极管的钳位作用,迅速削弱反射信号达到改善信号质量的目的,节能效果显著。 4.3 硬件抗干扰措施4.3.1 RO及DI端配置上拉电阻 异步通信数据以字节的方式传送,在每一个字节传送之前,先要通过一个低电平起始位实现握手。为防止干扰信号误触发RO(接收器输出)产生负跳变,使接收端MCU进入接收状态,建议RO外接10k上拉电阻。 保证系统上电时的RS-485芯片处于接收输入状态 。对于收发控制端DE建议采用MCU引脚通过反相器进行控制,不宜采用MCU引脚直接进行控制,以防止MCU上电时对总线的干扰。 4.3.2 地线与接地 电子系统的接
41、地是一个非常关键而又常常被忽视的问题,接地处理不当经常会导致不能稳定工作甚至危及系统安全。对于RS-485网络来讲也是一样,没有一个合理的接地系统可能会使系统的可靠性大打折扣,尤其是在工作环境比较恶劣的情况下,对于接地的要求更为严格。有关RS-485网络的接地问题很少有资料提及,在设计者中也存在着很多误区,致使通信可靠性降低、接口损坏率较高。一个典型的错误观点就是认为RS-485通信链路不需要信号地,而只是简单地用一对双绞线将各个接口的A、B端连接起来。这种处理方法在某些情况下也可以工作,但给系统埋下了隐患,主要有以下两方面的问题: 共模干扰问题:的确,RS-485接口采用差分方式传输信号,并
42、不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。但应该注意的是,收发器只有在共模电压不超出一定范围(-7V至+12V)的条件下才能正常工作。当共模电压超出此范围就会影响通信的可靠,直至损坏接口。当发送器A向接收器B发送数据时,发送器A的输出共模电压为VOS,由于两个系统具有各自独立的接地系统,存在着地电位差VGPD。那么,接收器输入端的共模电压就会达到VCM=VOS+VGPD。RS-485标准规定VOS3V,但VGPD可能会有很大幅度(十几伏甚至数十伏),并可能伴有强干扰信号,致使接收器共模输入VCM超出正常范围,并在信号线上产生干扰电流,轻则影响正常通信,重则损坏接口
43、。 4.3.3 电磁干扰(EMI)问题 驱动器输出信号中的共模部分需要一个返回通路,如果没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。因此,尽管是差分传输,对于RS-485网络来讲,一条低阻的信号地还是必不可少的。一条低阻的信号地将两个接口的工作地连接起来,使共模干扰电压VGPD被短路。这条信号地可以是额外的一对线(非屏蔽双绞线)、或者是屏蔽双绞线的屏蔽层。值得注意的是,这种做法仅对高阻型共模干扰有效,由于干扰源内阻大,短接后不会形成很大的接地环路电流,对于通信不会有很大影响。当共模干扰源内阻较低时,会在接地线上形成较大的环路电流,影响
44、正常通信。笔者认为,可以采取以下三种措施: A、若干扰源内阻不是非常小,可以考虑在接地线上加限流电阻限制干扰电流。接地电阻的增加可能会使共模电压升高,但只要控制在适当的范围内就不会影响正常通信; B、采用浮地技术,隔断接地环路。当共模干扰内阻很小时上述方法已不能奏效,此时可以考虑将引入干扰的节点(例如处于恶劣的工作环境的现场仪表)浮置起来(也就是系统的电路地与机壳或大地隔离),这样就隔断了接地环路,不会形成很大的环路电流; C、采用隔离接口。有些情况下,出于安全或其他方面的考虑,电路地必须与机壳或大地相连,不能悬浮,这时可以采用隔离接口来隔断接地回路,但是仍然应该有一条地线将隔离侧的公共端与其
45、它接口的工作地相连。 4.3.4 瞬态保护 前面提到的接地措施只对低频率的共模干扰有保护作用,对于频率很高的瞬态干扰就无能为力了。因为引线电感的作用,对于高频瞬态干扰来讲,接地线实际等同于开路。这样的瞬态干扰可能会有成百上千伏的电压,但持续时间很短。在切换大功率感性负载(电机、变压器、继电器等)、闪电等过程中都会产生幅度很高的瞬态干扰,如果不加以适当防护就会损坏接口。对于这种瞬态干扰可以采用隔离或旁路的方法加以防护。 隔离保护方案:这种方案实际上将瞬态高压转移到隔离接口中的电隔离层上,由于隔离层的高绝缘电阻,不会产生损害性的浪涌电流,起到保护接口的作用。通常采用高频变压器、光耦等元件实现接口的
46、电气隔离,已有器件厂商将所有这些元件集成在一片IC中,使用起来非常简便,如Maxim公司的MAX1480/MAX1490,隔离电压可以到2500V。这种方案的优点是可以承受高电压、持续时间较长的瞬态干扰,实现起来也比较容易,缺点是成本较高。 旁路保护方案:这种方案利用瞬态抑制元件(如TVS、MOV、气体放电管等)将危害性的瞬态能量旁路到大地,优点是成本较低,缺点是保护能力有限,只能保护一定能量以内的瞬态干扰,持续时间不能很长,而且需要有一条良好的连接大地的通道,实现起来比较困难。 实际应用中可以将二者结合起来灵活运用。隔离接口对大幅度瞬态干扰进行隔离,而旁路元件保护隔离接口不被过高的瞬态电压击
47、穿。 4.3.5 总线隔离 RS-485总线为并接式二线制接口,一旦有一只芯片故障就可能将总线“拉死”,因此对其二线口VA、VB与总线之间应加以隔离。通常在VA、VB与总线之间各串接一只410的PTC电阻,同时与地之间各跨接5V的TVS二极管,以消除线路浪涌干扰。此外应该合理选用芯片。例如,对外置设备为防止强电磁(雷电)冲击,建议选用防雷击芯片。 4.4 软件抗干扰措施4.4.1 指令冗余 CPU取指令过程是先取操作码,再取操作数。当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错。若“飞” 到了三字节指令,出错机率更大。 在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的N