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

下載本文檔

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

文檔簡介

摘要在多機(jī)通信領(lǐng)域.由于單片機(jī)具備靈活高效多機(jī)通信功能和價(jià)格優(yōu)勢,應(yīng)用越來越廣泛,但由于單片機(jī)收發(fā)信號都是TTI電平,驅(qū)動(dòng)能力和抗干擾性有限,實(shí)用中常配合其他總線實(shí)現(xiàn)互聯(lián),RS-485總線就是其中之一。RS-485總線是平衡差分傳播,抗干擾性好,最遠(yuǎn)可傳播4000m,可互聯(lián)多達(dá)128個(gè)單片機(jī),非常適臺構(gòu)成多機(jī)通信系統(tǒng)。在多機(jī)通信中,最重要是保證通信有條不紊地進(jìn)行,因而需要嚴(yán)格通信合同和完善通信軟件,本文將重點(diǎn)簡介應(yīng)用于某大型工程單片機(jī)多機(jī)通信協(xié)議和通信軟件設(shè)計(jì)辦法。本文簡介一種運(yùn)用單片機(jī)自身所提供串行通訊口,采用自定義串行通信合同,加上總線驅(qū)動(dòng)器如MAX481、MAX483、MAX485、MAX487等組合成簡樸RS-485通訊網(wǎng)絡(luò),完畢單片機(jī)間多機(jī)通訊。核心詞:單片機(jī);串行通信;RS-485總線:多機(jī)通信合同

AbstractIncomputercommunicationfield.Becauseofthesinglechipmicrocomputerhasflexibleandefficientcomputercommunicationfunctionandpriceadvantage,usedmoreandmorewidely,butbecauseofthesinglechipmicrocomputertosendandreceivesignalsareTTIlevel,driveandanti-interferenceabilityislimited,practicalcooperationwithotherbusrealizeinInternet,RS-485busisoneofthem.RS-485busisabalanceddifferentialtransmission,anti-jammingofthegoodandasfaras4000mcouldbetransmitted,interconnectedasmanyas128singlechipmicrocomputer,verycomfortableacompositioncomputercommunicationsystem.Incomputercommunication,themostimportantistoensurethatcommunicationsinanorderlyway,andthereforeneedtostrictcommunicationprotocolandperfectcommunicationsoftware,thispaperwillfocusonintroducesappliedinalargeprojectsingle-chipcomputercommunicationassociationPutthecommunicationsoftwaredesignmethod.Thispaperintroducesamicrocontrolleritselfprovidetheserialcommunicationmouth,usecustomserialcommunicationprotocol,plusthebusdrivesasMAX481,MAX483,MAX485,MAX487combinedintosimpleRS-485communicationnetwork,finishbetweenthesinglechipcomputercommunication.Keywords:SCM;Serialcommunication;RS-485bus:computercommunicationagreement目錄第1章緒論 11.1課題研究背景與意義 11.2單片機(jī)多機(jī)通信發(fā)展 1第2章總體簡介 32.1系統(tǒng)構(gòu)成 32.2RS-485 32.3多機(jī)通信原理 4第3章硬件設(shè)計(jì)及原理 63.180C51單片機(jī)硬件構(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.1RO及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)構(gòu)造 195.2通信合同 195.2.1信息格式 195.2.2定期與重發(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ī)存儲器RAM、只讀存儲器ROM、各種I/O口和中斷系統(tǒng)、定期器/計(jì)時(shí)器等功能(也許還涉及顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模仿多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成一種小而完善計(jì)算機(jī)系統(tǒng)當(dā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)場規(guī)定,因而必要采用多機(jī)控制形式,而多機(jī)控制重要通過各種單片機(jī)之間串行通信實(shí)現(xiàn)。串行通信作為單片機(jī)之間慣用通信辦法之一,由于其通信編程靈活、硬件簡潔并遵循統(tǒng)一原則,因而其在工業(yè)控制領(lǐng)域得到了廣泛應(yīng)用。構(gòu)成較大規(guī)模檢測、控制系統(tǒng),經(jīng)常要采用各種單片機(jī),構(gòu)成可以通信多機(jī)系統(tǒng)。Mcs一51系列單片機(jī)為實(shí)現(xiàn)多機(jī)通信聯(lián)網(wǎng)設(shè)計(jì)了以便串行通信接口功能。將各種Mcs一51單片機(jī)構(gòu)成串行總線形式互相通道,通過寫單片機(jī)串行控制方式寄存器,將串行口置成方式2或方式3,就可以實(shí)現(xiàn)主機(jī)與分機(jī)之間串行通信。這種多機(jī)系統(tǒng)構(gòu)造簡樸,應(yīng)用廣泛,但它只能實(shí)現(xiàn)由主機(jī)呼喊分機(jī),然后實(shí)現(xiàn)主機(jī)與分機(jī)之間全雙工串行通信。咱們在監(jiān)控系統(tǒng)中規(guī)定既有主機(jī)與分機(jī)積極通信,又有分機(jī)與主機(jī)積極通信,這種構(gòu)造多機(jī)系統(tǒng)就無法滿足規(guī)定。多機(jī)協(xié)同工作已是單片機(jī)發(fā)展一種重要趨勢,當(dāng)前單片機(jī)多機(jī)通信重要方式依然是主從式多機(jī)通信系統(tǒng)。單片機(jī)多機(jī)通信目是實(shí)現(xiàn)分布式解決系統(tǒng),單片機(jī)多機(jī)通信方式有諸各種,應(yīng)用前景遼闊,非常具備研究意義!1.2單片機(jī)多機(jī)通信發(fā)展隨著科技發(fā)展,單片機(jī)已不是一種陌生名詞,它浮現(xiàn)是近代計(jì)算機(jī)技術(shù)發(fā)展史上一種重要里程碑,由于單片機(jī)誕生標(biāo)志著計(jì)算機(jī)正式形成了通用計(jì)算機(jī)系統(tǒng)和嵌入式計(jì)算機(jī)系統(tǒng)兩大分支。單片機(jī)單芯片微小體積和低成本,可廣泛地嵌入到如玩具、家用電器、機(jī)器人、儀器儀表、汽車電子系統(tǒng)、工業(yè)控制單元、辦公自動(dòng)化設(shè)備、金融電子系統(tǒng)、艦船、個(gè)人信息終端及通訊產(chǎn)品中,成為當(dāng)代電子系統(tǒng)中最重要智能化工具。所涉及市場占有率最高是MCS—51系列,由于世界上諸多知名IC生產(chǎn)廠家都生產(chǎn)51兼容芯片。生產(chǎn)MCS—51系列單片機(jī)廠家如美國AMD公司、ATMEL公司、INTEL公司、WINBOND公司、PHILIPS公司、ISSI公司、TEMIC公司及南韓LG公司、日本NEC、西門子公司等。到當(dāng)前為止,MCS—51單片機(jī)已有數(shù)百個(gè)品種,還在不斷推出功能更強(qiáng)新產(chǎn)品。當(dāng)代單片機(jī)普遍具備通信接口,可以很以便地與計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信,為在計(jì)算機(jī)網(wǎng)絡(luò)和通信設(shè)備間應(yīng)用提供了極好物質(zhì)條件,當(dāng)前通信設(shè)備基本上都實(shí)現(xiàn)了單片機(jī)智能控制,從手機(jī),電話機(jī)、小型程控互換機(jī)、樓宇自動(dòng)通信呼喊系統(tǒng)、列車無線通信、再到尋常工作中隨處可見移動(dòng)電話,集群移動(dòng)通信,無線電對講機(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ī)通信已有較長研究歷史了,但其形式大多是主從式,很少是平權(quán)式。第2章總體簡介2.1系統(tǒng)構(gòu)成本設(shè)計(jì)采用MCS-51系列中80C51單片機(jī)。80C51是一款八位單片機(jī),它易用性和多功能性受到了廣大使用者好評。它是第三代單片機(jī)代表。新一代單片機(jī)最重要技術(shù)特點(diǎn)是向外部接口電路擴(kuò)展,以實(shí)現(xiàn)Microcomputer完善控制功能為己任,將某些外部接口功能單元如A/D﹑PWM﹑PCA(可編程計(jì)數(shù)器陣列)﹑WDT(監(jiān)視定期器)﹑高速I/O口﹑計(jì)數(shù)器捕獲/比較邏輯等。這一代單片機(jī)中,在總線方面最重要進(jìn)展是為單片機(jī)配備了芯片間串行總線,為單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)提供了更加靈活方式。Philips公司還為這一代單片機(jī)80C51系列8xC592單片機(jī)引入了具備較強(qiáng)功能設(shè)備間網(wǎng)絡(luò)系統(tǒng)總線CAN(ControllerAreaNetworkBUS).新一代單片機(jī)為外部提供了相稱完善總線構(gòu)造,為系統(tǒng)擴(kuò)展與配備打下了良好基本。菲利浦公司研發(fā)LPC900系列單片機(jī)是一種基于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是一款單片封裝微控制器,合用于許多規(guī)定高集成度、低成本場合。它采用了高性能解決器構(gòu)造,指令執(zhí)行時(shí)間只需要2-4個(gè)時(shí)鐘周期,6倍于原則80C51器件。2.2RS-485RS-485原則接口是單片機(jī)系統(tǒng)種慣用一種串行總線之一。RS-485通信方式RS-485原則是由EIA(電子工業(yè)協(xié)會)和TIA(通訊工業(yè)協(xié)會)共同制定和開發(fā)。RS-485作為一種多點(diǎn)差分?jǐn)?shù)據(jù)傳播電氣規(guī)范,已成為業(yè)界最廣泛應(yīng)用原則通信接口之一。理論上,RS-485原則最多接入32個(gè)設(shè)備(受芯片驅(qū)動(dòng)能力影響),可以工作在半雙工或全雙工模式下,最大傳播距離約為1219米,最大傳播速率約為10Mbps[1]。然而普通RS-485網(wǎng)絡(luò)采用平衡雙絞線作為傳播媒體,平衡雙絞線長度與傳播速率成反比,只有在20Kbps傳播速率下,才也許達(dá)到最大傳播距離。普通15米長雙絞線最大傳播速率僅為1Mbps。但是對于速率規(guī)定不是很高控制系統(tǒng)來說已經(jīng)足夠了。RS-485采用平衡發(fā)送和差分接受方式來實(shí)現(xiàn)通信:在發(fā)送端TXD將串行口TTL電平信號轉(zhuǎn)換成差分信號A、B兩路輸出,經(jīng)傳播后在接受端將差分信號還原成TTL電平信號。兩條傳播線普通使用雙絞線,又是差分傳播,因而有極強(qiáng)抗共模干擾能力,接受敏捷度也相稱高。同步,最大傳播速率和最大傳播距離也大大提高。如果以10Kbps速率傳播數(shù)據(jù)時(shí)傳播距離可達(dá)12m,而用100Kbps時(shí)傳播距離可達(dá)1.2km。如果減少波特率,傳播距離還可進(jìn)一步提高。此外RS-485實(shí)現(xiàn)了多點(diǎn)互連,最多可達(dá)256臺驅(qū)動(dòng)器和256臺接受器,非常便于多器件連接。不但可以實(shí)現(xiàn)半雙工通信,并且可以實(shí)現(xiàn)全雙工通信。2.3多機(jī)通信原理在多機(jī)通信中,每臺從機(jī)均分派有一種從機(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ù)辨認(rèn)技術(shù),則這些從機(jī)就會由于串行通信線上有數(shù)據(jù)傳播而時(shí)時(shí)被打斷,影響正常工作。運(yùn)用單片機(jī)串口工作方式2、方式3可以較好解決上述問題。在多機(jī)通信過程中,從機(jī)一方面要解決是如何辨認(rèn)主機(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)串口中斷。解決辦法是:當(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中控制位SM2置為1,為下一次與主機(jī)進(jìn)行通信做好準(zhǔn)備。其她從機(jī)則始終在SM2=1下繼續(xù)自己工作,不會由于主、從機(jī)之間數(shù)據(jù)通信而被打斷。多機(jī)通信實(shí)現(xiàn),重要靠主、從機(jī)對的地設(shè)立與判斷多機(jī)通信控制位SM2和發(fā)送或接受第9位數(shù)據(jù)(TB8或RB8)。當(dāng)主機(jī)給從機(jī)發(fā)送信息時(shí),要依照發(fā)送信息性質(zhì)來設(shè)立TB8,發(fā)送地址信號時(shí),設(shè)立TB8=1;發(fā)送數(shù)據(jù)或命令時(shí),設(shè)立TB8=0。當(dāng)從機(jī)SM2為1時(shí),該從機(jī)只接受地址幀(RB8位為1),對數(shù)據(jù)幀(RB8位為0)將不予理睬。而當(dāng)SM2為0時(shí),該從機(jī)接受所有發(fā)送來信息。多機(jī)通信過程如下:使所有從機(jī)SM2置1,處在只接受地址幀狀態(tài)(即從機(jī)復(fù)位);主機(jī)發(fā)送一地址幀信息,其中包括8位地址,第9位為地址、數(shù)據(jù)標(biāo)志位,第9位置1表達(dá)發(fā)送是地址;從機(jī)接受到地址幀后,各自中斷CPU,把接受到地址與本地址作比較;地址相符從機(jī),使SM2清零以接受主機(jī)隨后發(fā)來所有信息,對于地址不相符從機(jī),仍保持SM2=1狀態(tài),對主機(jī)隨后發(fā)送數(shù)據(jù)不予理睬,直到主機(jī)發(fā)送來新地址幀;主機(jī)發(fā)送數(shù)據(jù)或控制信息給被尋址從機(jī);被尋址從機(jī),因SM2=0,可以接受主機(jī)發(fā)送過來所有數(shù)據(jù),當(dāng)從機(jī)接受數(shù)據(jù)結(jié)束時(shí),置位SM2,返回接受地址幀狀態(tài)(復(fù)位狀態(tài));當(dāng)主機(jī)改為與此外從機(jī)聯(lián)系時(shí),可再發(fā)地址幀尋址其從機(jī),而先前被尋址過從機(jī)恢復(fù)SM2=1。第3章硬件設(shè)計(jì)及原理一種單片機(jī)應(yīng)用系統(tǒng)硬件電路設(shè)計(jì)包具有兩某些內(nèi)容:一是系統(tǒng)擴(kuò)展,即單片機(jī)內(nèi)部功能單元,如ROM﹑RAM﹑I/O口﹑定期/記數(shù)器﹑中斷系統(tǒng)等能量不能滿足應(yīng)用系統(tǒng)規(guī)定期,必要在片外進(jìn)行擴(kuò)展,選取恰當(dāng)芯片,設(shè)計(jì)相應(yīng)電路。二是系統(tǒng)配備,既按照系統(tǒng)功能規(guī)定配備外圍設(shè)備,如鍵盤顯示屏﹑打印機(jī)﹑A/D﹑D/A轉(zhuǎn)換器等,要設(shè)計(jì)適當(dāng)接口電路。3.180C51單片機(jī)硬件構(gòu)造80C51單片機(jī)是把那些作為控制應(yīng)用所必須基本內(nèi)容都集成在一種尺寸有限集成電路芯片上[2]。如果按功能劃分,它由如下功能部件構(gòu)成,即微解決器、數(shù)據(jù)存儲器、程序存儲器、并行I/O口、串行口、定期器/計(jì)數(shù)器、中斷系統(tǒng)及特殊功能寄存器。它們都是通過片內(nèi)單一總線連接而成,其基本構(gòu)造仍舊是CPU加上外圍芯片老式構(gòu)造模式。但對各種功能部件控制是采用特殊功能寄存器集中控制方式。微解決器:該單片機(jī)中有一種8位微解決器,與通用微解決器基本相似,同樣涉及了運(yùn)算器和控制器兩大某些,只是增長了面向控制解決功能,不但可解決數(shù)據(jù),還可以進(jìn)行位變量解決。數(shù)據(jù)存儲器:片內(nèi)為128個(gè)字節(jié),片外最多可外擴(kuò)至64k字節(jié),用來存儲程序在運(yùn)營期間工作變量、運(yùn)算中間成果、數(shù)據(jù)暫存和緩沖、標(biāo)志位等,因此稱為數(shù)據(jù)存儲器。程序存儲器:由于受集成度限制,片內(nèi)只讀存儲器普通容量較小,如果片內(nèi)只讀存儲器容量不夠,則需用擴(kuò)展片外只讀存儲器,片外最多可外擴(kuò)至64k字節(jié)。中斷系統(tǒng):具備5個(gè)中斷源,2級中斷優(yōu)先權(quán)。定期器/計(jì)數(shù)器:片內(nèi)有2個(gè)16位定期器/計(jì)數(shù)器,具備四種工作方式。串行口:1個(gè)全雙工串行口,具備四種工作方式??捎脕磉M(jìn)行串行通訊,擴(kuò)展并行I/O口,甚至與各種單片機(jī)相連構(gòu)成多機(jī)系統(tǒng),從而使單片機(jī)功能更強(qiáng)且應(yīng)用更廣。P1口、P2口、P3口、P4口:為4個(gè)并行8位I/O口。特殊功能寄存器:共有21個(gè),用于對片內(nèi)個(gè)功能部件進(jìn)行管理、控制、監(jiān)視。事實(shí)上是某些控制寄存器和狀態(tài)寄存器,是一種具備特殊功能RAM區(qū)。由上可見,80C51單片機(jī)硬件構(gòu)造具備功能部件種類全,功能強(qiáng)等特點(diǎn)。特別值得一提是該單片機(jī)CPU中位解決器,它事實(shí)上是一種完整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ù)上一種突破,這也是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-180C51單片機(jī)最小系統(tǒng)所示。由于集成度限制,最小應(yīng)用系統(tǒng)只能用作某些小型控制單元。其應(yīng)用特點(diǎn):有可供顧客使用大量I/O口線。內(nèi)部存儲器容量有限。應(yīng)用系統(tǒng)開發(fā)具備特殊性。圖3-180C51單片機(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í)鐘方式,運(yùn)用芯片內(nèi)部振蕩電路,在XTAL1、XTAL2引腳上外接定期元件,內(nèi)部振蕩電路便產(chǎn)生自激振蕩。本設(shè)計(jì)采用最慣用內(nèi)部時(shí)鐘方式,即用外接晶體和電容構(gòu)成并聯(lián)諧振回路。振蕩晶體可在1.2MHZ到12MHZ之間選取。電容值無嚴(yán)格規(guī)定,但電容取值對振蕩頻率輸出穩(wěn)定性、大小、振蕩電路起振速度有少量影響,CX1、CX2可在20pF到100pF之間取值,但在60pF到70pF時(shí)振蕩器有較高頻率穩(wěn)定性。因此本設(shè)計(jì)中,振蕩晶體選取6MHZ,電容選取65pF。時(shí)鐘電路如圖3-2。圖3-280C51時(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通過一種斯密特觸發(fā)器用來抑制噪聲,在每個(gè)機(jī)器周期S5P2,斯密特觸發(fā)器輸出電平由復(fù)位電路采樣一次,然后才干得到內(nèi)部復(fù)位操作所需要信號。復(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-380C51復(fù)位電路

在這種簡樸復(fù)位電路中,干擾容易串入復(fù)位端,在大多數(shù)狀況下不會導(dǎo)致單片機(jī)錯(cuò)誤復(fù)位,但會引起內(nèi)部某些寄存器錯(cuò)誤復(fù)位。這時(shí)可在復(fù)位引腳上接一種去耦電容。如果干擾嚴(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è)器件中都具備一種驅(qū)動(dòng)器和一種接受器。MAX483、MAX487、MAX488以及MAX489具備限擺率驅(qū)動(dòng)器,可以減小EMI,并減少由不恰當(dāng)終端匹配電纜引起反射,實(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.1μA。所有器件都工作在5V單電源下。驅(qū)動(dòng)器具備短路電流限制,并可以通過熱關(guān)斷電路將驅(qū)動(dòng)器輸出置為高阻狀態(tài),防止過度功率損耗。接受器輸入具備失效保護(hù)特性,當(dāng)輸入開路時(shí),可以保證邏輯高電平輸出。MAX487與MAX1487具備四分之一單位負(fù)載接受器輸入阻抗,使得總線上最多可以有128個(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ù);而MAX483、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)。與原則RS-485驅(qū)動(dòng)器(最多32個(gè)收發(fā)器)單位負(fù)載(12kΩ輸入阻抗)相比,MAX487與MAX1487具備48kΩ輸入電阻,1/4單位負(fù)載接受器輸入阻抗,在一條總線上容許最多掛接128個(gè)收發(fā)器。MAX487/MAX1487與其她RS-485收發(fā)器任意組合可以容許32個(gè)收發(fā)器或更少收發(fā)器連接在同一條總線上。MAX481/MAX483/MAX485與MAX488-MAX491具備原則12kΩ接受器輸入阻抗。慣用RS-485總線驅(qū)動(dòng)芯片有MAX485、MAX3080、MAX3088、SN75176,MAX485、MAX3080、MAX3088芯片均有一種發(fā)送器和一種接受器,非常適合伙為RS-485總線驅(qū)動(dòng)芯片,其中MAX3080、MAX3088可以在一條通訊線上連接256只,MAX3088達(dá)到10Mbps通訊速率,下面以MAX485為例簡介其邏輯表。MAX485及其邏輯如圖3-5所示。圖3-5MAX485芯片RS-485方式構(gòu)成多機(jī)通信原理在由單片機(jī)構(gòu)成多機(jī)串行通信系統(tǒng)中,普通采用主從式構(gòu)造:從機(jī)不積極發(fā)送命令或數(shù)據(jù),一切都由主機(jī)控制。并且在一種多機(jī)通信系統(tǒng)中,只有一臺單機(jī)作為主機(jī),各臺從機(jī)之間不能互相通訊,雖然有信息互換也必要通過主機(jī)轉(zhuǎn)發(fā)。采用RS-485構(gòu)成多機(jī)通信原理框圖,如圖3-6所示。圖3-6MAX485典型半雙工RS-485網(wǎng)絡(luò)第4章系統(tǒng)問題及其解決4.1通信規(guī)則由于MAX485通訊是一種半雙工通訊,發(fā)送和接受共用同一物理信道。在任意時(shí)刻只容許一臺單機(jī)處在發(fā)送狀態(tài)。因而規(guī)定應(yīng)答單機(jī)必要在偵聽到總線上呼喊信號已經(jīng)發(fā)送完畢,并且沒有其他單機(jī)發(fā)出應(yīng)答信號狀況下,才干應(yīng)答。半雙工通訊對主機(jī)和從機(jī)發(fā)送和接受時(shí)序有嚴(yán)格規(guī)定。如果在時(shí)序上配合不好,就會發(fā)生總線沖突,使整個(gè)系統(tǒng)通訊癱瘓,無法正常工作。要做到總線上設(shè)備在時(shí)序上嚴(yán)格配合,必要要遵從如下幾項(xiàng)原則:(1)復(fù)位時(shí),主從機(jī)都應(yīng)當(dā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)定需要一定期間,并且單片機(jī)各端口復(fù)位后處在高電平狀態(tài),這樣就會使總線上各個(gè)分機(jī)處在發(fā)送狀態(tài),加上上電時(shí)各電路不穩(wěn)定,也許向總線發(fā)送信息。因而,如果用一根口線作發(fā)送和接受控制信號,應(yīng)當(dāng)將口線反向后接入MAX485控制端,使上電時(shí)MAX485處在接受狀態(tài)。此外,在主從機(jī)軟件上也應(yīng)附加若干解決辦法,如:上電時(shí)或正式通訊之前,對串行口做幾次空操作,清除端口非法數(shù)據(jù)和命令。(2)控制端RE*,DE信號有效脈寬應(yīng)當(dāng)不不大于發(fā)送或接受一幀信號寬度。在全雙工通訊過程中,發(fā)送和接受信號分別在不同物理鏈路上傳播,發(fā)送端始終為發(fā)送端,接受端始終為接受端,不存在發(fā)送、接受控制信號切換問題。在RS-485半雙工通訊中,由于MAX485發(fā)送和接受都由同一器件完畢,并且發(fā)送和接受使用同一物理鏈路,必要對控制信號進(jìn)行切換??刂菩盘柡螘r(shí)為高電平,何時(shí)為低電平,普通以單片機(jī)TXC(發(fā)送完畢標(biāo)記),RXC(接受完畢標(biā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í)對時(shí)錯(cuò)現(xiàn)象。依照查證關(guān)于資料,并借助示波器重復(fù)測試,才發(fā)現(xiàn)一種值得注意問題,咱們可以查看單片機(jī)時(shí)序:單片機(jī)在串行口發(fā)送數(shù)據(jù)時(shí),只要將8位數(shù)據(jù)位傳送完畢,TXC標(biāo)志即建立,但此時(shí)應(yīng)發(fā)送第九位數(shù)據(jù)位(若發(fā)送地址幀時(shí))和停止位尚未發(fā)出。如果在這是關(guān)閉發(fā)送控制,勢必導(dǎo)致發(fā)送幀數(shù)據(jù)不完整。如果單片機(jī)多機(jī)通訊采用較高波特率,幾條操作指令延時(shí)就也許超過2位(或1位)數(shù)據(jù)發(fā)送時(shí)間,問題或許不會浮現(xiàn)。但是如果采用較低波特率,如9600,發(fā)送一位數(shù)據(jù)需104μs左右,單靠幾條操作指令延時(shí)遠(yuǎn)遠(yuǎn)不夠,問題就明顯地暴露出來。接受數(shù)據(jù)時(shí)也同樣如此,單片機(jī)在接受完8個(gè)數(shù)據(jù)位后就建立起RXC信號,但此時(shí)尚未接受到第九位數(shù)據(jù)位(若接受地址幀時(shí))和停止位。因此,接受端必要延時(shí)不不大于2位數(shù)據(jù)位時(shí)間(1位數(shù)據(jù)位時(shí)間=1/波特率),再作應(yīng)答,否則會發(fā)生總線沖突。(3)總線上所連接各單機(jī)發(fā)送控制信號在時(shí)序上完全隔開。為了保證發(fā)送和接受信號完整和對的,避免總線上信號碰撞,對總線使用權(quán)必要進(jìn)行分派才干避免競爭,連接到總線上單機(jī),其發(fā)送控制信號在時(shí)間上要完全隔離。

總之,發(fā)送和接受控制信號應(yīng)當(dāng)足夠?qū)?,以保證完整地接受一幀數(shù)據(jù),任意兩個(gè)單機(jī)發(fā)送控制信號在時(shí)間上完全分開,避免總線爭端。

4.2總線匹配總線匹配有兩種辦法,一種是加匹配電阻,位于總線兩端差分端口VA與VB之間應(yīng)跨接120Ω匹配電阻,以減少由于不匹配而引起反射、吸取噪聲,有效地抑制了噪聲干擾。但匹配電阻要消耗較大電流,不合用于功耗限制嚴(yán)格系統(tǒng)。

此外一種比較省電匹配方案是RC匹配運(yùn)用一只電容C隔斷直流成分,可以節(jié)約大某些功率,但電容C取值是個(gè)難點(diǎn),需要在功耗和匹配質(zhì)量間進(jìn)行折衷。除上述兩種外尚有一種采用二極管匹配方案,這種方案雖未實(shí)現(xiàn)真正匹配,但它運(yùn)用二極管鉗位作用,迅速削弱反射信號達(dá)到改進(jìn)信號質(zhì)量目,節(jié)能效果明顯。4.3硬件抗干擾辦法4.3.1RO及DI端配備上拉電阻異步通信數(shù)據(jù)以字節(jié)方式傳送,在每一種字節(jié)傳送之前,先要通過一種低電平起始位實(shí)現(xiàn)握手。為防止干擾信號誤觸發(fā)RO(接受器輸出)產(chǎn)生負(fù)跳變,使接受端MCU進(jìn)入接受狀態(tài),建議RO外接10kΩ上拉電阻。保證系統(tǒng)上電時(shí)RS-485芯片處在接受輸入狀態(tài)。對于收發(fā)控制端DE建議采用MCU引腳通過反相器進(jìn)行控制,不適當(dāng)采用MCU引腳直接進(jìn)行控制,以防止MCU上電時(shí)對總線干擾。

4.3.2地線與接地電子系統(tǒng)接地是一種非常核心而又經(jīng)常被忽視問題,接地解決不當(dāng)經(jīng)常會導(dǎo)致不能穩(wěn)定工作甚至危及系統(tǒng)安全。對于RS-485網(wǎng)絡(luò)來講也是同樣,沒有一種合理接地系統(tǒng)也許會使系統(tǒng)可靠性大打折扣,特別是在工作環(huán)境比較惡劣狀況下,對于接地規(guī)定更為嚴(yán)格。關(guān)于RS-485網(wǎng)絡(luò)接地問題很少有資料提及,在設(shè)計(jì)者中也存在著諸多誤區(qū),致使通信可靠性減少、接口損壞率較高。一種典型錯(cuò)誤觀點(diǎn)就是以為RS-485通信鏈路不需要信號地,而只是簡樸地用一對雙絞線將各個(gè)接口"A"、"B"端連接起來。這種解決辦法在某些狀況下也可以工作,但給系統(tǒng)埋下了隱患,重要有如下兩方面問題:共模干擾問題:確,RS-485接口采用差分方式傳播信號,并不需要相對于某個(gè)參照點(diǎn)來檢測信號,系統(tǒng)只需檢測兩線之間電位差就可以了。但應(yīng)當(dāng)注意是,收發(fā)器只有在共模電壓不超過一定范疇(-7V至+12V)條件下才干正常工作。當(dāng)共模電壓超過此范疇就會影響通信可靠,直至損壞接口。當(dāng)發(fā)送器A向接受器B發(fā)送數(shù)據(jù)時(shí),發(fā)送器A輸出共模電壓為VOS,由于兩個(gè)系統(tǒng)具備各自獨(dú)立接地系統(tǒng),存在著地電位差VGPD。那么,接受器輸入端共模電壓就會達(dá)到VCM=VOS+VGPD。RS-485原則規(guī)定VOS≤3V,但VGPD也許會有很大幅度(十幾伏甚至數(shù)十伏),并也許伴有強(qiáng)干擾信號,致使接受器共模輸入VCM超過正常范疇,并在信號線上產(chǎn)生干擾電流,輕則影響正常通信,重則損壞接口。4.3.3電磁干擾(EMI)問題驅(qū)動(dòng)器輸出信號中共模某些需要一種返回通路,如果沒有一種低阻返回通道(信號地),就會以輻射形式返回源端,整個(gè)總線就會像一種巨大天線向外輻射電磁波。因而,盡管是差分傳播,對于RS-485網(wǎng)絡(luò)來講,一條低阻信號地還是必不可少。一條低阻信號地將兩個(gè)接口工作地連接起來,使共模干擾電壓VGPD被短路。這條信號地可以是額外一對線(非屏蔽雙絞線)、或者是屏蔽雙絞線屏蔽層。值得注意是,這種做法僅對高阻型共模干擾有效,由于干擾源內(nèi)阻大,短接后不會形成很大接地環(huán)路電流,對于通信不會有很大影響。當(dāng)共模干擾源內(nèi)阻較低時(shí),會在接地線上形成較大環(huán)路電流,影響正常通信。筆者以為,可以采用如下三種辦法:A、若干擾源內(nèi)阻不是非常小,可以考慮在接地線上加限流電阻限制干擾電流。接地電阻增長也許會使共模電壓升高,但只要控制在恰當(dāng)范疇內(nèi)就不會影響正常通信;B、采用浮地技術(shù),隔斷接地環(huán)路。當(dāng)共模干擾內(nèi)阻很小時(shí)上述辦法已不能奏效,此時(shí)可以考慮將引入干擾節(jié)點(diǎn)(例如處在惡劣工作環(huán)境現(xiàn)場儀表)浮置起來(也就是系統(tǒng)電路地與機(jī)殼或大地隔離),這樣就隔斷了接地環(huán)路,不會形成很大環(huán)路電流;C、采用隔離接口。有些狀況下,出于安全或其她方面考慮,電路地必要與機(jī)殼或大地相連,不能懸浮,這時(shí)可以采用隔離接口來隔斷接地回路,但是依然應(yīng)當(dāng)有一條地線將隔離側(cè)公共端與其他接口工作地相連。4.3.4瞬態(tài)保護(hù)

前面提到接地辦法只對低頻率共模干擾有保護(hù)作用,對于頻率很高瞬態(tài)干擾就無能為力了。由于引線電感作用,對于高頻瞬態(tài)干擾來講,接地線實(shí)際等同于開路。這樣瞬態(tài)干擾也許會有成百上千伏電壓,但持續(xù)時(shí)間很短。在切換大功率感性負(fù)載(電機(jī)、變壓器、繼電器等)、閃電等過程中都會產(chǎn)生幅度很高瞬態(tài)干擾,如果不加以恰當(dāng)防護(hù)就會損壞接口。對于這種瞬態(tài)干擾可以采用隔離或旁路辦法加以防護(hù)。

隔離保護(hù)方案:這種方案事實(shí)上將瞬態(tài)高壓轉(zhuǎn)移到隔離接口中電隔離層上,由于隔離層高絕緣電阻,不會產(chǎn)生損害性浪涌電流,起到保護(hù)接口作用。普通采用高頻變壓器、光耦等元件實(shí)現(xiàn)接口電氣隔離,已有器件廠商將所有這些元件集成在一片IC中,使用起來非常簡便,如Maxim公司MAX1480/MAX1490,隔離電壓可以到2500V。這種方案長處是可以承受高電壓、持續(xù)時(shí)間較長瞬態(tài)干擾,實(shí)現(xiàn)起來也比較容易,缺陷是成本較高。旁路保護(hù)方案:這種方案運(yùn)用瞬態(tài)抑制元件(如TVS、MOV、氣體放電管等)將危害性瞬態(tài)能量旁路到大地,長處是成本較低,缺陷是保護(hù)能力有限,只能保護(hù)一定能量以內(nèi)瞬態(tài)干擾,持續(xù)時(shí)間不能很長,并且需要有一條良好連接大地通道,實(shí)現(xiàn)起來比較困難。實(shí)際應(yīng)用中可以將兩者結(jié)合起來靈活運(yùn)用。隔離接口對大幅度瞬態(tài)干擾進(jìn)行隔離,而旁路元件保護(hù)隔離接口不被過高瞬態(tài)電壓擊穿。4.3.5總線隔離RS-485總線為并接式二線制接口,一旦有一只芯片故障就也許將總線“拉死”,因而對其二線口VA、VB與總線之間應(yīng)加以隔離。普通在VA、VB與總線之間各串接一只4~10ΩPTC電阻,同步與地之間各跨接5VTVS二極管,以消除線路浪涌干擾。此外應(yīng)當(dāng)合理選用芯片。例如,對外置設(shè)備為防止強(qiáng)電磁(雷電)沖擊,建議選用防雷擊芯片。4.4軟件抗干擾辦法4.4.1指令冗余CPU取指令過程是先取操作碼,再取操作數(shù)。當(dāng)PC受干擾浮現(xiàn)錯(cuò)誤,程序便脫離正常軌道“亂飛”,當(dāng)亂飛到某雙字節(jié)指令,若取指令時(shí)刻落在操作數(shù)上,誤將操作數(shù)當(dāng)作操作碼,程序?qū)⒊鲥e(cuò)。若“飛”到了三字節(jié)指令,出錯(cuò)機(jī)率更大。在核心地方人為插入某些單字節(jié)指令,或?qū)⒂行巫止?jié)指令重寫稱為指令冗余。普通是在雙字節(jié)指令和三字節(jié)指令后插入兩個(gè)字節(jié)以上NOP。這樣雖然亂飛程序飛到操作數(shù)上,由于空操作指令NOP存在,避免了背面指令被當(dāng)作操作數(shù)執(zhí)行,程序自動(dòng)納入正軌。此外,對系統(tǒng)流向起重要作用指令如RET、RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,保證這些重要指令執(zhí)行。4.4.2攔截技術(shù)所謂攔截,是指將亂飛程序引向指定位置,再進(jìn)行出錯(cuò)解決。通慣用軟件陷阱來攔截亂飛程序。因而先要合理設(shè)計(jì)陷阱,另一方面要將陷阱安排在恰當(dāng)位置。(1)軟件陷阱設(shè)計(jì)當(dāng)亂飛程序進(jìn)入非程序區(qū),冗余指令便無法起作用。通過軟件陷阱,攔截亂飛程序,將其引向指定位置,再進(jìn)行出錯(cuò)解決。軟件陷阱是指用來將捕獲亂飛程序引向復(fù)位入口地址0000H指令。普通在EPROM中非程序區(qū)填入如下指令作為軟件陷阱:NOPNOPLJMP0000H其機(jī)器碼為000000。(2)陷阱安排普通在程序中未使用EPROM空間填000000。最后一條應(yīng)填入00,當(dāng)亂飛程序落到此區(qū),即可自動(dòng)入軌。在顧客程序區(qū)各模塊之間空余單元也可填入陷阱指令。當(dāng)使用中斷因干擾而開放時(shí),在相應(yīng)中斷服務(wù)程序中設(shè)立軟件陷阱,能及時(shí)捕獲錯(cuò)誤中斷。如某應(yīng)用系統(tǒng)雖未用到外部中斷1,外部中斷1中斷服務(wù)程序可為如下形式:NOPNOPRETI返回指令可用“RETI”,也可用“LJMP0000H”。如果故障診斷程序與系統(tǒng)自恢復(fù)程序設(shè)計(jì)可靠、完善,用“LJMP0000H”作返回指令可直接進(jìn)入故障診斷程序,盡早地解決故障并恢復(fù)程序運(yùn)營。考慮到程序存貯器容量,軟件陷阱普通1K空間有2-3個(gè)就可以進(jìn)行有效攔截。4.4.3軟件“看門狗”技術(shù)若失控程序進(jìn)入“死循環(huán)”,普通采用“看門狗”技術(shù)使程序脫離“死循環(huán)”。通過不斷檢測程序循環(huán)運(yùn)營時(shí)間,若發(fā)現(xiàn)程序循環(huán)時(shí)間超過最大循環(huán)運(yùn)營時(shí)間,則以為系統(tǒng)陷入“死循環(huán)”,需進(jìn)行出錯(cuò)解決?!翱撮T狗”技術(shù)可由硬件實(shí)現(xiàn),也可由軟件實(shí)現(xiàn)。在工業(yè)應(yīng)用中,嚴(yán)重干擾有時(shí)會破壞中斷方式控制字,關(guān)閉中斷。則系統(tǒng)無法定期“喂狗”,硬件看門狗電路失效。而軟件看門狗可有效地解決此類問題。在實(shí)際應(yīng)用中,采用環(huán)形中斷監(jiān)視系統(tǒng)。用定期器T0監(jiān)視定期器T1,用定期器T1監(jiān)視主程序,主程序監(jiān)視定期器T0。采用這種環(huán)形構(gòu)造軟件“看門狗”具備良好抗干擾性能,大大提高了系統(tǒng)可靠性。對于需經(jīng)常使用T1定期器進(jìn)行串口通訊測控系統(tǒng),則定期器T1不能進(jìn)行中斷,可改由串口中斷進(jìn)行監(jiān)控。這種軟件“看門狗”監(jiān)視原理是:在主程序、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ò)解決程序作排除故障解決。固然,對主程序最大循環(huán)周期、定期器T0和T1定期周期應(yīng)予以全盤合理考慮。4.5失效保護(hù)RS-485原則規(guī)定接受器門限為±200mV。這樣規(guī)定可以提供比較高噪聲抑制能力,但同步也帶來了一種問題:當(dāng)總線電壓在±200mV中間時(shí)接受器輸出狀態(tài)不擬定。由于UART以一種前導(dǎo)"0"觸發(fā)一次接受動(dòng)作,因此接受器不定態(tài)也許會使UART錯(cuò)誤地接受某些數(shù)據(jù),導(dǎo)致系統(tǒng)誤動(dòng)作。當(dāng)總線空閑、開路或短路時(shí)均有也許浮現(xiàn)兩線電壓差低于200mV狀況,必要采用一定辦法避免接受器處在不定態(tài)。老式做法是給總線加偏置,當(dāng)總線空閑或開路時(shí),運(yùn)用偏置電阻將總線偏置在一種擬定狀態(tài)(差分電壓≥200mV)。但這種辦法依然不能解決總線短路時(shí)問題,為此,有些器件制造商將接受門限移到-200mV/-50mV,巧妙地解決了這個(gè)問題。例如Maxim公司為MAX3080系列RS-485接口,不但省去了外部偏置電阻,并且解決了總線短路狀況下失效保護(hù)問題。

第5章軟件設(shè)計(jì)5.1系統(tǒng)構(gòu)造該多機(jī)通信系統(tǒng)系統(tǒng)構(gòu)造圖如圖5-1所示,系統(tǒng)采用半雙工主從通信方式,主機(jī)可以讀取從機(jī)數(shù)據(jù)或?qū)憯?shù)據(jù)到從機(jī),并將數(shù)據(jù)送終端進(jìn)行顯示;從機(jī)重要負(fù)責(zé)對分布電子設(shè)備進(jìn)行監(jiān)測或控制,用中斷方式接受主機(jī)發(fā)來命令并做出回應(yīng)。圖5-1系統(tǒng)構(gòu)造圖5.2通信合同5.2.1信息格式該合同信息格式如下:(1)編碼格式;二進(jìn)制代碼。(2)波特率:9600b/s。(3)通信方式:半雙工。(4)每個(gè)字符由u位構(gòu)成;1位:起始位(0);8位:數(shù)據(jù)位;1位:地址/數(shù)據(jù)辨認(rèn)位(1為地址,o為數(shù)據(jù));l位:停止位(1)。(5)字符發(fā)送順序;低位在先(6)幀結(jié)束標(biāo)志:通信線路空閑3.5ms以上(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ù):表達(dá)主機(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定期與重發(fā)本通信合同定期規(guī)定如下:(1)幀發(fā)送時(shí)限;70ms.超過此時(shí)限結(jié)束發(fā)送。(2)主機(jī)等待從機(jī)應(yīng)答時(shí)限:7ms,超過此時(shí)限,酌情重發(fā)。(3)主機(jī)重發(fā)次數(shù):不超過4次,超過后,判通信失敗。5.2.3通信過程一次完整通信過程分為3個(gè)階段:主機(jī)詢問、從機(jī)應(yīng)答和鏈路釋放。主機(jī)詢問階段,主機(jī)以幀形式將從機(jī)地址碼、命令、數(shù)據(jù)和校驗(yàn)碼傳送到指定從機(jī);從機(jī)應(yīng)答階段,從機(jī)解釋接受命令碼,并組織相應(yīng)幀信息回送到主機(jī);鏈路釋放階段,從機(jī)清除接受緩沖區(qū)及有關(guān)變量,準(zhǔn)備與主機(jī)下次通信。任何一次完整通信過程都是由主機(jī)方發(fā)起,從機(jī)在被主機(jī)尋址前只能處在偵聽狀態(tài),從機(jī)在接受到地址碼第2個(gè)字節(jié)后,及時(shí)判斷與否尋址自己,如果是.繼續(xù)接受下面數(shù)據(jù),否則不與理睬。5.3通信軟件設(shè)計(jì)5.3.1從機(jī)通信軟件設(shè)計(jì)在該系統(tǒng)中,從機(jī)重要任務(wù)是對被檢測設(shè)備進(jìn)行故障檢測和故障定位,通信軟件重要功能是接受主機(jī)命令并將檢測成果回送主機(jī)。從機(jī)通信軟件由2某些構(gòu)成:串行中斷服務(wù)程序和定期器TO中斷服務(wù)程序。串行中斷服務(wù)程序用于接受或發(fā)送數(shù)據(jù);TO中斷服務(wù)程序用于當(dāng)從機(jī)接受完一幀信息后進(jìn)行解釋并啟動(dòng)通信向主機(jī)應(yīng)答,此外也用于當(dāng)從機(jī)發(fā)送超時(shí)后某些解決。從機(jī)上電后處在偵聽狀態(tài),當(dāng)主機(jī)尋址時(shí),便進(jìn)人中斷服務(wù)程序,其程序流程圖如圖5-4所示。圖5-4串行通信中斷服務(wù)程序流程圖一方面判斷是接受中斷還是發(fā)送中斷,若是接受中斷,則清除RI,同步啟動(dòng)字符間隔定期器TO,并置收發(fā)標(biāo)志為收。當(dāng)接受完第2個(gè)字節(jié)后,各從機(jī)及時(shí)判斷與否尋址本機(jī),若是,則置SM2為‘0’,繼續(xù)接受主機(jī)送來數(shù)據(jù);若不是,則禁止T0定期,不在接受背面數(shù)據(jù)。當(dāng)被尋址從機(jī)接受完一幀信息后,字符間隔定期器會產(chǎn)生定期中斷,進(jìn)入TO中斷服務(wù)程序。圖5-5是TO中斷服務(wù)程序流程圖。圖5-5TO中斷服務(wù)程序流程圖進(jìn)入TO中斷服務(wù)程序后,一方面清除TO中斷祈求標(biāo)志,停止TO定期器,接著判斷是接受完畢還是發(fā)送超時(shí),若是接受完畢,再判斷校驗(yàn)和與否對的,若對的,對接受命令進(jìn)行解釋,看是主機(jī)讀還是主機(jī)寫操作,若是主機(jī)讀,則將數(shù)據(jù)打包,送到專門用于通信數(shù)組,接著,禁止接受,置本機(jī)為應(yīng)答工作方式,最后啟動(dòng)發(fā)送,發(fā)送第一種字節(jié),同步啟動(dòng)發(fā)送時(shí)限定期器TO。當(dāng)一種字節(jié)發(fā)送完后,便進(jìn)入通信中斷服務(wù)程序,繼續(xù)發(fā)送余下數(shù)據(jù)。如果在上邊判校驗(yàn)和時(shí),發(fā)現(xiàn)不對的,則置SM2為‘1’,恢復(fù)本機(jī)偵聽狀態(tài),以便接受主機(jī)重發(fā)信息。5.3.2主機(jī)通信軟件設(shè)計(jì)該系統(tǒng)主機(jī)重要任務(wù)是循環(huán)讀取從機(jī)檢測成果,并送終端顯示,其通信軟件由3某些構(gòu)成:主程序中負(fù)責(zé)尋址從機(jī)尋址模塊、通信中斷服務(wù)程序和TO中斷服務(wù)程序。尋址模塊程序流程圖見圖5-6。圖5-6尋址模塊程序流程圖對從機(jī)尋址是按照從機(jī)編號順序進(jìn)行,即從1號從機(jī)開始,主機(jī)發(fā)送該從機(jī)信息幀第1個(gè)字節(jié)啟動(dòng)尋址,同步啟動(dòng)發(fā)送超時(shí)定期器TO,然后檢測通信結(jié)束標(biāo)志.當(dāng)主機(jī)成功接受到該從機(jī)應(yīng)答信息后,便會置位該標(biāo)志,完畢與該從機(jī)通信。接下來,尋址下一從機(jī),直到所有從機(jī)都被尋址。最后,主機(jī)完畢其他功能后,又從1號從機(jī)開始下一循環(huán)尋址。通信中斷服務(wù)程序和TO中斷服務(wù)程設(shè)計(jì)辦法與從機(jī)大同小異,在此不再簡介。第6章程序設(shè)計(jì)程序是單片機(jī)靈魂,沒有相應(yīng)程序,單片機(jī)系統(tǒng)是無法完畢任何動(dòng)作,解決所涉及問題。編寫程序必要對機(jī)器指令系統(tǒng)非常熟悉,并且不能脫離詳細(xì)機(jī)器,因而程序不能在不同機(jī)器上通用。未了使本系統(tǒng)可以成功運(yùn)營,程序是必不可少,因此這次編寫了一種主機(jī)程序,兩個(gè)從機(jī)程序。6.1主機(jī)程序如下:#include<reg51.h>#include<absacc.h>#include<intrins.h>unsignedcharcort=0;sbitP3_5=P3^5;/*********************************按鍵掃描子程序*********************************/key_serial()interrupt0using1{ ++cort;}/*********************************發(fā)送子程序*********************************/voidmaster(void){ if(cort==1) { SBUF=0x01; while(TI!=1);TI=0; P3_5=0; SM2=0; while(RI!=1);RI=0; P2=SBUF; SM2=1; P3_5=1; } if(cort==2) { SBUF=0x02; while(TI!=1);TI=0; SM2=0; P3_5=0; while(RI!=1);RI=0; P2=SBUF; SM2=1; P3_5=1; } if(cort==3)cort=1; SM2=1;}/***************主程序****************/voidmain(void){ P2=0xff; TMOD=0x20; TL1=0xfd; TH1=0xfd; PCON=0x00; TR1=1; SCON=0xf8; EA=1; EX0=1; IT0=1; P3_5=1; while(1) { master(); //發(fā)送 }}6.2從機(jī)1程序如下:#include<reg51.h>#include<absacc.h>#

溫馨提示

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

評論

0/150

提交評論