基于单片机的多机通信系统内容摘要:

,当访问外部程序存储器, ALE 会跳过一个脉冲。 如果单片机是 EPROM,在编程其间, 将用于输入编程脉冲。 Pin29: 当访问外部程序存储器时,此脚输出负脉冲选通信号, PC 的 16位地址数据将出现在 P0 和 P2 口上,外部程序存储器则把指令数据放到 P0 口上,由 CPU读入并执行。 Pin31:EA/Vpp 程序存储器的 内外部选通线, 8051 和 8751 单片机,内置有 4kB的程序存储器,当 EA 为高电平并且程序地址小于 4kb 时,读取内部程序存储器指令数据,而超过 4kB 地址则读取外部指令数据。 如 EA 为低电平,则不管地址大小,一律读取外部程序存储器指令。 显然,对内部无程序存储器的 8031,EA 端必须接地。 RS232 与 RS485 通讯芯片 RS232 接口标准出现较早,难免有不足之处,主要有以下四点: 第一点, 接口的信号电平值较高,易损坏接口电路的芯片,又因为与 TTL 电平不兼容故需使用电平转换电路方能与 TTL电路连接。 第二点, 传输速率较低,在异步传输时,波特率为 20Kbps。 第三点, 接口使用一根信号线和一根信号返回线而构成共地的传输形式, 这种共地传输容易产生共模干扰,所以抗噪声干扰性 8 弱。 第四点, 传输距离有限,最大传输距离标准值为 50 英尺,实际上也只能 用在 50 米左右。 针对 RS232 的不足,于是就不断出现了一些新的接口标准, RS485 就是其中之一,它具有以下特点: 第一点, RS485 的电气特性:逻辑 “1”以两线间的电压差为 +( 2~6) V 表示;逻辑 “0”以两线间的电压差为 ( 2~6) V表示。 接口信号电平 比 RS232C 降低了,就不易损坏接口电路的芯片, 且该电平与 TTL电平兼容,可方便与 TTL 电路连接。 第二点, RS485 的数据最高传输速率为 10Mbps。 第三点, RS485 接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。 第四点, RS485 接口的最大传输距离标准值为 4000 英尺,实际上可达 3000米,另外 RS232C 接口在总线上只允许连接 1 个收发器, 即单站能力。 而 RS485接口在总线上是允许连接多达 128 个收发器。 即具有多站能力 ,这样用户可以利用单一的 RS485 接口方便地建立起设备网络。 综合的来说, 因 RS485 接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。 因为 RS485 接口组成的半双工网络,一般只需二根连线,所以 RS485 接口均采用屏蔽双绞线传输。 RS485 接口连接器采用 DB9 的 9 芯插头座,与智能终端 RS485 接口采用 DB9(孔),与键盘连接的键盘接口 RS485 采用 DB9(针)。 9 3 单片机 RS- 485多机通讯 简介 编写完程序后即可使用汇编软件对程序进行 编译了,本设计所使用的编译软件是 Keil51,其步骤如下: RS- 485 串行总线接口标准以差分平衡方式传输信号,具有很强的抗共模干扰的能力,允许一对双绞线上一个发送器驱动多个负载设备。 工业现场控制系统中一般都采用该总线标准进行数据传输,利用单片机本身所提供的简单串行接口,加上总线驱动器如 SN75176 等组合成简单的 RS- 485 通讯网络。 本文所述的方法已成功地应用于工程项目,一台主机与 60 台从机通讯,通讯波特率达64KBPS。 总线驱动器芯片 SN75176, 常用的 RS- 485 总线驱动芯片有 SN75174,SN75175, SN75176。 SN75176 芯片有一个发送器和一个接收器,非常适合作为RS- 485 总线驱动芯片。 SN75176 及其逻辑如图 (31)所示。 图 SN75176 芯片及其逻辑关系 RS- 485 方式构成的多机通信原理 在由单片机构成的多机串行通信系统中,一般采用主从式结构:从机不主动发送命令或数据,一切都由主机控制。 并且在一个多机通信系统中,只有一台单机作为主机,各台从机之间不能相互通讯,即使有信息交换也必须通过主机转发。 采用 RS- 485 构成的多机通讯原理框图,如图 所示。 10 图 采用 RS- 485 构成的多机通讯原理框图 在总线末端接一个匹配电阻,吸收总线上的反射信号,保证正常传输信号干净、无毛刺。 匹配电阻的取值应该与总线的特性阻抗相当。 当总线上没有信号传输时,总线处于悬浮状态,容易受干扰信号的影响。 将总线上差分信号的正端 A+和 +5 电源间接一个 10K 的电阻;正端 A+和负端 B间接一个 10K 的电阻;负端 B和地间接一个 10K 的电阻,形成一个电阻网络。 当总线上没有信号传输时,正端 A+的电平大约为 ,负端 B的电平大约为 ,即使有干扰信号,却很难产生串行通信的 起始信号 0,从而增加了总线抗干扰的能力。 通信规则 由于 RS- 485 通讯是一种半双工通讯,发送和接收共用同一物理信道。 在任意时刻只允许一台单机处于发送状态。 因此要求应答的单机必须在侦听到总线上呼叫信号已经发送完毕,并且没有其它单机发出应答信号的情况下,才能应答。 半双工通讯对主机和从机的发送和接收时序有严格的要求。 如果在时序上配合不好,就会发生总线冲突,使整个系统的通讯瘫痪,无法正常工作。 要做到总线上的设备在时序上的严格配合,必须要遵从以下几项原则: ( 1) 复位时,主从机都应该处于接收状态。 11 SN75176芯片的发送和接收功能转换是由芯片的 RE* , DE端控制的。 RE*=1,DE=1 时, SN75176 发送状态; RE*=0, DE=0 时, SN75176 处于接收状态。 一般使用单片机的一根口线连接 RE*, DE 端。 在上电复位时,由于硬件电路稳定需要一定的时间,并且单片机各端口复位后处于高电平状态,这样就会使总线上各个分机处于发送状态,加上上电时各电路的不稳定,可能向总线发送信息。 因此,如果用一根口线作发送和接收控制信号,应该将口线反向后接入 SN75176 的控制端,使上电时 SN75176 处于接收状态。 另外,在 主从机软件上也应附加若干处理措施,如:上电时或正式通讯之前,对串行口做几次空操作,清除端口的非法数据和命令。 ( 2) 控制端 RE*, DE 的信号的有效脉宽应该大于发送或接收一帧信号的宽度。 在 RS- 232, RS- 422 等全双工通讯过程中,发送和接收信号分别在不同的物理链路上传输,发送端始终为发送端,接收端始终为接收端,不存在发送、接收控制信号切换问题。 在 RS- 485 半双工通讯中,由于 SN75176 的发送和接收都由同一器件完成,并且发送和接收使用同一物理链路,必须对控制信号进行切换。 控制信号何时为高电平,何时为 低电平,一般以单片机的 TI, RI 信号作参考。 发送时,检测 TI 是否建立起来,当 TI 为高电平后关闭发送功能转为接收功能;接收时,检测 RI 是否建立起来,当 RI 为高电平后,接收完毕,又可以转为发送。 在理论上虽然行得通,但在实际联调中却出现传输数据时对时错的现象。 根据查证有关资料,并在联调中借助存储示波器反复测试,才发现一个值得注意的问题,我们可以查看单片机的时序: 12 图 串行口模式 3 时序图 单片机在串行口发送数据时,只要将 8 位数据位传送完毕, TI标志即建立,但此时应发送的第九位数据位(若发 送地址帧时)和停止位尚未发出。 如果在这是关闭发送控制,势必造成发送帧数据不完整。 如果单片机多机通讯采用较高的波特率,几条操作指令的延时就可能超过 2 位(或 1 位)数据的发送时间,问题或许不会出现。 但是如果采用较低波特率,如 9600,发送一位数据需 100μ s 左右,单靠几条操作指令的延时远远不够,问题就明显地暴露出来。 接收数据时也同样如此,单片机在接收完 8 个数据位后就建立起 RI 信号,但此时还未接收到第九位数据位(若接收地址帧时)和停止位。 所以,接收端必须延时大于 2 位数据位的时间( 1 位数据位时间 =1/波特率),再作应 答,否则会发生总线冲突。 ( 3)总线上所连接的各单机的发送控制信号在时序上完全隔开。 为了保证发送和接收信号的完整和正确,避免总线上信号的碰撞,对总线的使用权必须进行分配才能避免竞争,连接到总线上的单机,其发送控制信号在时间上要完全隔离。 总之,发送和接收控制信号应该足够宽,以保证完整地接收一帧数据,任意两个单机的发送控制信号。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。