分类: 服务器与存储
2008-06-06 04:51:52
单片机以其高可靠性和高性价比在工业控制、数据采集系统、智能化仪表、办公自动化等诸多领域得到极为广泛的应用。在测控系统中,有时对单片机系统的可靠性有非常严格的要求。除了在系统设计、生产中采用多种措施以提高其可靠性之外,双机热备份是一种非常有效且经常被采用的方法。在双机热备份系统中,两个单片机必须保持工作状态的完全一致,需要随时进行数据交换。通常可以使用多单片机信息共享技术来实现两个单片机的数据交换,如信箱存储系统、共享存储器等,但这些方法实现复杂,硬件成本高1。大多数单片机都提供通用串行收发器(UART),在单片机系统不与其他设备(如上位机)进行通信的情况下,使用UART是非常方便的,但不幸的是绝大多数情况下UART已被使用。当然也可以扩展串行和并行通信接口,但硬件成本又会增加。因此,在满足系统性能的条件下,充分利用单片机本身的资源,最大程度地简化内部通信的接口设计非常值得研究。在单片机家族的众多成员中,MCS-51单片机以其优越的性能、成熟的技术、高可靠性和高性价比,在工业测控领域中有着广泛应用,本文即以MCS-51单片机为例 给出两种双机通信的简化接口设计。 |
1 通过单片机的P0口进行内部通信 这种通信接口可以在只使用一片74LS245的情况下获得较高的传输速率。图1给出了这种接口的简单示意图。总线收发器74LS245接在两个单片机的P0口之间,作为内部数据传输的通道。P0口既是分时的地址/数据总线,又可作为I/O口使用。由于P0口为开路输出,作为I/O口应用时应加上拉电阻,为了简洁,图1中未画。总线收发器的使能端和方向控制端DIR均受逻辑控制单元控制。逻辑控制单元的输入是P1口的三根口线,和指示单片机运行情况的两个信号U1ERR和U2ERR。为方便起见,先将逻辑控制单元的逻辑方程写出。 U2P12=U1P11 U1ERR U1P12=U2P11 U2ERR E=(U1P13+U2P13) U1ERR U2ERR DIR=U1P13 U2P13 U1ERR和U2ERR指示单片机的运行状态,通常反映ALE信号的有无。这里约定U1ERR和U2ERR为0时表示单片机正常运行(即有ALE信号)。U1P12、U1P11、U2P12、U2P11用来进行单片机之间的联络,约定高电平有效。任一单片机发生故障,则其P1.1的信号无法传到另一单片机的P1.2端。DIR受两个单片机的P1.3控制,决定数据是由单片机1送往单片机2还是由单片机2送往单片机1。也受两个单片机的P1.3控制,但同时受U1ERR和U2ERR控制,任一单片机发生故障,则为1 74LS245被关闭。 1.1 工作原理 以单片机1请求传送数据给单片机2为例,其工作过程如下: 1 单片机1将其P1.1置1,表示请求发送数据,同时将其P1.3置1 2 单片机2检测到其P1.2口的高电平后,将其P1.1置为高电平,表示响应数据发送请求,同时也将其P1.3置1。这时74LS245的为0 DIR为1,数据可以从单片机1的P0口送往单片机2的P0口 3 单片机1将要传送的数据送上P0口,并将其P1.1置为0,表示一字节数据发出 4 单片机2检测到其P1.2的低电平后,将数据从P0口读入,并将其P1.1置为0,表示数据已被接收 5 单片机1检测到其P1.2的低电平后 可以开始下一字节的传送或结束传送。 数据由单片机2送往单片机1的过程与上类似,只不过单片机1在接收到数据传送请求后是把其P1.3置为低电平 以使74LS245的DIR为低电平 数据传送方向与上相反。与图3给出的电路相比,这种设计方式有着更高的传输速率。 1.2 接口电路说明 图1所示电路是为叙述方便而简化的,应用中可以根据实际情况重新设计。因此,上述电路及方程都不是唯一的。 |
但此类电路需共同遵循的原则是: (1)使用总线收发器以进行数据的并行双向传送; (2)总线收发器的使能端和方向控制端受逻辑控制电路的控制,且能在不进行数据传送和单片机故障时,使总线收发器处于关闭状态; (3)两个单片机应有联络信号,以决定什么时候进行内部数据通信。 按照以上原则,实际电路是多种多样的。控制信号除了可以使用P1口的口线外,P3口未用的口线以及P2口未用的高位地址线也可以使用。例如,可以使用P3口的一根口线输出联络信号,而联络信号的输入接到单片机的外部中断输入端,这样单片机以中断的方式响应内部数据传送请求,可以进一步提高传送速度。 逻辑控制单元可以由门电路构成,但许多情况下都使用可编程逻辑器件如GAL降低整个系统的成本,提高可靠性。 |
图2是笔者设计的接口电路在数据采集系统中的应用实例 为简洁 未画出P0口所需的上拉电阻 。在这个系统中 P1、P3口全部被占用,且扩展了2K字节的外部静态RAM,系统需要对16路数字输入量进行采集。因此,逻辑控制使用P2口的高位地址线A13A12A11 A12A11为00~10时选通存储器和输入通道。逻辑控制单元使用了一片GAL16V8。GAL16V8兼做地址译码器,实现对静态RAM和输入通道的选通(图中只画出了与内部通信相关的输出)。GAL16V8的逻辑方程中与内部通信相关的六个方程如下(按FAST-MAP格式) 2: |
2 通过单片机的UART进行内部通信 当单片机的UART被用于与其他设备 如上位机 进行通信时 可以分时用于内部通信。这种设计方法硬件电路最为简单。为提高通信距离和防止干扰,单片机系统与其他设备的通信多使用RS-485通信。下面以此为例介绍内部通信接口的设计。图3直接示出了这种接口的一个电路实例。 |
2.1 工作原理 两个单片机与其他设备的通信通过RS-485收发器SN75174进行,图3中U1ERR和U2ERR的含义同图2。IT1、IT2是内部通信联络信号,TE1、RE1分别是单片机1控制外部RS-485通信的发送和接收信号,TE2、RE2与此类似,皆使用P3口的I/O口线。其内部通信接口由一片GAL16V8实现。GAL16V8完成以下功能: ①为两个单片机提供三态的内部通信接口,当其中一个单片机出现故障时即阻塞内部通信接口; |
参考文献 1 何立民.单片机应用文集. 北京:北京航空航天大学出版社 1993 2 张有志.可编程逻辑器件PLD原理与应用.北京:中国铁道出版社,1996 3 高传善.接口与通信.上海:复旦大学出版社,1989 4 李 华.MCS-51系列单片机使用接口技术.北京:北京航空航天大学出版社 1999 |