基于RS485總線的多機(jī)通信系統(tǒng)設(shè)計(jì)_第1頁
基于RS485總線的多機(jī)通信系統(tǒng)設(shè)計(jì)_第2頁
基于RS485總線的多機(jī)通信系統(tǒng)設(shè)計(jì)_第3頁
基于RS485總線的多機(jī)通信系統(tǒng)設(shè)計(jì)_第4頁
基于RS485總線的多機(jī)通信系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、摘 要在多機(jī)通信領(lǐng)域由于單片機(jī)具有靈活高效的多機(jī)通信功能和價(jià)格優(yōu)勢,應(yīng)用越來越廣泛,但由于單片機(jī)的收發(fā)信號(hào)都是tti 電平,驅(qū)動(dòng)能力和抗干擾性有限,實(shí)用中常配合其它總線實(shí)現(xiàn)互聯(lián),rs-485總線就是其中之一。rs-485總線是平衡差分傳輸,抗干擾性好,最遠(yuǎn)可傳輸4000 m,可互聯(lián)多達(dá)128個(gè)單片機(jī),非常適臺(tái)組成多機(jī)通信系統(tǒng)。在多機(jī)通信中,最重要的是保證通信有條不紊地進(jìn)行,因此需要嚴(yán)格的通信協(xié)議和完善的通信軟件,本文將重點(diǎn)介紹應(yīng)用于某大型工程的單片機(jī)多機(jī)通信協(xié)議和通信軟件的設(shè)計(jì)方法。本文介紹一種利用單片機(jī)本身所提供的串行通訊口,采用自定義串行通信協(xié)議,加上總線驅(qū)動(dòng)器如max481、max483

2、、max485、max487等組合成簡單的rs485通訊網(wǎng)絡(luò),完成單片機(jī)間的多機(jī)通訊。 關(guān)鍵詞: 單片機(jī);串行通信;rs485總線: 多機(jī)通信協(xié)議   abstractin computer communication field. because of the single chip microcomputer has flexible and efficient computer communication function and price advantage, used more and more widely, but because of the single

3、 chip microcomputer to send and receive signals are tti level, drive and anti-interference ability is limited, practical cooperation with other bus realize in internet, rs-485 bus is one of them. rs-485 bus is a balanced differential transmission, anti-jamming of the good and as far as 4000 m could

4、be transmitted, interconnected as many as 128 single chip microcomputer, very comfortable a composition computer communication system. in computer communication, the most important is to ensure that communications in an orderly way, and therefore need to strict communication protocol and perfect com

5、munication software, this paper will focus on introduces applied in a large project single-chip computer communication association put the communication software design method. this paper introduces a microcontroller itself provide the serial communication mouth, use custom serial communication prot

6、ocol, plus the bus drives as max481, max483, max485, max487 combined into simple rs-485 communication network, finish between the single chip computer communication. keywords: scm; serial communication; rs-485 bus: computer communication agreement目 錄第1章 緒論11.1 課題研究背景與意義11.2 單片機(jī)多機(jī)通信發(fā)展1第2章 總體介紹32.1 系統(tǒng)

7、組成32.2 rs-48532.3 多機(jī)通信原理4第3章 硬件設(shè)計(jì)及原理63.1 80c51單片機(jī)硬件結(jié)構(gòu)63.2 最小應(yīng)用系統(tǒng)設(shè)計(jì)73.2.1 時(shí)鐘電路73.2.2 復(fù)位電路83.3 總線驅(qū)動(dòng)芯片9第4章 系統(tǒng)問題及其解決124.1 通信規(guī)則124.2 總線匹配134.3 硬件抗干擾措施134.3.1 ro及di端配置上拉電阻134.3.2 地線與接地144.3.3 電磁干擾(emi)問題144.3.4 瞬態(tài)保護(hù)154.3.5 總線隔離164.4 軟件抗干擾措施164.4.1 指令冗余164.4.2 攔截技術(shù)164.4.3 軟件“看門狗”技術(shù)17第5章 軟件設(shè)計(jì)195.1 系統(tǒng)結(jié)構(gòu)195.2

8、 通信協(xié)議195.2.1 信息格式195.2.2 定時(shí)與重發(fā)205.2.3 通信過程205.3 通信軟件設(shè)計(jì)215.3.1 從機(jī)通信軟件設(shè)計(jì)215.3.2 主機(jī)通信軟件設(shè)計(jì)23第6章 程序設(shè)計(jì)246.1 主機(jī)程序如下:246.2 從機(jī)1程序如下:266.3 從機(jī)2程序如下:27第7章 系統(tǒng)仿真29結(jié)束語31致 謝32參考文獻(xiàn)33第1章 緒論1.1 課題研究背景與意義單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器cpu隨機(jī)存儲(chǔ)器ram、只讀存儲(chǔ)器rom、多種i/o口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、a/d

9、轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能ic卡,民用豪華轎車的安全保障系統(tǒng),錄象機(jī)、攝象機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。 單片機(jī)廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控制等領(lǐng)域隨著計(jì)算機(jī)技術(shù)的發(fā)展及工業(yè)自動(dòng)化水平的提高, 在許多場合采用單機(jī)控制已不能滿足現(xiàn)

10、場要求,因而必須采用多機(jī)控制的形式,而多機(jī)控制主要通過多個(gè)單片機(jī)之間的串行通信實(shí)現(xiàn)。串行通信作為單片機(jī)之間常用的通信方法之一, 由于其通信編程靈活、硬件簡潔并遵循統(tǒng)一的標(biāo)準(zhǔn), 因此其在工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用。構(gòu)成較大規(guī)模的檢測、控制系統(tǒng),經(jīng)常要采用多個(gè)單片機(jī),組成可以通信的多機(jī)系統(tǒng)。mcs一51系列單片機(jī)為實(shí)現(xiàn)多機(jī)通信聯(lián)網(wǎng)設(shè)計(jì)了方便的串行通信接口功能。將多個(gè)mcs一51單片機(jī)組成串行總線形式的相互通道,通過寫單片機(jī)的串行控制方式寄存器,將串行口置成方式2或方式3,就可以實(shí)現(xiàn)主機(jī)與分機(jī)之間的串行通信。這種多機(jī)系統(tǒng)結(jié)構(gòu)簡單,應(yīng)用廣泛,但它只能實(shí)現(xiàn)由主機(jī)呼叫分機(jī),然后實(shí)現(xiàn)主機(jī)與分機(jī)之間的全雙工

11、串行通信。我們?cè)诒O(jiān)控系統(tǒng)中要求既有主機(jī)與分機(jī)主動(dòng)通信,又有分機(jī)與主機(jī)主動(dòng)通信,這種結(jié)構(gòu)的多機(jī)系統(tǒng)就無法滿足要求。多機(jī)協(xié)同工作已是單片機(jī)發(fā)展的一個(gè)重要趨勢,目前單片機(jī)多機(jī)通信的主要方式仍然是主從式多機(jī)通信系統(tǒng)。單片機(jī)多機(jī)通信的目的是實(shí)現(xiàn)分布式處理系統(tǒng),單片機(jī)多機(jī)通信的方式有很多種,應(yīng)用前景廣闊,非常具有研究意義!1.2 單片機(jī)多機(jī)通信發(fā)展隨著科技的發(fā)展,單片機(jī)已不是一個(gè)陌生的名詞,它的出現(xiàn)是近代計(jì)算機(jī)技術(shù)發(fā)展史上的一個(gè)重要里程碑,因?yàn)閱纹瑱C(jī)的誕生標(biāo)志著計(jì)算機(jī)正式形成了通用計(jì)算機(jī)系統(tǒng)和嵌入式計(jì)算機(jī)系統(tǒng)兩大分支。單片機(jī)單芯片的微小體積和低的成本,可廣泛地嵌入到如玩具、家用電器、機(jī)器人、儀器儀表、汽車

12、電子系統(tǒng)、工業(yè)控制單元、辦公自動(dòng)化設(shè)備、金融電子系統(tǒng)、艦船、個(gè)人信息終端及通訊產(chǎn)品中,成為現(xiàn)代電子系統(tǒng)中最重要的智能化工具。 所涉及的市場占有率最高的是mcs51系列,因?yàn)槭澜缟虾芏嘀膇c生產(chǎn)廠家都生產(chǎn)51兼容的芯片。生產(chǎn)mcs51系列單片機(jī)的廠家如美國amd公司、atmel公司、intel公司、winbond公司、philips公司、issi公司、temic公司及南韓的lg公司、日本nec、西門子公司等。到目前為止,mcs51單片機(jī)已有數(shù)百個(gè)品種,還在不斷推出功能更強(qiáng)的新產(chǎn)品?,F(xiàn)代的單片機(jī)普遍具備通信接口,可以很方便地與計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信,為在計(jì)算機(jī)網(wǎng)絡(luò)和通信設(shè)備間的應(yīng)用提供了極好的物質(zhì)

13、條件,現(xiàn)在的通信設(shè)備基本上都實(shí)現(xiàn)了單片機(jī)智能控制,從手機(jī),電話機(jī)、小型程控交換機(jī)、樓宇自動(dòng)通信呼叫系統(tǒng)、列車無線通信、再到日常工作中隨處可見的移動(dòng)電話,集群移動(dòng)通信,無線電對(duì)講機(jī)等。單片機(jī)的通信領(lǐng)域應(yīng)用首先從兩片單片機(jī)之間的通信發(fā)展起來,后來有了主從式多機(jī)通信并得到了廣泛的應(yīng)用,又出現(xiàn)了以單片機(jī)作為下位機(jī)與以pc機(jī)作為上位機(jī)的通信應(yīng)用,上位機(jī)用vb或vc+等面向?qū)ο蟮某绦蛟O(shè)計(jì)語言編寫通信收發(fā)程序,也得到了廣泛的應(yīng)用。雖然,單片機(jī)多機(jī)通信已經(jīng)有較長的研究歷史了,但其形式大多是主從式的,很少是平權(quán)式的。第2章 總體介紹2.1 系統(tǒng)組成本設(shè)計(jì)采用mcs-51系列中的80c51單片機(jī)。80c51是一款

14、八位單片機(jī),它的易用性和多功能性受到了廣大使用者的好評(píng)。它是第三代單片機(jī)的代表。新一代的單片機(jī)的最主要的技術(shù)特點(diǎn)是向外部接口電路擴(kuò)展,以實(shí)現(xiàn)microcomputer完善的控制功能為己任,將一些外部接口功能單元如a/dpwmpca(可編程計(jì)數(shù)器陣列)wdt(監(jiān)視定時(shí)器)高速i/o口計(jì)數(shù)器的捕獲/比較邏輯等。這一代單片機(jī)中,在總線方面最重要的進(jìn)展是為單片機(jī)配置了芯片間的串行總線,為單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)提供了更加靈活的方式。philips公司還為這一代單片機(jī)80c51系列8c592單片機(jī)引入了具有較強(qiáng)功能的設(shè)備間網(wǎng)絡(luò)系統(tǒng)總線-can(controller area network bus).新一代單

15、片機(jī)為外部提供了相當(dāng)完善的總線結(jié)構(gòu),為系統(tǒng)的擴(kuò)展與配置打下了良好的基礎(chǔ)。菲利浦公司研發(fā)的lpc900系列單片機(jī)是一個(gè)基于80c51內(nèi)核的高速、低功耗flash單片機(jī),主要集成了字節(jié)方式的i2c總線、spi接口、uart通信接口、實(shí)時(shí)時(shí)鐘、e2prom、a/d轉(zhuǎn)換器、isp/iap在線編程和遠(yuǎn)程編程方式等一系列有特色的功能部件。本文中系統(tǒng)構(gòu)成使用了p89lpc932單片機(jī)。p89lpc932是一款單片封裝的微控制器,適用于許多要求高集成度、低成本的場合。它采用了高性能的處理器結(jié)構(gòu),指令執(zhí)行時(shí)間只需要2-4個(gè)時(shí)鐘周期,6倍于標(biāo)準(zhǔn)80c51器件。2.2 rs-485rs485標(biāo)準(zhǔn)接口是單片機(jī)系統(tǒng)種常

16、用的一種串行總線之一。rs-485通信方式rs-485標(biāo)準(zhǔn)是由eia(電子工業(yè)協(xié)會(huì))和tia(通訊工業(yè)協(xié)會(huì))共同制訂和開發(fā)的。rs-485作為一種多點(diǎn)差分?jǐn)?shù)據(jù)傳輸?shù)碾姎庖?guī)范,已成為業(yè)界最廣泛應(yīng)用的標(biāo)準(zhǔn)通信接口之一。理論上,rs-485標(biāo)準(zhǔn)最多接入32個(gè)設(shè)備(受芯片驅(qū)動(dòng)能力的影響),可以工作在半雙工或全雙工模式下,最大傳輸距離約為1219米,最大傳輸速率約為10mbps1。然而通常rs-485網(wǎng)絡(luò)采用平衡雙絞線作為傳輸媒體,平衡雙絞線的長度與傳輸速率成反比,只有在20kbps的傳輸速率下,才可能達(dá)到最大傳輸距離。一般15米長的雙絞線最大傳輸速率僅為1mbps。不過對(duì)于速率要求不是很高的控制系統(tǒng)來

17、說已經(jīng)足夠了。rs-485采用平衡發(fā)送和差分接收方式來實(shí)現(xiàn)通信:在發(fā)送端txd將串行口的ttl電平信號(hào)轉(zhuǎn)換成差分信號(hào)a、b兩路輸出,經(jīng)傳輸后在接收端將差分信號(hào)還原成ttl電平信號(hào)。兩條傳輸線通常使用雙絞線,又是差分傳輸,因此有極強(qiáng)的抗共模干擾的能力,接收靈敏度也相當(dāng)高。同時(shí),最大傳輸速率和最大傳輸距離也大大提高。如果以10kbps速率傳輸數(shù)據(jù)時(shí)傳輸距離可達(dá)12m,而用100kbps時(shí)傳輸距離可達(dá)1.2km。如果降低波特率,傳輸距離還可進(jìn)一步提高。另外rs-485實(shí)現(xiàn)了多點(diǎn)互連,最多可達(dá)256臺(tái)驅(qū)動(dòng)器和256臺(tái)接收器,非常便于多器件的連接。不僅可以實(shí)現(xiàn)半雙工通信,而且可以實(shí)現(xiàn)全雙工通信。 2.3

18、 多機(jī)通信原理在多機(jī)通信中,每臺(tái)從機(jī)均分配有一個(gè)從機(jī)地址,主機(jī)與從機(jī)之間進(jìn)行串行通信時(shí),通常是主機(jī)先呼叫某從機(jī)地址,喚醒被叫從機(jī)后,主、從兩機(jī)之間進(jìn)行數(shù)據(jù)交換。而未被呼叫的從機(jī)則繼續(xù)進(jìn)行各自的工作??墒?,如果在主機(jī)與某被呼叫從機(jī)進(jìn)行數(shù)據(jù)交換過程中,其他從機(jī)如果不采取相應(yīng)的數(shù)據(jù)識(shí)別技術(shù),則這些從機(jī)就會(huì)因?yàn)榇型ㄐ啪€上有數(shù)據(jù)傳輸而時(shí)時(shí)被打斷,影響正常的工作。利用單片機(jī)的串口工作方式2、方式3可以很好解決上述問題。在多機(jī)通信過程中,從機(jī)首先要解決的是如何識(shí)別主機(jī)發(fā)送的是地址信息還是數(shù)據(jù)信息。當(dāng)發(fā)送的是地址信息時(shí),各從機(jī)都響應(yīng)串口中斷,接收主機(jī)下發(fā)的一幀地址數(shù)據(jù)。而當(dāng)主機(jī)發(fā)送數(shù)據(jù)幀時(shí),無關(guān)從機(jī)可不響應(yīng)

19、串口中斷。解決的方法是:當(dāng)主機(jī)發(fā)送一幀地址信息時(shí),應(yīng)保持這幀數(shù)據(jù)的第9位為1。從機(jī)按照工作方式2或工作方式3運(yùn)行時(shí),將串口寄存器scon中的控制位sm2置為1,當(dāng)所接收的一幀數(shù)據(jù)的第9位為1,所以從機(jī)產(chǎn)生串口中斷,接收這一幀地址數(shù)據(jù)并與各自的從機(jī)地址進(jìn)行比較,以判斷主機(jī)是否要與本機(jī)通信。接收到的地址數(shù)據(jù)與從機(jī)地址相等達(dá)到為被呼叫從機(jī),該從機(jī)將串口控制寄存器scon中的控制位sm2清為0,去接收主機(jī)發(fā)送來的數(shù)據(jù)幀(數(shù)據(jù)幀的第9位為0),此時(shí)不管接收到的第9位數(shù)據(jù)是否為1或0,都要產(chǎn)生串口中斷,這就保證了主機(jī)與被呼叫從機(jī)間的正常數(shù)據(jù)通信。數(shù)據(jù)通信結(jié)束后,該從機(jī)又重新將串行口控制寄存器scon中的控

20、制位sm2置為1,為下一次與主機(jī)進(jìn)行通信做好準(zhǔn)備。其他從機(jī)則一直在sm2=1下繼續(xù)自己的工作,不會(huì)因?yàn)橹?、從機(jī)之間的數(shù)據(jù)通信而被打斷。多機(jī)通信的實(shí)現(xiàn),主要靠主、從機(jī)正確地設(shè)置與判斷多機(jī)通信控制位sm2和發(fā)送或接收的第9位數(shù)據(jù)(tb8或rb8)。當(dāng)主機(jī)給從機(jī)發(fā)送信息時(shí),要根據(jù)發(fā)送信息的性質(zhì)來設(shè)置tb8,發(fā)送地址信號(hào)時(shí),設(shè)置tb8=1;發(fā)送數(shù)據(jù)或命令時(shí),設(shè)置tb8=0。當(dāng)從機(jī)的sm2為1時(shí),該從機(jī)只接收地址幀(rb8位為1),對(duì)數(shù)據(jù)幀(rb8位為0)將不予理睬。而當(dāng)sm2為0時(shí),該從機(jī)接收所有發(fā)送來的信息。多機(jī)通信過程如下:(1) 使所有從機(jī)的sm2置1,處于只接收地址幀的狀態(tài)(即從機(jī)復(fù)位);(2

21、) 主機(jī)發(fā)送一地址幀信息,其中包含8位地址,第9位為地址、數(shù)據(jù)標(biāo)志位,第9位置1表示發(fā)送的是地址;(3) 從機(jī)接收到地址幀后,各自中斷cpu,把接收到的地址與本地址作比較;(4) 地址相符的從機(jī),使sm2清零以接收主機(jī)隨后發(fā)來的所有信息,對(duì)于地址不相符的從機(jī),仍保持sm2=1狀態(tài),對(duì)主機(jī)隨后發(fā)送的數(shù)據(jù)不予理睬,直到主機(jī)發(fā)送來新的地址幀;(5) 主機(jī)發(fā)送數(shù)據(jù)或控制信息給被尋址的從機(jī);(6) 被尋址的從機(jī),因sm2=0,可以接收主機(jī)發(fā)送過來的所有數(shù)據(jù),當(dāng)從機(jī)接收數(shù)據(jù)結(jié)束時(shí),置位sm2,返回接收地址幀狀態(tài)(復(fù)位狀態(tài));(7) 當(dāng)主機(jī)改為與另外從機(jī)聯(lián)系時(shí),可再發(fā)地址幀尋址其從機(jī),而先前被尋址過的從機(jī)恢

22、復(fù)sm2=1。第3章 硬件設(shè)計(jì)及原理一個(gè)單片機(jī)應(yīng)用系統(tǒng)的硬件電路設(shè)計(jì)包含有兩部分內(nèi)容:一是系統(tǒng)擴(kuò)展,即單片機(jī)內(nèi)部的功能單元,如romrami/o口定時(shí)/記數(shù)器中斷系統(tǒng)等能量不能滿足應(yīng)用系統(tǒng)的要求時(shí),必須在片外進(jìn)行擴(kuò)展,選擇適當(dāng)?shù)男酒?,設(shè)計(jì)相應(yīng)的電路。二是系統(tǒng)配置,既按照系統(tǒng)功能要求配置外圍設(shè)備,如鍵盤顯示器打印機(jī)a/dd/a轉(zhuǎn)換器等,要設(shè)計(jì)合適的接口電路。3.1 80c51單片機(jī)硬件結(jié)構(gòu)80c51單片機(jī)是把那些作為控制應(yīng)用所必需的基本內(nèi)容都集成在一個(gè)尺寸有限的集成電路芯片上2。如果按功能劃分,它由如下功能部件組成,即微處理器、數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器、并行i/o口、串行口、定時(shí)器/計(jì)數(shù)器、中斷系

23、統(tǒng)及特殊功能寄存器。它們都是通過片內(nèi)單一總線連接而成,其基本結(jié)構(gòu)依舊是cpu加上外圍芯片的傳統(tǒng)結(jié)構(gòu)模式。但對(duì)各種功能部件的控制是采用特殊功能寄存器的集中控制方式。微處理器:該單片機(jī)中有一個(gè)8位的微處理器,與通用的微處理器基本相同,同樣包括了運(yùn)算器和控制器兩大部分,只是增加了面向控制的處理功能,不僅可處理數(shù)據(jù),還可以進(jìn)行位變量的處理。數(shù)據(jù)存儲(chǔ)器:片內(nèi)為128個(gè)字節(jié),片外最多可外擴(kuò)至64k字節(jié),用來存儲(chǔ)程序在運(yùn)行期間的工作變量、運(yùn)算的中間結(jié)果、數(shù)據(jù)暫存和緩沖、標(biāo)志位等,所以稱為數(shù)據(jù)存儲(chǔ)器。程序存儲(chǔ)器:由于受集成度限制,片內(nèi)只讀存儲(chǔ)器一般容量較小,如果片內(nèi)的只讀存儲(chǔ)器的容量不夠,則需用擴(kuò)展片外的只讀

24、存儲(chǔ)器,片外最多可外擴(kuò)至64k字節(jié)。 中斷系統(tǒng):具有5個(gè)中斷源,2級(jí)中斷優(yōu)先權(quán)。定時(shí)器/計(jì)數(shù)器:片內(nèi)有2個(gè)16位的定時(shí)器/計(jì)數(shù)器, 具有四種工作方式。串行口:1個(gè)全雙工的串行口,具有四種工作方式。可用來進(jìn)行串行通訊,擴(kuò)展并行i/o口,甚至與多個(gè)單片機(jī)相連構(gòu)成多機(jī)系統(tǒng),從而使單片機(jī)的功能更強(qiáng)且應(yīng)用更廣。 p1口、p2口、p3口、p4口:為4個(gè)并行8位i/o口。特殊功能寄存器:共有21個(gè),用于對(duì)片內(nèi)的個(gè)功能的部件進(jìn)行管理、控制、監(jiān)視。實(shí)際上是一些控制寄存器和狀態(tài)寄存器,是一個(gè)具有特殊功能的ram區(qū)。由上可見,80c51單片機(jī)的硬件結(jié)構(gòu)具有功能部件種類全,功能強(qiáng)等特點(diǎn)。特別值得一提的是該單片機(jī)cpu

25、中的位處理器,它實(shí)際上是一個(gè)完整的1位微計(jì)算機(jī),這個(gè)一位微計(jì)算機(jī)有自己的cpu、位寄存器、i/o口和指令集。1位機(jī)在開關(guān)決策、邏輯電路仿真、過程控制方面非常有效;而8位機(jī)在數(shù)據(jù)采集,運(yùn)算處理方面有明顯的長處。mcs-51單片機(jī)中8位機(jī)和1位機(jī)的硬件資源復(fù)合在一起,二者相輔相承,它是單片機(jī)技術(shù)上的一個(gè)突破,這也是mcs-51單片機(jī)在設(shè)計(jì)的精美之處。3.2 最小應(yīng)用系統(tǒng)設(shè)計(jì)80c51是片內(nèi)有rom/eprom的單片機(jī),因此,這種芯片構(gòu)成的最小系統(tǒng)簡單可靠。用80c51單片機(jī)構(gòu)成最小應(yīng)用系統(tǒng)時(shí),只要將單片機(jī)接上時(shí)鐘電路和復(fù)位電路即可,如圖3-1 80c51單片機(jī)最小系統(tǒng)所示。由于集成度的限制,最小應(yīng)

26、用系統(tǒng)只能用作一些小型的控制單元。其應(yīng)用特點(diǎn):(1) 有可供用戶使用的大量i/o口線。(2) 內(nèi)部存儲(chǔ)器容量有限。(3) 應(yīng)用系統(tǒng)開發(fā)具有特殊性。圖3-1 80c51單片機(jī)最小系統(tǒng)3.2.1 時(shí)鐘電路80c51雖然有內(nèi)部振蕩電路,但要形成時(shí)鐘,必須外部附加電路。80c51單片機(jī)的時(shí)鐘產(chǎn)生方法有兩種。內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本設(shè)計(jì)采用內(nèi)部時(shí)鐘方式,利用芯片內(nèi)部的振蕩電路,在xtal1、xtal2引腳上外接定時(shí)元件,內(nèi)部的振蕩電路便產(chǎn)生自激振蕩。本設(shè)計(jì)采用最常用的內(nèi)部時(shí)鐘方式,即用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2mhz到12mhz之間選擇。電容值無嚴(yán)格要求,但電容取值對(duì)振蕩

27、頻率輸出的穩(wěn)定性、大小、振蕩電路起振速度有少許影響,cx1、cx2可在20pf到100pf之間取值,但在60pf到70pf時(shí)振蕩器有較高的頻率穩(wěn)定性。所以本設(shè)計(jì)中,振蕩晶體選擇6mhz,電容選擇65pf。時(shí)鐘電路如圖3-2。 圖3-2 80c51時(shí)鐘電路在設(shè)計(jì)印刷電路板時(shí),晶體和電容應(yīng)盡可能靠近單片機(jī)芯片安裝,以減少寄生電容,更好的保證振蕩器穩(wěn)定和可靠地工作。為了提高溫度穩(wěn)定性,應(yīng)采用npo電容。3.2.2 復(fù)位電路80c51的復(fù)位是由外部的復(fù)位電路來實(shí)現(xiàn)的。復(fù)位引腳rst通過一個(gè)斯密特觸發(fā)器用來抑制噪聲,在每個(gè)機(jī)器周期的s5p2,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位

28、操作所需要的信號(hào)。復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式。最簡單的上電自動(dòng)復(fù)位電路中上電自動(dòng)復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的。只要vcc的上升時(shí)間不超過1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位。時(shí)鐘頻率用6mhz時(shí)c取22uf,r取1k。除了上電復(fù)位外,有時(shí)還需要按鍵手動(dòng)復(fù)位。本設(shè)計(jì)就是用的按鍵手動(dòng)復(fù)位。按鍵手動(dòng)復(fù)位有電平方式和脈沖方式兩種。其中電平復(fù)位是通過rst端經(jīng)電阻與電源vcc接通而實(shí)現(xiàn)的。按鍵手動(dòng)復(fù)位電路見圖3-3。時(shí)鐘頻率選用6mhz時(shí),c取22uf,r2取200,r1取1k。圖3-3 80c51復(fù)位電路  在這種簡單的復(fù)位電路中,干擾容易串入復(fù)位端,在大多數(shù)情況下

29、不會(huì)造成單片機(jī)錯(cuò)誤復(fù)位,但會(huì)引起內(nèi)部某些寄存器錯(cuò)誤復(fù)位。這時(shí)可在復(fù)位引腳上接一個(gè)去耦電容。如果干擾嚴(yán)重,或整個(gè)系統(tǒng)干擾嚴(yán)重,引起單片機(jī)復(fù)位,可采用屏蔽的辦法解決,如加屏蔽網(wǎng)或移動(dòng)位置等。 在實(shí)際應(yīng)用中,為了保證復(fù)位電路可靠地工作,常將rc電路接施密特電路后接入單片機(jī)復(fù)位端,特別適合于應(yīng)用系統(tǒng)現(xiàn)場干擾大,電壓波動(dòng)大的工作環(huán)境,如圖3-4所示的抗干擾復(fù)位電路。 圖3-4 抗干擾復(fù)位電路3.3 總線驅(qū)動(dòng)芯片 max481、max483、max485、max487-max491以及max1487是用于rs-485與rs-422通信的低功耗收發(fā)器,每個(gè)器件中都具有一個(gè)驅(qū)動(dòng)器和一個(gè)接收器。max483、m

30、ax487、max488以及max489具有限擺率驅(qū)動(dòng)器,可以減小emi,并降低由不恰當(dāng)?shù)慕K端匹配電纜引起的反射,實(shí)現(xiàn)最高250kbps 的無差錯(cuò)數(shù)據(jù)傳輸。max481、max485、max490、max491、max1487的驅(qū)動(dòng)器擺率不受限制,可以實(shí)現(xiàn)最高2.5mbps的傳輸速率。這些收發(fā)器在驅(qū)動(dòng)器禁用的空載或滿載狀態(tài)下,吸取的電源電流在120(a 至500(a 之間。另外,max481、max483與max487具有低電流關(guān)斷模式, 僅消耗0.1a。所有器件都工作在5v單電源下。驅(qū)動(dòng)器具有短路電流限制,并可以通過熱關(guān)斷電路將驅(qū)動(dòng)器輸出置為高阻狀態(tài),防止過度的功率損耗。接收器輸入具有失效保

31、護(hù)特性,當(dāng)輸入開路時(shí),可以確保邏輯高電平輸出。max487與max1487具有四分之一單位負(fù)載的接收器輸入阻抗, 使得總線上最多可以有1 2 8 個(gè)max487/max1487收發(fā)器。使用max488-max491可以實(shí)現(xiàn)全雙工通信,而max481、max483、max485、max487與max1487則為半雙工應(yīng)用設(shè)計(jì)。max481/max483/max485/max487-max491以及max1487是用于rs-485與rs-422通信的低功耗收發(fā)器。max481、max485、max490、max491以及max1487能夠以最高2.5mbps 的數(shù)據(jù)速率發(fā)送并接收數(shù)據(jù);而max48

32、3、max487、max488以及max489則用于最高250kbps的數(shù)據(jù)速率。max488-max491是全雙工收發(fā)器,max481、max483、max485、max487以及max1487是半雙工收發(fā)器。另外,max481、max483、max485、max487、max489、max491以及max1487中包含驅(qū)動(dòng)器使能(de)與接收器使能(re)控制引腳,被禁用時(shí),驅(qū)動(dòng)器或接收器輸出為高阻態(tài)。 與標(biāo)準(zhǔn)rs-485 驅(qū)動(dòng)器( 最多32 個(gè)收發(fā)器) 的單位負(fù)載( 12k輸入阻抗) 相比,max487與max1487具有48k輸入電阻,1/4單位負(fù)載的接收器輸入阻抗,在一條總線上允許最

33、多掛接128個(gè)收發(fā)器。max487/max1487與其他rs-485收發(fā)器的任意組合可以允許32個(gè)收發(fā)器或更少的收發(fā)器連接在同一條總線上。max481/max483/max485與max488-max491具有標(biāo)準(zhǔn)的12k接收器輸入阻抗。常用的rs485總線驅(qū)動(dòng)芯片有max485、max3080、max3088、sn75176,max485、max3080、max3088芯片都有一個(gè)發(fā)送器和一個(gè)接收器,非常適合作為rs485總線驅(qū)動(dòng)芯片,其中max3080、max3088可以在一條通訊線上連接256只,max3088達(dá)到10mbps的通訊速率,下面以max485為例介紹其邏輯表。 max485

34、及其邏輯如圖3-5所示。圖3-5 max485芯片rs485方式構(gòu)成的多機(jī)通信原理在由單片機(jī)構(gòu)成的多機(jī)串行通信系統(tǒng)中,一般采用主從式結(jié)構(gòu):從機(jī)不主動(dòng)發(fā)送命令或數(shù)據(jù),一切都由主機(jī)控制。并且在一個(gè)多機(jī)通信系統(tǒng)中,只有一臺(tái)單機(jī)作為主機(jī),各臺(tái)從機(jī)之間不能相互通訊,即使有信息交換也必須通過主機(jī)轉(zhuǎn)發(fā)。采用rs485構(gòu)成的多機(jī)通信原理框圖,如圖3-6所示。圖3-6 max485典型半雙工rs-485網(wǎng)絡(luò)第4章 系統(tǒng)問題及其解決4.1 通信規(guī)則 由于max485通訊是一種半雙工通訊,發(fā)送和接收共用同一物理信道。在任意時(shí)刻只允許一臺(tái)單機(jī)處于發(fā)送狀態(tài)。因此要求應(yīng)答的單機(jī)必須在偵聽到總線上呼叫信號(hào)已經(jīng)發(fā)送完畢,并且

35、沒有其它單機(jī)發(fā)出應(yīng)答信號(hào)的情況下,才能應(yīng)答。半雙工通訊對(duì)主機(jī)和從機(jī)的發(fā)送和接收時(shí)序有嚴(yán)格的要求。如果在時(shí)序上配合不好,就會(huì)發(fā)生總線沖突,使整個(gè)系統(tǒng)的通訊癱瘓,無法正常工作。要做到總線上的設(shè)備在時(shí)序上的嚴(yán)格配合,必須要遵從以下幾項(xiàng)原則: (1) 復(fù)位時(shí),主從機(jī)都應(yīng)該處于接收狀態(tài)。 max485芯片的發(fā)送和接收功能轉(zhuǎn)換是由芯片的 re* ,de端控制的。re*=1,de=1時(shí),max485發(fā)送狀態(tài);re*=0,de=0時(shí),max485處于接收狀態(tài)。一般使用單片機(jī)的一根口線連接re*,de端。在上電復(fù)位時(shí),由于硬件電路穩(wěn)定需要一定的時(shí)間,并且單片機(jī)各端口復(fù)位后處于高電平狀態(tài),這樣就會(huì)使總線上各個(gè)分機(jī)

36、處于發(fā)送狀態(tài),加上上電時(shí)各電路的不穩(wěn)定,可能向總線發(fā)送信息。因此,如果用一根口線作發(fā)送和接收控制信號(hào),應(yīng)該將口線反向后接入max485的控制端,使上電時(shí)max485處于接收狀態(tài)。 另外,在主從機(jī)軟件上也應(yīng)附加若干處理措施,如:上電時(shí)或正式通訊之前,對(duì)串行口做幾次空操作,清除端口的非法數(shù)據(jù)和命令。 (2) 控制端re*,de的信號(hào)的有效脈寬應(yīng)該大于發(fā)送或接收一幀信號(hào)的寬度。 在全雙工通訊過程中,發(fā)送和接收信號(hào)分別在不同的物理鏈路上傳輸,發(fā)送端始終為發(fā)送端,接收端始終為接收端,不存在發(fā)送、接收控制信號(hào)切換問題。在rs485半雙工通訊中,由于max485的發(fā)送和接收都由同一器件完成,并且發(fā)送和接收使

37、用同一物理鏈路,必須對(duì)控制信號(hào)進(jìn)行切換??刂菩盘?hào)何時(shí)為高電平,何時(shí)為低電平,一般以單片機(jī)的txc(發(fā)送完成標(biāo)記),rxc(接收完成標(biāo)記)信號(hào)作參考。 發(fā)送時(shí),檢測txc是否建立起來,當(dāng)txc為高電平后關(guān)閉發(fā)送功能轉(zhuǎn)為接收功能; 接收時(shí),檢測rxc是否建立起來,當(dāng)rxc為高電平后,接收完畢,又可以轉(zhuǎn)為發(fā)送。 在理論上雖然行得通,但在實(shí)際聯(lián)調(diào)中卻出現(xiàn)傳輸數(shù)據(jù)時(shí)對(duì)時(shí)錯(cuò)的現(xiàn)象。根據(jù)查證有關(guān)資料,并借助示波器反復(fù)測試,才發(fā)現(xiàn)一個(gè)值得注意的問題,我們可以查看單片機(jī)的時(shí)序: 單片機(jī)在串行口發(fā)送數(shù)據(jù)時(shí),只要將8位數(shù)據(jù)位傳送完畢,txc標(biāo)志即建立,但此時(shí)應(yīng)發(fā)送的第九位數(shù)據(jù)位(若發(fā)送地址幀時(shí))和停止位尚未發(fā)出。如

38、果在這是關(guān)閉發(fā)送控制,勢必造成發(fā)送幀數(shù)據(jù)不完整。如果單片機(jī)多機(jī)通訊采用較高的波特率,幾條操作指令的延時(shí)就可能超過2位(或1位)數(shù)據(jù)的發(fā)送時(shí)間,問題或許不會(huì)出現(xiàn)。但是如果采用較低波特率,如9600,發(fā)送一位數(shù)據(jù)需104s左右,單靠幾條操作指令的延時(shí)遠(yuǎn)遠(yuǎn)不夠,問題就明顯地暴露出來。接收數(shù)據(jù)時(shí)也同樣如此,單片機(jī)在接收完8個(gè)數(shù)據(jù)位后就建立起rxc信號(hào),但此時(shí)還未接收到第九位數(shù)據(jù)位(若接收地址幀時(shí))和停止位。所以,接收端必須延時(shí)大于2位數(shù)據(jù)位的時(shí)間(1位數(shù)據(jù)位時(shí)間=1/波特率),再作應(yīng)答,否則會(huì)發(fā)生總線沖突。 (3) 總線上所連接的各單機(jī)的發(fā)送控制信號(hào)在時(shí)序上完全隔開。 為了保證發(fā)送和接收信號(hào)的完整和正

39、確,避免總線上信號(hào)的碰撞,對(duì)總線的使用權(quán)必須進(jìn)行分配才能避免競爭,連接到總線上的單機(jī),其發(fā)送控制信號(hào)在時(shí)間上要完全隔離。   總之,發(fā)送和接收控制信號(hào)應(yīng)該足夠?qū)?,以保證完整地接收一幀數(shù)據(jù),任意兩個(gè)單機(jī)的發(fā)送控制信號(hào)在時(shí)間上完全分開,避免總線爭端。  4.2 總線匹配 總線匹配有兩種方法,一種是加匹配電阻,位于總線兩端的差分端口va與vb之間應(yīng)跨接120匹配電阻,以減少由于不匹配而引起的反射、吸收噪聲,有效地抑制了噪聲干擾。但匹配電阻要消耗較大電流,不適用于功耗限制嚴(yán)格的系統(tǒng)。  另外一種比較省電的匹配方案是rc 匹配利用一只電容c 隔斷直流成分,可以節(jié)省大部分功率

40、,但電容c的取值是個(gè)難點(diǎn),需要在功耗和匹配質(zhì)量間進(jìn)行折衷。除上述兩種外還有一種采用二極管的匹配方案,這種方案雖未實(shí)現(xiàn)真正的匹配,但它利用二極管的鉗位作用,迅速削弱反射信號(hào)達(dá)到改善信號(hào)質(zhì)量的目的,節(jié)能效果顯著。 4.3 硬件抗干擾措施4.3.1 ro及di端配置上拉電阻 異步通信數(shù)據(jù)以字節(jié)的方式傳送,在每一個(gè)字節(jié)傳送之前,先要通過一個(gè)低電平起始位實(shí)現(xiàn)握手。為防止干擾信號(hào)誤觸發(fā)ro(接收器輸出)產(chǎn)生負(fù)跳變,使接收端mcu進(jìn)入接收狀態(tài),建議ro外接10k上拉電阻。 保證系統(tǒng)上電時(shí)的rs-485芯片處于接收輸入狀態(tài) 。對(duì)于收發(fā)控制端de建議采用mcu引腳通過反相器進(jìn)行控制,不宜采用mcu引腳直接進(jìn)行控

41、制,以防止mcu上電時(shí)對(duì)總線的干擾。  4.3.2 地線與接地 電子系統(tǒng)的接地是一個(gè)非常關(guān)鍵而又常常被忽視的問題,接地處理不當(dāng)經(jīng)常會(huì)導(dǎo)致不能穩(wěn)定工作甚至危及系統(tǒng)安全。對(duì)于rs-485網(wǎng)絡(luò)來講也是一樣,沒有一個(gè)合理的接地系統(tǒng)可能會(huì)使系統(tǒng)的可靠性大打折扣,尤其是在工作環(huán)境比較惡劣的情況下,對(duì)于接地的要求更為嚴(yán)格。有關(guān)rs-485網(wǎng)絡(luò)的接地問題很少有資料提及,在設(shè)計(jì)者中也存在著很多誤區(qū),致使通信可靠性降低、接口損壞率較高。一個(gè)典型的錯(cuò)誤觀點(diǎn)就是認(rèn)為rs-485通信鏈路不需要信號(hào)地,而只是簡單地用一對(duì)雙絞線將各個(gè)接口的"a"、"b"端連接起來。這種處理

42、方法在某些情況下也可以工作,但給系統(tǒng)埋下了隱患,主要有以下兩方面的問題: 共模干擾問題:的確,rs-485接口采用差分方式傳輸信號(hào),并不需要相對(duì)于某個(gè)參照點(diǎn)來檢測信號(hào),系統(tǒng)只需檢測兩線之間的電位差就可以了。但應(yīng)該注意的是,收發(fā)器只有在共模電壓不超出一定范圍(-7v至+12v)的條件下才能正常工作。當(dāng)共模電壓超出此范圍就會(huì)影響通信的可靠,直至損壞接口。當(dāng)發(fā)送器a向接收器b發(fā)送數(shù)據(jù)時(shí),發(fā)送器a的輸出共模電壓為vos,由于兩個(gè)系統(tǒng)具有各自獨(dú)立的接地系統(tǒng),存在著地電位差vgpd。那么,接收器輸入端的共模電壓就會(huì)達(dá)到vcm=vos+vgpd。rs-485標(biāo)準(zhǔn)規(guī)定vos3v,但vgpd可能會(huì)有很大幅度(十

43、幾伏甚至數(shù)十伏),并可能伴有強(qiáng)干擾信號(hào),致使接收器共模輸入vcm超出正常范圍,并在信號(hào)線上產(chǎn)生干擾電流,輕則影響正常通信,重則損壞接口。 4.3.3 電磁干擾(emi)問題 驅(qū)動(dòng)器輸出信號(hào)中的共模部分需要一個(gè)返回通路,如果沒有一個(gè)低阻的返回通道(信號(hào)地),就會(huì)以輻射的形式返回源端,整個(gè)總線就會(huì)像一個(gè)巨大的天線向外輻射電磁波。因此,盡管是差分傳輸,對(duì)于rs-485網(wǎng)絡(luò)來講,一條低阻的信號(hào)地還是必不可少的。一條低阻的信號(hào)地將兩個(gè)接口的工作地連接起來,使共模干擾電壓vgpd被短路。這條信號(hào)地可以是額外的一對(duì)線(非屏蔽雙絞線)、或者是屏蔽雙絞線的屏蔽層。值得注意的是,這種做法僅對(duì)高阻型共模干擾有效,由

44、于干擾源內(nèi)阻大,短接后不會(huì)形成很大的接地環(huán)路電流,對(duì)于通信不會(huì)有很大影響。當(dāng)共模干擾源內(nèi)阻較低時(shí),會(huì)在接地線上形成較大的環(huán)路電流,影響正常通信。筆者認(rèn)為,可以采取以下三種措施: a、若干擾源內(nèi)阻不是非常小,可以考慮在接地線上加限流電阻限制干擾電流。接地電阻的增加可能會(huì)使共模電壓升高,但只要控制在適當(dāng)?shù)姆秶鷥?nèi)就不會(huì)影響正常通信; b、采用浮地技術(shù),隔斷接地環(huán)路。當(dāng)共模干擾內(nèi)阻很小時(shí)上述方法已不能奏效,此時(shí)可以考慮將引入干擾的節(jié)點(diǎn)(例如處于惡劣的工作環(huán)境的現(xiàn)場儀表)浮置起來(也就是系統(tǒng)的電路地與機(jī)殼或大地隔離),這樣就隔斷了接地環(huán)路,不會(huì)形成很大的環(huán)路電流; c、采用隔離接口。有些情況下,出于安全

45、或其他方面的考慮,電路地必須與機(jī)殼或大地相連,不能懸浮,這時(shí)可以采用隔離接口來隔斷接地回路,但是仍然應(yīng)該有一條地線將隔離側(cè)的公共端與其它接口的工作地相連。 4.3.4 瞬態(tài)保護(hù)  前面提到的接地措施只對(duì)低頻率的共模干擾有保護(hù)作用,對(duì)于頻率很高的瞬態(tài)干擾就無能為力了。因?yàn)橐€電感的作用,對(duì)于高頻瞬態(tài)干擾來講,接地線實(shí)際等同于開路。這樣的瞬態(tài)干擾可能會(huì)有成百上千伏的電壓,但持續(xù)時(shí)間很短。在切換大功率感性負(fù)載(電機(jī)、變壓器、繼電器等)、閃電等過程中都會(huì)產(chǎn)生幅度很高的瞬態(tài)干擾,如果不加以適當(dāng)防護(hù)就會(huì)損壞接口。對(duì)于這種瞬態(tài)干擾可以采用隔離或旁路的方法加以防護(hù)。   隔離保護(hù)方案:這種

46、方案實(shí)際上將瞬態(tài)高壓轉(zhuǎn)移到隔離接口中的電隔離層上,由于隔離層的高絕緣電阻,不會(huì)產(chǎn)生損害性的浪涌電流,起到保護(hù)接口的作用。通常采用高頻變壓器、光耦等元件實(shí)現(xiàn)接口的電氣隔離,已有器件廠商將所有這些元件集成在一片ic中,使用起來非常簡便,如maxim公司的max1480/max1490,隔離電壓可以到2500v。這種方案的優(yōu)點(diǎn)是可以承受高電壓、持續(xù)時(shí)間較長的瞬態(tài)干擾,實(shí)現(xiàn)起來也比較容易,缺點(diǎn)是成本較高。 旁路保護(hù)方案:這種方案利用瞬態(tài)抑制元件(如tvs、mov、氣體放電管等)將危害性的瞬態(tài)能量旁路到大地,優(yōu)點(diǎn)是成本較低,缺點(diǎn)是保護(hù)能力有限,只能保護(hù)一定能量以內(nèi)的瞬態(tài)干擾,持續(xù)時(shí)間不能很長,而且需要有

47、一條良好的連接大地的通道,實(shí)現(xiàn)起來比較困難。 實(shí)際應(yīng)用中可以將二者結(jié)合起來靈活運(yùn)用。隔離接口對(duì)大幅度瞬態(tài)干擾進(jìn)行隔離,而旁路元件保護(hù)隔離接口不被過高的瞬態(tài)電壓擊穿。 4.3.5 總線隔離 rs-485總線為并接式二線制接口,一旦有一只芯片故障就可能將總線“拉死”,因此對(duì)其二線口va、vb與總線之間應(yīng)加以隔離。通常在va、vb與總線之間各串接一只410的ptc電阻,同時(shí)與地之間各跨接5v的tvs二極管,以消除線路浪涌干擾。此外應(yīng)該合理選用芯片。例如,對(duì)外置設(shè)備為防止強(qiáng)電磁(雷電)沖擊,建議選用防雷擊芯片。 4.4 軟件抗干擾措施4.4.1 指令冗余 cpu取指令過程是先取操作碼,再取操作數(shù)。當(dāng)p

48、c受干擾出現(xiàn)錯(cuò)誤,程序便脫離正常軌道“亂飛”,當(dāng)亂飛到某雙字節(jié)指令,若取指令時(shí)刻落在操作數(shù)上,誤將操作數(shù)當(dāng)作操作碼,程序?qū)⒊鲥e(cuò)。若“飛” 到了三字節(jié)指令,出錯(cuò)機(jī)率更大。 在關(guān)鍵地方人為插入一些單字節(jié)指令,或?qū)⒂行巫止?jié)指令重寫稱為指令冗余。通常是在雙字節(jié)指令和三字節(jié)指令后插入兩個(gè)字節(jié)以上的nop。這樣即使亂飛程序飛到操作數(shù)上,由于空操作指令nop的存在,避免了后面的指令被當(dāng)作操作數(shù)執(zhí)行,程序自動(dòng)納入正軌。此外,對(duì)系統(tǒng)流向起重要作用的指令如ret、 reti、lcall、ljmp、jc等指令之前插入兩條nop,也可將亂飛程序納入正軌,確保這些重要指令的執(zhí)行。4.4.2 攔截技術(shù) 所謂攔截,是指將

49、亂飛的程序引向指定位置,再進(jìn)行出錯(cuò)處理。通常用軟件陷阱來攔截亂飛的程序。因此先要合理設(shè)計(jì)陷阱,其次要將陷阱安排在適當(dāng)?shù)奈恢谩?(1)軟件陷阱的設(shè)計(jì) 當(dāng)亂飛程序進(jìn)入非程序區(qū),冗余指令便無法起作用。通過軟件陷阱,攔截亂飛程序,將其引向指定位置,再進(jìn)行出錯(cuò)處理。軟件陷阱是指用來將捕獲的亂飛程序引向復(fù)位入口地址0000h的指令。通常在eprom中非程序區(qū)填入以下指令作為軟件陷阱:nopnopljmp 0000h其機(jī)器碼為0000020000。(2) 陷阱的安排 通常在程序中未使用的eprom空間填0000020000。最后一條應(yīng)填入020000,當(dāng)亂飛程序落到此區(qū),即可自動(dòng)入軌。在用戶程序區(qū)各模塊之間

50、的空余單元也可填入陷阱指令。當(dāng)使用的中斷因干擾而開放時(shí),在對(duì)應(yīng)的中斷服務(wù)程序中設(shè)置軟件陷阱,能及時(shí)捕獲錯(cuò)誤的中斷。如某應(yīng)用系統(tǒng)雖未用到外部中斷1,外部中斷1的中斷服務(wù)程序可為如下形式: nopnopreti返回指令可用“reti”,也可用“l(fā)jmp 0000h”。如果故障診斷程序與系統(tǒng)自恢復(fù)程序的設(shè)計(jì)可靠、 完善,用“l(fā)jmp 0000h”作返回指令可直接進(jìn)入故障診斷程序,盡早地處理故障并恢復(fù)程序的運(yùn)行。 考慮到程序存貯器的容量,軟件陷阱一般1k空間有2-3個(gè)就可以進(jìn)行有效攔截。 4.4.3 軟件“看門狗”技術(shù) 若失控的程序進(jìn)入“死循環(huán)”,通常采用“看門狗”技術(shù)使程序脫離“死循環(huán)”。通過不斷檢

51、測程序循環(huán)運(yùn)行時(shí)間,若發(fā)現(xiàn)程序循環(huán)時(shí)間超過最大循環(huán)運(yùn)行時(shí)間,則認(rèn)為系統(tǒng)陷入“死循環(huán)”,需進(jìn)行出錯(cuò)處理。“看門狗”技術(shù)可由硬件實(shí)現(xiàn),也可由軟件實(shí)現(xiàn)。在工業(yè)應(yīng)用中,嚴(yán)重的干擾有時(shí)會(huì)破壞中斷方式控制字,關(guān)閉中斷。則系統(tǒng)無法定時(shí)“喂狗”,硬件看門狗電路失效。而軟件看門狗可有效地解決這類問題。 在實(shí)際應(yīng)用中,采用環(huán)形中斷監(jiān)視系統(tǒng)。用定時(shí)器t0監(jiān)視定時(shí)器t1,用定時(shí)器t1監(jiān)視主程序,主程序監(jiān)視定時(shí)器t0。采用這種環(huán)形結(jié)構(gòu)的軟件“看門狗”具有良好的抗干擾性能,大大提高了系統(tǒng)可靠性。對(duì)于需經(jīng)常使用t1定時(shí)器進(jìn)行串口通訊的測控系統(tǒng),則定時(shí)器t1不能進(jìn)行中斷,可改由串口中斷進(jìn)行監(jiān)控。這種軟件“看門狗”監(jiān)視原理是:

52、在主程序、t0中斷服務(wù)程序、t1中斷服務(wù)程序中各設(shè)一運(yùn)行觀測變量,假設(shè)為mwatch、t0watch 、t1watch,主程序每循環(huán)一次,mwatch加1,同樣t0、t1中斷服務(wù)程序執(zhí)行一次,t0watch、 t1watch加1。在t0中斷服務(wù)程序中通過檢測t1watch的變化情況判定t1運(yùn)行是否正常,在t1中斷服務(wù)程序中檢測mwatch的變化情況判定主程序是否正常運(yùn)行,在主程序中通過檢測t0watch的變化情況判別t0是否正常工作。若檢測到某觀測變量變化不正常,比如應(yīng)當(dāng)加1而未加1,則轉(zhuǎn)到出錯(cuò)處理程序作排除故障處理。當(dāng)然,對(duì)主程序最大循環(huán)周期、定時(shí)器t0和t1定時(shí)周期應(yīng)予以全盤合理考慮。4.

53、5 失效保護(hù) rs-485標(biāo)準(zhǔn)規(guī)定接收器門限為±200mv。這樣規(guī)定能夠提供比較高的噪聲抑制能力,但同時(shí)也帶來了一個(gè)問題:當(dāng)總線電壓在±200mv中間時(shí)接收器輸出狀態(tài)不確定。由于uart以一個(gè)前導(dǎo)"0"觸發(fā)一次接收動(dòng)作,所以接收器的不定態(tài)可能會(huì)使uart錯(cuò)誤地接收一些數(shù)據(jù),導(dǎo)致系統(tǒng)誤動(dòng)作。當(dāng)總線空閑、開路或短路時(shí)都有可能出現(xiàn)兩線電壓差低于200mv的情況,必須采取一定措施避免接收器處于不定態(tài)。傳統(tǒng)的做法是給總線加偏置,當(dāng)總線空閑或開路時(shí),利用偏置電阻將總線偏置在一個(gè)確定的狀態(tài)(差分電壓200mv)。但這種方法仍然不能解決總線短路時(shí)的問題,為此,有些器件制

54、造商將接收門限移到-200mv/-50mv,巧妙地解決了這個(gè)問題。例如maxim公司為max3080系列rs-485接口,不但省去了外部偏置電阻,而且解決了總線短路情況下的失效保護(hù)問題。  第5章 軟件設(shè)計(jì)5.1 系統(tǒng)結(jié)構(gòu) 該多機(jī)通信系統(tǒng)的系統(tǒng)結(jié)構(gòu)圖如圖5-1所示,系統(tǒng)采用半雙工主從通信方式,主機(jī)可以讀取從機(jī)的數(shù)據(jù)或?qū)憯?shù)據(jù)到從機(jī),并將數(shù)據(jù)送終端進(jìn)行顯示;從機(jī)主要負(fù)責(zé)對(duì)分布的電子設(shè)備進(jìn)行監(jiān)測或控制,用中斷的方式接收主機(jī)發(fā)來的命令并做出回應(yīng)。圖5-1 系統(tǒng)結(jié)構(gòu)圖5.2 通信協(xié)議5.2.1 信息格式該協(xié)議的信息格式如下: (1)編碼格式;二進(jìn)制代碼。 (2)波特率:9600 b/s。 (3

55、)通信方式:半雙工。 (4)每個(gè)字符由u 位組成; 1位:起始位(0); 8位:數(shù)據(jù)位; 1位:地址數(shù)據(jù)識(shí)別位(1為地址,o為數(shù)據(jù)); l位:停止位(1)。 (5)字符發(fā)送順序;低位在先 (6)幀結(jié)束標(biāo)志:通信線路空閑3.5 ms以上 (7)幀校驗(yàn)方式:數(shù)據(jù)和(2字節(jié))(8)主機(jī)詢問的一般格式見表5-2:表5-2 主機(jī)詢問的一般格式 從機(jī)地址碼:兩字節(jié)二進(jìn)制數(shù),后一字節(jié)是前一字節(jié)的反碼。命令碼:一字節(jié)二進(jìn)制數(shù),o1h代表主機(jī)讀,02h代表主機(jī)寫。數(shù)據(jù)個(gè)數(shù):表示主機(jī)要讀寫的字節(jié)個(gè)數(shù),一字節(jié)二進(jìn)制數(shù)。校驗(yàn)和:兩字節(jié)二進(jìn)制數(shù),是將從機(jī)地址碼、命令和數(shù)據(jù)按字節(jié)從頭依次相加,生成兩字節(jié)的校驗(yàn)和。 (9)從機(jī)應(yīng)答的一般格式(如表5-3)表5-3 從機(jī)應(yīng)答的一般格式圖中信息段的定義同圖2。5.2.2 定時(shí)與重發(fā) 本通信協(xié)議定時(shí)規(guī)定如下: (1)幀發(fā)送時(shí)限;70 ms超過此時(shí)限結(jié)束發(fā)送。 (2)主機(jī)等待從機(jī)應(yīng)答時(shí)限:7 ms,超過此時(shí)限,酌情重發(fā)。 (3)主機(jī)重發(fā)次數(shù):不超過4次,超過后,判通信失敗。5.2.3 通信過程 一次完整的通信過程分為3個(gè)階段:主機(jī)詢問、從機(jī)應(yīng)答和鏈路釋放。主機(jī)詢問階段,主機(jī)以幀的形式將從機(jī)地址碼、命令、數(shù)據(jù)和校驗(yàn)碼傳送到指定從機(jī);從

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論