《電子技術應用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 雙機熱備單片機系統(tǒng)內(nèi)部通信接口的簡化設計

雙機熱備單片機系統(tǒng)內(nèi)部通信接口的簡化設計

2008-12-22
作者:鄭來波

  摘? 要: 分析了工業(yè)測控系統(tǒng)中雙機熱備單片機系統(tǒng)" title="單片機系統(tǒng)">單片機系統(tǒng)內(nèi)部通信的特點,,以簡化設計,、降低成本,、降低系統(tǒng)復雜度為目標,給出了內(nèi)部通信接口" title="通信接口">通信接口的兩種設計方案,。

  關鍵詞: 測控系統(tǒng)? 雙機熱備份? 單片機系統(tǒng)? 通信

?

  單片機以其高可靠性和高性價比在工業(yè)控制,、數(shù)據(jù)采集系統(tǒng)、智能化儀表,、辦公自動化等諸多領域得到極為廣泛的應用。在測控系統(tǒng)中,,有時對單片機系統(tǒng)的可靠性有非常嚴格的要求,。除了在系統(tǒng)設計、生產(chǎn)中采用多種措施以提高其可靠性之外,,雙機熱備份是一種非常有效且經(jīng)常被采用的方法,。在雙機熱備份系統(tǒng)中,兩個單片機必須保持工作狀態(tài)的完全一致,,需要隨時進行數(shù)據(jù)交換,。通常可以使用多單片機信息共享技術來實現(xiàn)兩個單片機的數(shù)據(jù)交換,,如信箱存儲系統(tǒng),、共享存儲器等,但這些方法實現(xiàn)復雜,,硬件成本高[1],。大多數(shù)單片機都提供通用串行收發(fā)器(UART),在單片機系統(tǒng)不與其他設備" title="其他設備">其他設備(如上位機)進行通信的情況下,,使用UART是非常方便的,,但不幸的是絕大多數(shù)情況下UART已被使用,。當然也可以擴展串行和并行通信接口,但硬件成本又會增加,。因此,,在滿足系統(tǒng)性能的條件下,充分利用單片機本身的資源,,最大程度地簡化內(nèi)部通信的接口設計非常值得研究,。在單片機家族的眾多成員中,MCS-51單片機以其優(yōu)越的性能,、成熟的技術,、高可靠性和高性價比,在工業(yè)測控領域中有著廣泛應用,,本文即以MCS-51單片機為例,,給出兩種雙機通信的簡化接口設計。

1 通過單片機的P0口進行內(nèi)部通信

  這種通信接口可以在只使用一片74LS245的情況下獲得較高的傳輸速率,。圖1給出了這種接口的簡單示意圖,。總線收發(fā)器" title="總線收發(fā)器">總線收發(fā)器74LS245接在兩個單片機的P0口之間,作為內(nèi)部數(shù)據(jù)傳輸?shù)耐ǖ?。P0口既是分時的地址/數(shù)據(jù)總線,,又可作為I/O口使用。由于P0口為開路輸出,,作為I/O口應用時應加上拉電阻,,為了簡潔,圖1中未畫,??偩€收發(fā)器的使能端/E和方向控制端DIR均受邏輯控制單元控制。邏輯控制單元的輸入是P1口的三根口線,,和指示單片機運行情況的兩個信號:U1ERR和U2ERR,。為方便起見,先將邏輯控制單元的邏輯方程寫出,。

  

  U1ERR和U2ERR指示單片機的運行狀態(tài),,通常反映ALE信號的有無。這里約定U1ERR和U2ERR為0時表示單片機正常運行(即有ALE信號),。U1P12,、U1P11、U2P12,、U2P11用來進行單片機之間的聯(lián)絡,,約定高電平" title="高電平">高電平有效。任一單片機發(fā)生故障,,則其P1.1的信號無法傳到另一單片機的P1.2端,。DIR受兩個單片機的P1.3控制,,決定數(shù)據(jù)是由單片機1送往單片機2還是由單片機2送往單片機1。/E也受兩個單片機的P1.3控制,,但同時受U1ERR和U2ERR控制,,任一單片機發(fā)生故障,則/E為1,,74LS245被關閉,。

1.1 工作原理

  以單片機1請求傳送數(shù)據(jù)給單片機2為例,其工作過程如下:

  (1)單片機1將其P1.1置1,,表示請求發(fā)送數(shù)據(jù),,同時將其P1.3置1;

  (2)單片機2檢測到其P1.2口的高電平后,,將其P1.1置為高電平,,表示響應數(shù)據(jù)發(fā)送請求,同時也將其P1.3置1,。這時74LS245的/E為0,,DIR為1,數(shù)據(jù)可以從單片機1的P0口送往單片機2的P0口,;

  (3)單片機1將要傳送的數(shù)據(jù)送上P0口,,并將其P1.1置為0,表示一字節(jié)數(shù)據(jù)發(fā)出,;

  (4)單片機2檢測到其P1.2的低電平后,,將數(shù)據(jù)從P0口讀入,并將其P1.1置為0,,表示數(shù)據(jù)已被接收,;

  (5)單片機1檢測到其P1.2的低電平后,可以開始下一字節(jié)的傳送或結束傳送,。

  數(shù)據(jù)由單片機2送往單片機1的過程與上類似,只不過單片機1在接收到數(shù)據(jù)傳送請求后是把其P1.3置為低電平,,以使74LS245的DIR為低電平,,數(shù)據(jù)傳送方向與上相反。與圖3給出的電路相比,,這種設計方式有著更高的傳輸速率,。

1.2 接口電路說明

  圖1所示電路是為敘述方便而簡化的,應用中可以根據(jù)實際情況重新設計,。因此,,上述電路及方程都不是唯一的。但此類電路需共同遵循的原則是:

  (1)使用總線收發(fā)器以進行數(shù)據(jù)的并行雙向傳送;

  (2)總線收發(fā)器的使能端和方向控制端受邏輯控制電路的控制,,且能在不進行數(shù)據(jù)傳送和單片機故障時,,使總線收發(fā)器處于關閉狀態(tài);

  (3)兩個單片機應有聯(lián)絡信號,,以決定什么時候進行內(nèi)部數(shù)據(jù)通信。

?

  按照以上原則,,實際電路是多種多樣的,。控制信號除了可以使用P1口的口線外,,P3口未用的口線以及P2口未用的高位地址線也可以使用,。例如,可以使用P3口的一根口線輸出聯(lián)絡信號,,而聯(lián)絡信號的輸入接到單片機的外部中斷輸入端,,這樣單片機以中斷的方式響應內(nèi)部數(shù)據(jù)傳送請求,可以進一步提高傳送速度,。

  邏輯控制單元可以由門電路構成,,但許多情況下都使用可編程邏輯器件如GAL,降低整個系統(tǒng)的成本,,提高可靠性,。

圖2是筆者設計的接口電路在數(shù)據(jù)采集系統(tǒng)中的應用實例(為簡潔,未畫出P0口所需的上拉電阻),。在這個系統(tǒng)中,,P1、P3口全部被占用,,且擴展了2K字節(jié)的外部靜態(tài)RAM,,系統(tǒng)需要對16路數(shù)字輸入量進行采集。因此,,邏輯控制使用P2口的高位地址線A13A12A11(A12A11為00~10時選通存儲器和輸入通道),。邏輯控制單元使用了一片GAL16V8。GAL16V8兼做地址譯碼器,,實現(xiàn)對靜態(tài)RAM和輸入通道的選通(圖中只畫出了與內(nèi)部通信相關的輸出),。GAL16V8的邏輯方程中與內(nèi)部通信相關的六個方程如下(按FAST-MAP格式)[2]:

  

?

?

  由上述邏輯方程可以看出,只有兩個單片機成功地進行聯(lián)絡后才能打開總線收發(fā)器進行數(shù)據(jù)傳送,。當一個單片機出現(xiàn)故障后其聯(lián)絡信號被GAL置為高阻狀態(tài),,另一單片機不能與之聯(lián)絡,總線收發(fā)器處于關閉狀態(tài),,不會影響正常單片機的工作,。

2 通過單片機的UART進行內(nèi)部通信

  當單片機的UART被用于與其他設備(如上位機)進行通信時,可以分時用于內(nèi)部通信,。這種設計方法硬件電路最為簡單,。為提高通信距離和防止干擾,單片機系統(tǒng)與其他設備的通信多使用RS-485通信,。下面以此為例介紹內(nèi)部通信接口的設計,。圖3直接示出了這種接口的一個電路實例,。

?

2.1 工作原理

  兩個單片機與其他設備的通信通過RS-485收發(fā)器SN75174進行,圖3中U1ERR和U2ERR的含義同圖2,。IT1,、IT2是內(nèi)部通信聯(lián)絡信號,TE1,、RE1分別是單片機1控制外部RS-485通信的發(fā)送和接收信號,,TE2、RE2與此類似,,皆使用P3口的I/O口線,。其內(nèi)部通信接口由一片GAL16V8實現(xiàn)。GAL16V8完成以下功能:

 ?、贋閮蓚€單片機提供三態(tài)的內(nèi)部通信接口,,當其中一個單片機出現(xiàn)故障時即阻塞內(nèi)部通信接口;

  ②為兩個單片機提供聯(lián)絡信號,,當其中之一要求進行通信時,,及時通知另一個單片機;

  ③對兩個單片機的對外通信接口進行控制,,內(nèi)部通信時將單片機與RS-485總線隔離,。

  為敘述方便,現(xiàn)將GAL的邏輯方程中與此相關的部分以FAST-MAP的格式給出:

  

  假設單片機1發(fā)起與單片機2的內(nèi)部通信,,其工作過程如下:

 ?、賳纹瑱C1禁止對外數(shù)據(jù)收發(fā)。即使得TE1為低電平,,RE1為高電平,,從而使得IT2為高電平,向單片機2提出內(nèi)部通信請求;

 ?、趩纹瑱C2在檢測到單片機1的內(nèi)部通信請求后,,禁止對外數(shù)據(jù)收發(fā),使得TE2為低電平,,RE2為高電平,,從而使得IT1為高電平,響應單片機1的內(nèi)部通信請求,,這時,兩個單片機的串行數(shù)據(jù)收發(fā)通過GAL互連,,內(nèi)部通信接口打開;

 ?、蹎纹瑱C1在檢測到IT1為高電平后,通過串行口發(fā)送數(shù)據(jù);

 ?、芡ㄐ磐瓿珊?,兩個單片機打開對外的數(shù)據(jù)收或數(shù)據(jù)發(fā),,從而使得內(nèi)部通信接口處于高阻狀態(tài)。

  從上述方程和通信過程可以看出,,內(nèi)部通信和外部通信是分時進行的,,且互相隔離,互不干擾,。當一個單片機出現(xiàn)故障后,,由于使用了U1ERR和U2ERR信號,相應的內(nèi)部通信聯(lián)絡信號總是無效的,,對外數(shù)據(jù)發(fā)信號也是無效的,,從而使得內(nèi)部通信接口總是處于高阻狀態(tài),且不會發(fā)送數(shù)據(jù)到RS-485總線,。因此不會影響另一個單片機的對外通信和與故障單片機相連的RS-485總線,。

2.2 接口電路說明

  可編程邏輯器件在單片機系統(tǒng)中的應用是系統(tǒng)設計的發(fā)展方向,本文以GAL為例介紹接口的設計,,但只要能完成上述的邏輯功能,,也可以使用其他器件。而且,,單片機與其他設備的通信也不一定是RS-485通信,,但電路的設計與此類似。這類接口電路都需解決的問題是:

 ?、賰?nèi)部通信應在單片機與其他設備通信的間隙進行,,避免數(shù)據(jù)丟失;

  ②內(nèi)部通信與外部通信的信號應良好隔離,,防止相互干擾;

 ?、郛斠粋€單片機出現(xiàn)故障時,應當自動與另一個單片機隔離,,防止通過內(nèi)部通信接口影響另一個單片機的對外通信,。

  上述第一個問題可以根據(jù)通信協(xié)議由軟件解決,后兩個問題由硬件電路解決,。

  本文給出了內(nèi)部通信接口的兩種簡化設計方案,,同時給出了電路實例。設計中GAL不是專為接口電路而設的,,可以與其他邏輯功能合并使用,。兩種通信接口在筆者設計的多個單片機系統(tǒng)中得到了應用,實際應用證明達到了簡化設計,、降低成本,、降低系統(tǒng)復雜度的目標,具有一定的實用價值。

?

參考文獻

1 何立民.單片機應用文集. 北京:北京航空航天大學出版社,,1993

2 張有志.可編程邏輯器件PLD原理與應用.北京:中國鐵道出版社,,1996

3 高傳善.接口與通信.上海:復旦大學出版社,1989

4 李 華.MCS-51系列單片機使用接口技術.北京:北京航空航天大學出版社,,1999

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點,。轉載的所有的文章,、圖片、音/視頻文件等資料的版權歸版權所有權人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者,。如涉及作品內(nèi)容、版權和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]