分类: 服务器与存储
2008-06-07 18:50:52
关键词? 测控系统 双机热备份 单片机系统 通信
单片机以其高可靠性和高性价比在工业控制、数据采集系统、智能化仪表、办公自动化等诸多领域得到极为广泛的应用。在测控系统中,有时对单片机系统的可靠性有非常严格的要求。除了在系统设计、生产中采用多种措施以提高其可靠性之外,双机热备份是一种非常有效且经常被采用的方法。在双机热备份系统中,两个单片机必须保持工作状态的完全一致,需要随时进行数据交换。通常可以使用多单片机信息共享技术来实现两个单片机的数据交换,如信箱存储系统、共享存储器等,但这些方法实现复杂,硬件成本高1。大多数单片机都提供通用串行收发器(UART),在单片机系统不与其他设备(如上位机)进行通信的情况下,使用UART是非常方便的,但不幸的是绝大多数情况下UART已被使用。当然也可以扩展串行和并行通信接口,但硬件成本又会增加。因此,在满足系统性能的条件下,充分利用单片机本身的资源,最大程度地简化内部通信的接口设计非常值得研究。在单片机家族的众多成员中,MCS-51单片机以其优越的性能、成熟的技术、高可靠性和高性价比,在工业测控领域中有着广泛应用,本文即以MCS-51单片机为例?给出两种双机通信的简化接口设计。
1 通过单片机的P0口进行内部通信
这种通信接口可以在只使用一片的情况下获得较高的传输速率。图1给出了这种接口的简单示意图。总线收发器接在两个单片机的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?被关闭。
1.1 工作原理
以单片机1请求传送数据给单片机2为例,其工作过程如下:
?1?单片机1将其P1.1置1,表示请求发送数据,同时将其P1.3置1?
?2?单片机2检测到其P1.2口的高电平后,将其P1.1置为高电平,表示响应数据发送请求,同时也将其P1.3置1。这时的为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置为低电平?以使的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时选通存储器和输入通道。逻辑控制单元使用了一片。兼做地址译码器,实现对静态RAM和输入通道的选通(图中只画出了与内部通信相关的输出)。的逻辑方程中与内部通信相关的六个方程如下(按FAST-MAP格式)?2:
U1P27=U2P26
U1P27.OE=/U2ERR
U2P27=U1P26
U2P27.OE=/U1ERR
245E=U1A12 U1A11 U2A12 U2A11
245DIR=U1A13 U2A13
由上述逻辑方程可以看出,只有两个单片机成功地进行联络后才能打开总线收发器进行数据传送。当一个单片机出现故障后其联络信号被GAL置为高阻状态?另一单片机不能与之联络,总线收发器处于关闭状态?不会影响正常单片机的工作。
2 通过单片机的UART进行内部通信
当单片机的UART被用于与其他设备?如上位机?进行通信时?可以分时用于内部通信。这种设计方法硬件电路最为简单。为提高通信距离和防止干扰,单片机系统与其他设备的通信多使用通信。下面以此为例介绍内部通信接口的设计。图3直接示出了这种接口的一个电路实例。 2.1 工作原理
两个单片机与其他设备的通信通过收发器进行,图3中U1ERR和U2ERR的含义同图2。IT1、IT2是内部通信联络信号,TE1、RE1分别是单片机1控制外部通信的发送和接收信号,TE2、RE2与此类似,皆使用P3口的I/O口线。其内部通信接口由一片实现。完成以下功能:
①为两个单片机提供三态的内部通信接口,当其中一个单片机出现故障时即阻塞内部通信接口;
②为两个单片机提供联络信号,当其中之一要求进行通信时,及时通知另一个单片机;
③对两个单片机的对外通信接口进行控制,内部通信时将单片机与总线隔离。
为叙述方便,现将GAL的逻辑方程中与此相关的部分以FAST-MAP的格式给出:
RXD1=TXD2
RXD1.OE=IT1 IT2
RXD2=TXD1
RXD2.OE=IT1 IT2
IT1=/TE2 RE2 /U2ERR
IT2=TE1 RE1 /U1ERR
TE10=TE1 /U1ERR
TE20=TE2 /U2ERR
假设单片机1发起与单片机2的内部通信?其工作过程如下?
①单片机1禁止对外数据收发。即使得TE1为低电平?RE1为高电平,从而使得IT2为高电平,向单片机2提出内部通信请求;
②单片机2在检测到单片机1的内部通信请求后,禁止对外数据收发,使得TE2为低电平?RE2为高电平,从而使得IT1为高电平,响应单片机1的内部通信请求,这时,两个单片机的串行数据收发通过GAL互连,内部通信接口打开;
③单片机1在检测到IT1为高电平后,通过串行口发送数据;
④通信完成后,两个单片机打开对外的数据收或数据发,从而使得内部通信接口处于高阻状态。
从上述方程和通信过程可以看出,内部通信和外部通信是分时进行的,且互相隔离,互不干扰。当一个单片机出现故障后,由于使用了U1ERR和U2ERR信号,相应的内部通信联络信号总是无效的,对外数据发信号也是无效的,从而使得内部通信接口总是处于高阻状态,且不会发送数据到总线。因此不会影响另一个单片机的对外通信和与故障单片机相连的总线。
2.2 接口电路说明
可编程逻辑器件在单片机系统中的应用是系统设计的发展方向,本文以GAL为例介绍接口的设计,但只要能完成上述的逻辑功能,也可以使用其他器件。而且,单片机与其他设备的通信也不一定是通信,但电路的设计与此类似。这类接口电路都需解决的问题是?
①内部通信应在单片机与其他设备通信的间隙进行,避免数据丢失;
②内部通信与外部通信的信号应良好隔离,防止相互干扰;
③当一个单片机出现故障时,应当自动与另一个单片机隔离,防止通过内部通信接口影响另一个单片机的对外通信。
上述第一个问题可以根据通信协议由软件解决,后两个问题由硬件电路解决。
本文给出了内部通信接口的两种简化设计方案,同时给出了电路实例。设计中GAL不是专为接口电路而设的,可以与其他逻辑功能合并使用。两种通信接口在笔者设计的多个单片机系统中得到了应用,实际应用证明达到了简化设计、降低成本、降低系统复杂度的目标,具有一定的实用价值。
参考文献
1 何立民.单片机应用文集. 北京:北京航空航天大学出版社?1993
2 张有志.可编程逻辑器件PLD原理与应用.北京:中国铁道出版社,1996
3 高传善.接口与通信.上海:复旦大学出版社,1989
4 李 华.MCS-51系列单片机使用接口技术.北京:北京航空航天大学出版社?1999