一、引言
智能電錶的設計,由於微控制器的引入,對設計者提出了更高的要求。這是因為由於電源等引入的幹擾可能導致程序指針跳飛,從而引起不可預測的後果,諸如電量數據的丟失、改變或死機等。像家用電腦和普通儀器儀表對死機等現象是允許的,可以通過人工復位,重新設置等手段來恢復,求長年連續的掛網運行,如果運行中出現任何異常現象,均要求能自動恢復正常工作。然而,在工程實際中,噪聲和幹擾是不可避免的。目前,大多數智能電錶都應保證在幹擾較強的現場運行,因此如何提高智能電錶的抗幹擾能力,保證其在規定條件下正常運行,以及防止儀表內部產生的噪聲對外部的輻射,是智能儀表設計中必須考慮的問題,也是關鍵問題。
二、硬體抗幹擾設計
在智能電錶研製的初期,我們發現這樣一種現象,電錶帶上電感性負載(比如電扇)時,在電扇快速插拔的瞬間,容易導致智能電錶中單片機數據的丟失或死機。如果從設計上不能把智能電錶的抗幹擾問題解決好,後果將會非常嚴重。
(1)電源的抗幹擾措施
實踐證明,系統失效和硬體損壞大都是由各種幹擾引起的,而90%以上的幹擾來自於電源。可見這種來自電源的幹擾對系統的影響相當大,因此應充分考慮電源對單片機的影響。電源做得好壞,直接影響整個電路的抗幹擾能力的好壞。目前有以下幾種電源可供選擇:第一種阻容分壓式,它採用簡單的電阻電容分壓、濾波。但這種電源穩壓性能差、電源波動大、帶負載能力小、電網幹擾極易串入,一般不採用這種方式。第二種開關電源,這種電源穩壓性能好、紋波小,但成本較高且對外界電網幹擾比較嚴重,也不宜採用。第三種線性電源,這種電源由220V經交流變壓、整流、濾波及穩壓得到,穩壓性能好、隔離特性好,價格適中,在目前應用廣泛的多用戶電錶設計中大都採用這種方式。對這種電源的抗幹擾措施有以下幾個方面。- 對於電源變壓器的設計,要使其空載電流儘可能小,以降低整表功耗。增加變壓器的容量,能使幹擾脈衝的數量和幅度有所減少,而變壓器的容量受電錶空間的限制,變壓器又不能太大。
- 在電源變壓器的初級串聯一個電源濾波器,比如採用「雙繞組扼流圈」的濾波線路,它對高頻幹擾信號阻抗很大,使整個電子系統與供電網之間得到一定程度的高頻隔離,對於外界空間電磁場的幹擾,也起一定的抑制作用。
- 在各相交流電源的進線端,並聯一個壓敏電阻(MOV),其電阻隨電壓的增加而減小。在過壓時形成一個低阻的分流器,從而可以防止被保護電路兩端的電壓進一步上升;當浪湧電壓過後,電路電壓恢復到正常工作電壓,壓敏電阻又恢復到高阻狀態。
- 在為主處理器提供電源之前的三端穩壓器前,並接一個瞬變電壓抑制二極體(TVS),對後面的電路起到保護作用。當TVS兩端經受瞬間高能量衝擊時,它能以極高的速度成為低阻抗器件,吸收大電流,從而把它兩端的電壓鉗位在一個預定的數值上,保護後面的電路元件不因瞬態高電壓的衝擊而損壞。
- 在變壓器一次側採取磁珠和電容組成的丌型濾波方法,對高頻幹擾起作用,但對幾百赫茲以內的低頻幹擾作用卻很小。綜上所述,設計人員應根據具體的工作環境,選擇不同的抗幹擾措施。
(2)電源檢測及看門狗電路
分析及實踐表明,對來自電網的幹擾不僅要採取硬堵的辦法,還要採取容錯措施。使用電源檢測及看門狗電路的目的,就是當電源電壓出現幹擾脈衝或單片機受幹擾程序運行異常時,產生一復位信號使單片機復位。看門狗電路實質上是一個單穩電路。當程序運行正常時,單片機定時給單穩電路輸入觸發信號,使單片機輸出保持暫穩態:當幹擾異常時,單片機不能給觸發信號,單穩輸出回到穩態引起單片機硬體夏位:看門狗不僅對來自電網方面的幹擾起作用,而且對來自空間等其他方面的幹擾也起作用。然而如果沒有電源檢測電路,只有看門狗電路,在電網幹擾下,即使不帶電感性負載,當電源快速合閘時,也有可能導致死機。實踐證明,採用電源檢測及看門狗電路之後,死機觀象得到了有效地克服。
(3)串行E2PROM的選擇
因為電錶數據存儲的可靠性至關重要,為了保證在掉電時以及在因幹擾導致單片機復位時,智能電錶中的主要數據和參數不丟夫,存儲器的選擇上要有所考慮。使用並行存儲器.雖然有速度快的特點,但讀寫信號容易受到幹擾從而造成錯誤。而採用串行E2PROM存儲器時,其讀寫時序相當嚴格,受到幹擾出錯的機率就小得多。
(4)布線布局上的抗幹擾設計
在用電負荷很小時,220V的電壓與幾個μV的小信號會共集於一塊電路板上,如果電源布局不當,有用信號會被噪聲所淹沒,以多用戶電錶為例,在布線布局上的抗幹擾措施有:
- 電源與控制分兩塊板。在多用戶智能電錶中分三部分:電源板,主機控制板和電能採集傳感器板。電源板包括變壓器、整流、濾波、穩壓等。控制板包括微處理器、顯示驅動、看門狗電路、串行E2PROM、電能脈衝採集等。電能採集傳感器板包括A、B、C三相上各用戶的電能採集模塊及其外圍電路。對變壓器的設計要求其漏磁要小,一般其空載電流不大於10mA,若仍不能滿足要求,可變換變壓器位置改變磁場方向,減小漏磁對小信號的影響。
- 印刷電路板應有良好的絕緣性,絕緣電阻大於1011ΩV。在電路設計中,必須嚴格保證強電與弱電的隔離,除了電路有直接連接外,100V以上的強電印刷布線與弱電印刷布線距離應大於4—5mm。數字地與模擬地應通過一點方式連接來提高抗幹擾性能。
- 在每個印刷電路扳入口處的電源線與地線之間並接退耦電容。並接的電容應為一個大容量的電解電容(10~100μF)和一個0.01~0.1μF的非電解電窖,電路板上的大中規模IC要並接一個0.0lμF一0.1μF高頻電容,以減小IC對電源的影響。注意高頻電容的布線,連線應靠近電源端並儘量粗短,否則,等於增大了電容的等效串聯電阻,會影響濾波效果。
- 印刷線走線要科學,高壓走線儘量短,儘量遠離小信號走線。對於電能採集傳感器板的印刷板布線要求一面走線.另一面銅鉑既作電磁屏蔽用、又作地線用,以減少幹擾信號。除了要根據電流大小,儘量加大導線寬度外,採取使電源線、地線走向與數據信息傳送方向一致,將有助於增強抗噪聲的能力。布線時避免小於90度折線,減少高頻噪聲發射。不要在印製板上留下空白銅箔層,因為它們可以充當發射天線或接收天線,因此可將它們接地以減小電磁幹擾。
- 在線路無法排列或只有繞大圈才能走通的情況下,乾脆用絕緣「飛線」連接,而不用印刷線,或採用雙面印刷「飛線」或阻容元件直接跨接。
- 對印刷板上容易受幹擾的信號線,不能與產生幹擾或傳遞幹擾的線路長距離平行鋪設。必要時可在它們之間設置一根地線,以實現屏蔽。
當然,這些布線與布局的抗幹擾設計一般不能由自動布線軟體來實現,必須有設計者親自參與並設計有關電路。
三、軟體抗幹擾設計
在提高硬體系統抗幹擾能力的同時,軟體抗幹擾以其設計靈活、節省硬體資源、可靠性好越來越受到重視。因此,除了採取硬體抗幹擾方法外,還要採取如下軟體抗幹擾措施。
(1)指令冗餘技術
當指針受到幹擾出現程序跑飛時,可能會出現將操作數數值改變及將操作數誤當作操作碼的情況。當「跑飛」到某雙字節或三字節指令的操作數上時,會將操作數當作操作碼,程序將出錯,因此可在雙字節和三字節指令之後插入兩個或三個單字節NOP指令,這可保證其後的指令不被拆散。對程序流向起決定作用的指令(如浸水使柔軟、RETI、ACALL、LCALL、LJMP、JZ、JNZ、JC、.INC等)和對系統工作狀態起重要作用的指令(如SETB、EA等)之前插入兩條NOP指令,可保證跑飛程序迅速納入軌道;或者在其後面重複寫上這些指令,以確保這些指令的正確運行。
(2)軟體陷阱
當微處理器受到各種幹擾時,若PC指針跳到非程序區,可能會陷入某種循環不能跳出。如果循環中無清WDT指令,在給定看門狗定時器條件下,經過一定時間 WDT起作用,將PC指針復位,工作恢復正常。如果循環中包含了清WDT的指令,則產生死機。對於後者可在非程序區放置軟體陷阱加以解決。
軟體陷阱有三條指令組成:
安排軟體陷阱的位置有:
- 未使用的中斷區。如果設計的智能電錶未使用全部的中斷向量區,則可在剩餘的中斷區安排軟體陷阱,以便能捕捉到錯誤的中斷。
- 未使用的大片EPROM空間。對於單片機未編程的空間,其初始值為OFFH。OFFH對51指令來說,相當於單字節指令MOV R7,A。當程序跑飛入該區後,不僅無法迅速入軌,而且破壞R7的內容。因此在該區每隔一段地址設一個陷阱,就一定能捕捉到跑飛的程序。
- 在表格的最後安排陷阱。注意表格中不應被放入。
- 在程序區。前面曾指出,跑飛的程序在用戶程序內部跳轉時可用指令冗餘加以解決,也可以設置一些軟體陷阱,能更有效地抑制程序跑飛。可以將陷阱指令放置在各模塊之間的空餘單元裡。在正常運行中不執行這些陷阱指令,一旦程序跑飛落入這些陷阱區,馬上將亂飛的程序拉入正確軌道。由於軟體陷阱都安排在正常程序執行不到的地方,故不會影響程序的執行效率。所以在EPROM容量允許的條件下,這種陷阱多一點為好。
(3)「看門狗」措施
如果跑飛的程序落入一個臨時構成的死循環中時,冗餘指令和軟體陷阱都將無能為力,這時可以採用復位的方法使系統恢復正常。「看門狗」電路的功能就是對 CPU進行實時檢測,當CPU落入死循環之後,能及時發現並使整個系統復位。在軟體編程中,設置約1秒訪問一次看門狗晶片,當程序跑飛或大於1.4秒(設置的超時時間)沒有訪問看門狗晶片,X5045將輸出復位脈衝,直至程序正常運行。
(4)保證EEPROM數據寫入的可靠性措施
需要注意的是,看門狗如果起作用說明程序計數器內容被破壞,因此其它寄存器或片內公羊的內容也有被破壞的可能,會導致把錯誤的數據寫入EEPROM。在電錶工作中,每產電量改變0.1度寫入一次EEPROM,如果出現將錯誤的數據寫入EEPROM,這是不允許的。採取以下措施可很好的解決此問題:
- 正常寫入EEPROM之前,要進行一系列操作,可將其分成幾部分。每一部分設置一寫入口令。只有程序正常一步一步運行,口令才會逐一被賦予正確的值,到最後寫入時再判斷所有的口令是否正確。若正確,寫入,否則退出。寫入完成,口令清除。
- 數據雙備份。當由於幹擾使微處理器中的寄存器數據改變時,鑑於三組數據在同一值出錯的概率較小,故在寫入之前,將三組數據比較,若相等則寫入,若不相等則將相等的兩組數據寫入。
- 寫入之前對數據的合法性進行判別,即對電量或參數的數據格式進行判別。有了這樣的限制,可進一步提高可靠性。
- 定時設置I/0口狀態;微處理器受到幹擾,I/0口狀態可能改變,比如電脈衝輸入口若改變為輸出態,會造成用戶用了電但微處理器卻檢測不到的可能。所以周期性地重複定義I/0口的輸入/輸出狀態對於幹擾環境下運行的電錶是有好處的。
(5)串行通信數據的冗餘校驗
在抄表通信過程中,由於信道上各種因素的影響,所傳輸的信號受一定程度的幹擾,PC機、集中器、電錶間的性能參數不完全一致,在串行通信中僅靠奇偶校驗是不夠的。而採用國際上較為流行的傳輸碼校驗方法——循環冗餘碼校驗(CRC),可收到了很好的效果。CRC是一種多用於同步通訊方式中的差錯檢出方式,在該方式中,將所傳數據系列看成高次多項式G(x),將此多項式用預先規定的生成多項式P(x)去除,再將其餘數碼BCC附加在所傳數據的尾部一併傳送:在接收方,用同樣的生成多項式去除,若除得結果為零,則可判斷所接收到的數據是正確的。在發送端的一方,即電錶先將發送數據轉換,連同原數據一同發給集中器,集中器不做校驗,直接發給PC機,在接收端,PC機用高級語言實行CRC算法解碼;以確定數據的真偽。經實驗證明,冗餘校驗使誤碼率大為降低,確保了數據傳輸的可靠性。
另外在軟體的編制過程中應注意在執行各功能子模塊之前,可先進行功能標誌冗餘判斷,以增強其程序運行可靠性。
四、結束語
在電錶設計中,為了少走彎路和節省時間,應充分考慮抗幹擾性能的要求,避免在設計完成後再去進行抗幹擾的補救措施。因此電錶設計開發者應從抑制幹擾源,切斷幹擾傳播路徑,提高敏感器件的抗幹擾性能等方面採取各種措施來提高系統性能。在抗幹擾設計中,軟體抗幹擾是被動措施,而硬體抗幹擾是主動措施,只要認真分析系統所處環境的幹擾來源以及傳播途徑,採用兩者相結合的方法,就能保證系統長期穩定可靠地運行。
參考文獻:
[1]徐愛均等.智能化測量控制儀表原理與設計[M]。北京航空航天大學出版社,1995
[2]王幸之等.單片機應用系統抗幹擾技術[M]。北京航空航天大學出版社,2000
[3]邱玉春等EEPROM器件在電度表中的應用。電測與儀表,2000