RS485總線通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第1頁(yè)
RS485總線通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第2頁(yè)
RS485總線通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第3頁(yè)
RS485總線通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第4頁(yè)
RS485總線通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、本科學(xué)生畢業(yè)論文論文題目:RS485總線通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué) 院:年 級(jí):專 業(yè):姓 名:學(xué) 號(hào):指導(dǎo)教師: 摘要無論是工業(yè)控制還是信號(hào)測(cè)試領(lǐng)域,實(shí)現(xiàn)不同通訊協(xié)議的數(shù)據(jù)融合都有著迫切需要。但是目前市場(chǎng)中存在的協(xié)議轉(zhuǎn)換器只能滿足兩種協(xié)議之間的轉(zhuǎn)換,如RS485轉(zhuǎn)RS232,USB轉(zhuǎn)RS485等,但是經(jīng)常存在著多種數(shù)據(jù)總線并存的情況,因此研制多種總線協(xié)議轉(zhuǎn)換的設(shè)備有著比較大的實(shí)際意義。除此之外,目前接口標(biāo)準(zhǔn)的RS485總線通信協(xié)議不統(tǒng)一,需設(shè)計(jì)一個(gè)高效穩(wěn)定的通信協(xié)議?;谝陨显?,本論文提出一種基于高速RS485的多總線通信系統(tǒng)。整個(gè)系統(tǒng)包含多個(gè)RS485節(jié)點(diǎn),各個(gè)節(jié)點(diǎn)包含的通訊接口包括RS23

2、2,RS485和USB,從而實(shí)現(xiàn)這三類總線的通訊協(xié)議的轉(zhuǎn)換。設(shè)計(jì)并實(shí)現(xiàn)了一種適用于微機(jī)和單片機(jī)之間串行通信的通信協(xié)議,采用RS485簡(jiǎn)便,通信可靠性高總線標(biāo)準(zhǔn),可用于工業(yè)測(cè)控和控制現(xiàn)場(chǎng)。實(shí)驗(yàn)結(jié)果表明,該通信協(xié)議是切實(shí)可行的,達(dá)到了預(yù)期的設(shè)計(jì)要求。關(guān)鍵詞RS485總線;主從式;多機(jī)通信;通信協(xié)議Abstract Whether in the field of industrial control or signal test, the achievement of data fusion which is based on different communication protocol is

3、urgent needed. However, in the current market, protocol converter can only achieve conversion between two protocols, such as RS485 to RS232, USB to RS485 and so on. Cases of coexistence data bus, it has great practical significance to develop an equipment for protocol conversion among different buse

4、s. Based on the reasons above, a high-speed RS485-based multi-bus communication system is presented in this paper. The entire system which is used to realize the three categories of bus communication protocol conversion consists of some RS485 nodes, each node contains the communication interfaces in

5、cluding RS232, RS485 and USB. In the practical application, the number of nodes can be changed as required to form system, for achievement of data fusion between a variety of bus communication protocol.Key wordsRS485 bus; Serial Bus; Protocol Conversion; Communication protocol目錄摘要IAbstractII第一章 緒論11

6、.1 研究背景及意義11.2 RS485總線通信系統(tǒng)研究現(xiàn)狀2第二章 RS485介紹42.1 RS485標(biāo)準(zhǔn)42.2 MAX485芯片介紹42.3 RS485總線組網(wǎng)方式52.4 RS485方式構(gòu)成的多機(jī)通信原理5第三章 系統(tǒng)協(xié)議及硬件設(shè)計(jì)73.1 RS485通信協(xié)議設(shè)計(jì)73.1.1 物理層設(shè)計(jì)73.1.2 數(shù)據(jù)鏈路層設(shè)計(jì)83.1.3 應(yīng)用層設(shè)計(jì)83.1.4 通信協(xié)議83.2 系統(tǒng)硬件設(shè)計(jì)103.2.1 PC與RS485總線的接口103.2.2 RS485方式構(gòu)成的多機(jī)通信103.2.3 單片機(jī)與PC機(jī)串行通信系統(tǒng)構(gòu)成11第四章 系統(tǒng)的軟件實(shí)現(xiàn)124.1 上下位機(jī)的關(guān)系134.2 下位機(jī)通信軟

7、件的設(shè)計(jì)144.3 上位機(jī)通信軟件的設(shè)計(jì)164.3.1 通信協(xié)議設(shè)計(jì)164.3.2 多機(jī)傳輸174.3.3 差錯(cuò)控制184.4 程序設(shè)計(jì)19第五章 系統(tǒng)問題解決措施205.1 總線隔離205.2 失效保護(hù)205.3 電磁干擾問題20結(jié)論22參考文獻(xiàn)23致謝24第一章 緒論所謂通信,不僅僅要實(shí)現(xiàn)數(shù)據(jù)的傳輸,更應(yīng)該體現(xiàn)準(zhǔn)確性,也稱可靠性傳輸,最好具有一定的糾錯(cuò)和檢錯(cuò)能力。RS485通信標(biāo)準(zhǔn)的電器協(xié)議是差分、多點(diǎn)傳輸,在現(xiàn)代社會(huì)被廣泛應(yīng)用。RS485通信系統(tǒng)被大量應(yīng)用在自動(dòng)化生產(chǎn)中,許多智能設(shè)備應(yīng)用RS485通信協(xié)議進(jìn)行通信。RS485系統(tǒng)多數(shù)以半雙工形式通信,具有超強(qiáng)的可靠性、抑制噪聲能力,數(shù)據(jù)傳

8、輸速率非常高,電纜長(zhǎng)度特別長(zhǎng)。RS485系統(tǒng)常用的芯片有很多種,本文采用MAX485芯片。RS485接口以平衡方式傳輸,多點(diǎn)之間進(jìn)行通信。在工業(yè)控制和信號(hào)測(cè)試領(lǐng)域中,常常需要將不同通訊協(xié)議進(jìn)行融合,在這個(gè)過程中協(xié)議轉(zhuǎn)換器發(fā)揮著重要作用,如RS485轉(zhuǎn)RS232,USB轉(zhuǎn)RS485等,可以實(shí)現(xiàn)兩種協(xié)議的轉(zhuǎn)換。本文采用USB轉(zhuǎn)RS485進(jìn)行轉(zhuǎn)換。最近幾年,計(jì)算機(jī)技術(shù)的發(fā)展日新月異,發(fā)展迅猛,普遍性高,智能測(cè)量、系統(tǒng)控制大多采用上位機(jī)與下位機(jī)采用主從式工作方式,現(xiàn)場(chǎng)控制單元可以實(shí)現(xiàn)遙測(cè)、遙調(diào)、遙控、遙信功能。由此可知,上位機(jī)與下位機(jī)的串行通信需要達(dá)到一定的可靠性,對(duì)實(shí)現(xiàn)智能化測(cè)控至關(guān)重要。主機(jī)與分機(jī)

9、串行通信主要包括:硬件設(shè)計(jì)、設(shè)計(jì)通信協(xié)議和軟件設(shè)計(jì)。本文簡(jiǎn)述PC機(jī)與單片機(jī)串行通信的組成設(shè)計(jì),包括硬件設(shè)計(jì)、協(xié)議設(shè)計(jì)、軟件設(shè)計(jì)以及通信時(shí)需要考慮的問題。1.1 研究背景及意義在計(jì)算機(jī)技術(shù)發(fā)展迅猛的今天,信息量日益增大,交互速度日益加快,系統(tǒng)內(nèi)各個(gè)模塊信息交互日益復(fù)雜,這對(duì)總線體系發(fā)展起到了推動(dòng)性作用,使得信息交互更加簡(jiǎn)潔,即使信息量龐大,也能輕松實(shí)現(xiàn)。隨著系統(tǒng)數(shù)據(jù)處理量的增大,對(duì)速度的要求也不斷提升,并行總線具有時(shí)鐘同步和串碼等的缺陷,不能滿足系統(tǒng)數(shù)據(jù)交換的條件。高速串行總線采用低壓差分技術(shù),電路的結(jié)構(gòu)簡(jiǎn)單、可擴(kuò)展、傳輸速度快,逐漸取代了并行總線成為主流總線電路方案1。由于嵌入式等技術(shù)的發(fā)展,

10、高速串行總線可編程資源驟增,也可滿足系統(tǒng)集成要求,提高了系統(tǒng)的靈活性和適應(yīng)性。這一技術(shù)的研究對(duì)于促進(jìn)智能化信息系統(tǒng)的發(fā)展、進(jìn)一步提高現(xiàn)代生產(chǎn)、生活效率有著重大意義。自動(dòng)控制系統(tǒng)技術(shù)和信息交互技術(shù)的發(fā)展迅速,信息化、數(shù)字化、網(wǎng)絡(luò)化、微型化、分散化、智能化成為信息系統(tǒng)發(fā)展的主流方向,隨著接口編碼技術(shù)的發(fā)展和系統(tǒng)的逐漸壯大,一系列數(shù)據(jù)格式和接口信息不同的高速總線出現(xiàn)在市場(chǎng)中。即使是同一設(shè)備可能使用不同的總線接口,多總線之間的數(shù)據(jù)通訊及其協(xié)議轉(zhuǎn)換,使信息系統(tǒng)從設(shè)計(jì)、運(yùn)行、維護(hù)等多通訊協(xié)議的轉(zhuǎn)換,簡(jiǎn)化復(fù)雜系統(tǒng)結(jié)構(gòu)和提高系統(tǒng)工作可靠性都至關(guān)重要2。在現(xiàn)代生產(chǎn)和生活中,信息傳輸以及交互量大,交互速度高,同時(shí)

11、,現(xiàn)場(chǎng)工作條件使其重量、體積受限,提升設(shè)備的運(yùn)行速度和可靠性迫在眉睫。為此,本文設(shè)計(jì)了一種基于RS485的分布式多總線通信系統(tǒng),由基于高速RS485的總線節(jié)點(diǎn)組成,節(jié)點(diǎn)中具有RS485總線及USB的通訊功能,且分布式系統(tǒng)的總線節(jié)點(diǎn)個(gè)數(shù)可靈活刪減,應(yīng)運(yùn)而生。從而可以滿足對(duì)多個(gè)RS485和USB接口設(shè)備進(jìn)行通訊及控制等。本論文為對(duì)進(jìn)一步研究通用化、模塊化、可編程化及標(biāo)準(zhǔn)化的信息控制系統(tǒng)和信息處理系統(tǒng)有著重要意義3。隨著計(jì)算機(jī)技術(shù)的發(fā)展,微機(jī)的價(jià)格大幅度下降,PC機(jī)和各種單片機(jī)在工業(yè)和各行業(yè)應(yīng)用日益廣泛。在現(xiàn)場(chǎng)中,各種測(cè)量?jī)x表往住采用單片機(jī)做數(shù)據(jù)處理和控制單元,而在主控室內(nèi),由微機(jī)對(duì)整個(gè)生產(chǎn)過程的數(shù)

12、據(jù)進(jìn)行統(tǒng)一的顯示、存儲(chǔ),并可以完成打印報(bào)表、參數(shù)設(shè)定等工作。這樣,就由微機(jī)和單片機(jī)構(gòu)成了小型分布式的測(cè)量系統(tǒng)。在這樣的系統(tǒng)中,微機(jī)與單片機(jī)的通訊就顯得尤為重要。一般微機(jī)上都有RS232串行接口,但由于RS232使用的是非平衡的電信號(hào),電氣性能不佳,存在著傳輸速率低、傳輸距離短、接口處信號(hào)容易產(chǎn)生相互干擾等問題,難以在工業(yè)現(xiàn)場(chǎng)中得到應(yīng)用。近年來出現(xiàn)的RS485總線,其收發(fā)電平為差動(dòng)方式,大大提高了通訊的速率、距離和可靠性,并且適合多機(jī)通訊。在通訊的波特率小于100kbPs時(shí),允許電纜長(zhǎng)度為1200米,一般可以滿足現(xiàn)場(chǎng)的要求。1.2 RS485總線通信系統(tǒng)研究現(xiàn)狀許多年以前,工業(yè)控制領(lǐng)域已經(jīng)出現(xiàn)總

13、線技術(shù),總線發(fā)展的方向主要有串行、高速及采用嵌入式方案等2?,F(xiàn)如今,總線技術(shù)通常為多種總線并存,應(yīng)用領(lǐng)域不斷擴(kuò)展且總線網(wǎng)絡(luò)結(jié)構(gòu)趨于簡(jiǎn)單化。下面重點(diǎn)介紹RS485總線通信系統(tǒng)的發(fā)展歷程。RS485標(biāo)準(zhǔn)由電子工業(yè)協(xié)會(huì)于1983年制訂并發(fā)布,后由通訊工業(yè)協(xié)會(huì)修訂,并命名為TIA/EIA-485-A。RS485采用平衡驅(qū)動(dòng)差分接收電路,采用半雙工工作方式,傳輸距離最高可達(dá)到1200m,傳輸速率不少于52Mbps,掛載總線節(jié)點(diǎn)數(shù)最多為32個(gè)3,基于以上參數(shù)分析,RS485總線可應(yīng)用于遠(yuǎn)距離高速傳送數(shù)據(jù)和信息。2009年清華大學(xué),精密儀器與機(jī)械學(xué)系王鵬,李成等采用FPGA與RS485收發(fā)器結(jié)合,采用CRC

14、校驗(yàn)算法,實(shí)現(xiàn)了通訊距離為200m,速率為20Mbps,總線誤碼率為10-11的RS485總線。2007年周立功公司采用外置UART芯片SC16IS762結(jié)合MAX485芯片的方案實(shí)現(xiàn)5Mbps高速RS485總線方案。RS485是由RS232發(fā)展而來的接口標(biāo)準(zhǔn),包括點(diǎn)對(duì)多點(diǎn)和多點(diǎn)對(duì)多點(diǎn)的網(wǎng)絡(luò),RS485總線網(wǎng)絡(luò)憑借可靠性高、分布范圍較大、組建成本低等特點(diǎn),在智能家居、遠(yuǎn)程控制等領(lǐng)域得到廣泛應(yīng)用。第二章 RS485介紹RS485通信系統(tǒng)有主從式和總線式兩種通信方式。在工業(yè)控制常用主從式通信方式,總線通信具有更好通用性和可擴(kuò)展性,在總線通信協(xié)議也容易建立一個(gè)主從式RS485通信網(wǎng)絡(luò)。 RS485總

15、線網(wǎng)絡(luò)的網(wǎng)絡(luò)簡(jiǎn)單,成本低,但總線協(xié)議至今尚未統(tǒng)一。在基于RS485總線網(wǎng)絡(luò)系統(tǒng),經(jīng)常臨時(shí)設(shè)計(jì)RS485總線通信協(xié)議,在系統(tǒng)的可移植性和效率穩(wěn)定性方面存在一些問題4??傊?,設(shè)計(jì)一個(gè)高效和穩(wěn)定統(tǒng)一的通訊協(xié)議作為協(xié)議標(biāo)準(zhǔn)對(duì)信息的處理和傳遞是十分有必要的,本文第三章簡(jiǎn)單介紹了高效穩(wěn)定的通信協(xié)議。2.1 RS485標(biāo)準(zhǔn)在計(jì)算機(jī)網(wǎng)絡(luò)控制系統(tǒng)中,通常使用串行通信進(jìn)行信息交換,無論是OSI七層協(xié)議模型還是一個(gè)簡(jiǎn)化的三層(或四層)的網(wǎng)絡(luò),第一層均為物理層,RS485是物理層協(xié)議標(biāo)準(zhǔn),也是串行通信接口標(biāo)準(zhǔn),它可以很容易地把各種計(jì)算機(jī),外圍設(shè)備,測(cè)量?jī)x器有機(jī)地連接,以構(gòu)成測(cè)控系統(tǒng)。 1977年開發(fā)的新標(biāo)準(zhǔn)的EIA

16、RS449,它定義了10種電路功能的RS232C,它的傳輸速率高,傳輸距離遠(yuǎn),RS485是RS422的變體5。2.2 MAX485芯片介紹MAX485是用于RS485通信的收發(fā)器,功率較低,芯片內(nèi)部含有1個(gè)接收器和1個(gè)發(fā)射器,具體特性如表2-1所示。表2-1 MAX485芯片介紹通信方式低功耗關(guān)機(jī)接收器使能靜態(tài)電流/mA數(shù)據(jù)率/Mbps轉(zhuǎn)換率限制管腳數(shù)半雙工NOYES3002.5NO8MAX485芯片8個(gè)管腳的功能如下:(1)RO腳,即為輸出端: 若A比B小100 mV, RO為低,若A比B大100 mV, RO為高。(2)RE腳,即為接收器輸出使能端):當(dāng)RE為高時(shí),RO為高阻狀態(tài),只有RE

17、為低時(shí),RO才有效。(3)DE腳,即為驅(qū)動(dòng)器輸出使能端:若DE為低,它們成高阻狀態(tài),若DE為高,驅(qū)動(dòng)輸出A和B有效; 若為高阻狀態(tài)時(shí), RE為低,它們作線接收器用,若驅(qū)動(dòng)器輸出有效,器件作為線驅(qū)動(dòng)器用。(4)DI腳:即為驅(qū)動(dòng)器輸入:若DI為高,輸出Y為高,Z為低,若DI為低,Y為低,Z為高。(5)GND腳:即為接地作用。(6)B腳: 反相驅(qū)動(dòng)器輸出和反相接收器輸入。(7)A腳: 同相驅(qū)動(dòng)器輸出和同相接收器輸入。(8)VCC:即為電源正極。2.3 RS485總線組網(wǎng)方式RS485總線網(wǎng)絡(luò)組建并不復(fù)雜,通常采取兩線或者四線方式。所有RS485節(jié)點(diǎn)全部掛在一對(duì)RS485總線上,此處 GND以及VCC

18、可以不接,接線時(shí)RS485總線不能開叉。從總線到每個(gè)節(jié)點(diǎn)的引出線長(zhǎng)度應(yīng)盡量短,以便使引出線中的反射信號(hào)對(duì)總線信號(hào)的影響最低,RS485總線網(wǎng)絡(luò)的終端有PC機(jī)和嵌入式設(shè)備6。2.4 RS485方式構(gòu)成的多機(jī)通信原理實(shí)際應(yīng)用系統(tǒng)中,往往分散控制單元數(shù)量較多,分布較遠(yuǎn),現(xiàn)場(chǎng)存在各種干擾,所以可能有以下兩個(gè)問題出現(xiàn),一是通信數(shù)據(jù)收發(fā)的可靠性問題,二是在多機(jī)通信方式下,一個(gè)節(jié)點(diǎn)的故障(如死機(jī)),往往會(huì)使得整個(gè)系統(tǒng)的通信框架崩潰,而且給故障的排查帶來困難。針對(duì)上述問題,作者對(duì)485總線的軟硬件采取了具體的改進(jìn)措施。在由單片機(jī)構(gòu)成的多機(jī)串行通信系統(tǒng)中,一般采用主從式結(jié)構(gòu):從機(jī)不主動(dòng)發(fā)送命令或數(shù)據(jù),一切都由主

19、機(jī)控制。并且在一個(gè)多機(jī)通信系統(tǒng)中,只有一臺(tái)單機(jī)作為主機(jī),各臺(tái)從機(jī)之間不能相互通訊,即使有信息交換也必須通過主機(jī)轉(zhuǎn)發(fā)。在總線末端接一個(gè)匹配電阻,吸收總線上的反射信號(hào),保證正常傳輸信號(hào)干凈、無毛刺。匹配電阻的取值應(yīng)該與總線的特性阻抗相當(dāng)。當(dāng)總線上沒有信號(hào)傳輸時(shí),總線處于懸浮狀態(tài),容易受干擾信號(hào)的影響。將總線上差分信號(hào)的正端A+和+5電源間接一個(gè)10K的電阻;正端A+和負(fù)端B-間接一個(gè)10K的電阻;負(fù)端B-和地間接一個(gè)10K的電阻,形成一個(gè)電阻網(wǎng)絡(luò)。當(dāng)總線上沒有信號(hào)傳輸時(shí),正端A+的電平大約為3.2V,負(fù)端B-的電平大約為1.6V,即使有干擾信號(hào),卻很難產(chǎn)生串行通信的起始信號(hào)0,從而增加了總線抗干擾

20、的能力?,F(xiàn)以8031單片機(jī)自帶的異步通信口,外接75176芯片轉(zhuǎn)換成485總線為例。其中為了實(shí)現(xiàn)總線與單片機(jī)系統(tǒng)的隔離,在8031的異步通信口與75176之間采用光耦隔離。第三章 系統(tǒng)協(xié)議及硬件設(shè)計(jì)3.1 RS485通信協(xié)議設(shè)計(jì)在工業(yè)控制,所有下位機(jī)相互獨(dú)立,同時(shí)受主計(jì)算機(jī)的管理和控制,通過使用通信技術(shù)向多個(gè)下位機(jī)傳輸資料和控制命令。個(gè)人計(jì)算機(jī)系統(tǒng)中,為了實(shí)現(xiàn)下位機(jī)的實(shí)時(shí)監(jiān)控,當(dāng)前PC的數(shù)據(jù)和控制命令傳遞給下位機(jī)。許多大型監(jiān)測(cè)網(wǎng)絡(luò),不適合于小企業(yè)使用,大部分成本高。 RS485總線為基礎(chǔ)的通信系統(tǒng)中,是一個(gè)可靠的、簡(jiǎn)單的、低成本系統(tǒng),在對(duì)數(shù)據(jù)傳輸速率要求不太高、傳輸數(shù)據(jù)不太遠(yuǎn)時(shí)可以廣泛應(yīng)用7。

21、可以很容易地構(gòu)建小型工業(yè)監(jiān)測(cè)網(wǎng)絡(luò)。根據(jù)OSI(開放系統(tǒng)互連)模型規(guī)范和實(shí)際工作需求,在這個(gè)系統(tǒng)中,可以把RS485總線通信協(xié)議分為三層:物理層,數(shù)據(jù)鏈路層和應(yīng)用層。 物理層設(shè)計(jì)物理層用來規(guī)定RS485系統(tǒng)的時(shí)間特性、功能特性、機(jī)械特性和電氣特性,隱藏當(dāng)前層的信息細(xì)節(jié),以提供上一層的服務(wù)。 JKW-L06型485轉(zhuǎn)換器常被用來實(shí)現(xiàn)數(shù)據(jù)采集系統(tǒng)從點(diǎn)到多點(diǎn)的通信。RS485采用差分接收和平衡發(fā)送的方式實(shí)現(xiàn)通信:在TXD發(fā)送端將串行端口TTL電平信號(hào)轉(zhuǎn)換為差分信號(hào)AB兩端輸出,經(jīng)過傳輸后,在接收端將差分信號(hào)恢復(fù)到一個(gè)TTL電平信號(hào)8。如果降低傳輸速率,傳輸距離可以進(jìn)一步提高。RS485最多連接32臺(tái)設(shè)

22、備和32臺(tái)接收器。RS485通訊接口是基于標(biāo)準(zhǔn)的異步通信協(xié)議,如圖3-1所示的基本協(xié)議的幀格式。圖3-1 異步通信協(xié)議基本字節(jié)格式在本系統(tǒng)中規(guī)定1個(gè)起始位、1個(gè)停止位、無奇偶校驗(yàn)位、8位資料位、波特率38。4Kb/s,通信復(fù)用COM1,其地址為0x3F8,COM1對(duì)應(yīng)中斷號(hào)為IRQ4,中斷地址0x0C。在通信過程中接收資料以中斷方式接收,發(fā)送資料以查詢方式發(fā)送。 數(shù)據(jù)鏈路層設(shè)計(jì)RS485總線上的每一個(gè)下位機(jī)都有一個(gè)唯一的本機(jī)地址,最多有32個(gè)。上下位機(jī)的通信方式是:上位機(jī)輪流詢問,下位機(jī)應(yīng)答。下位機(jī)可以接收來自上位機(jī)的消息,只能發(fā)出應(yīng)答信息,下位機(jī)與下位機(jī)無法實(shí)現(xiàn)通信。PC機(jī)每發(fā)送一次命令,命

23、令幀啟動(dòng)一次,下位機(jī)收到命令后,判斷地址是否與本機(jī)相同,相同則發(fā)出應(yīng)答消息,不同則沒反應(yīng)。在數(shù)據(jù)鏈路層中的數(shù)據(jù)幀以實(shí)現(xiàn)正確的命令,以創(chuàng)造一個(gè)傳輸格式幀所需的信息被發(fā)送到物理層。數(shù)據(jù)采集系統(tǒng)中的幀格式分為:發(fā)送消息幀格式和響應(yīng)消息幀格式,從上至下發(fā)送命令信息的稱作:發(fā)送信息幀格式,如表3-1所示。表3-1 發(fā)送信息幀格式STXADDRCOMDLENDATACRCCR02H1B1B1B0250B1B0DH起始字節(jié)目的字節(jié)命令字節(jié)資料長(zhǎng)度數(shù)據(jù)字節(jié)校驗(yàn)字節(jié)終止字節(jié)3.1.3 應(yīng)用層設(shè)計(jì)在網(wǎng)絡(luò)層中還有對(duì)COM端口進(jìn)行起始位、資料位、停止位、波特率設(shè)置的初始化函數(shù)及對(duì)端口進(jìn)行關(guān)閉的Close函數(shù)(程序代碼

24、略)。當(dāng)一個(gè)特定的命令傳輸時(shí),若想把數(shù)據(jù)正確地發(fā)送到RS485總線網(wǎng)絡(luò)時(shí),它必須驗(yàn)證物理層到網(wǎng)絡(luò)層傳輸?shù)谋忍亓鳌T谶@一層,提供整個(gè)程序,在流程中調(diào)用數(shù)據(jù)鏈路層中提供的接口進(jìn)行資料的收發(fā)工作。在網(wǎng)絡(luò)層中還對(duì)COM端口進(jìn)行起始位、停止位、資料位以及波特率設(shè)置的幾種函數(shù)(程序代碼略)。3.1.4 通信協(xié)議一、通信波特率為9 600 bit/s,晶振為12 MHz通信的數(shù)據(jù)格式如前所述,共11位:1位啟動(dòng)位,8位數(shù)據(jù)位(低位在前),1位可控的第9位和1位停止位。下位機(jī)的地址用1個(gè)字節(jié)定義,用16進(jìn)制表示,如1號(hào)機(jī)地址為01,10號(hào)機(jī)地址為0A。約定上位機(jī)的地址為00,系統(tǒng)廣播地址為FF。二、上位機(jī)監(jiān)控

25、程序運(yùn)行時(shí),上位機(jī)開始以時(shí)間間隔t對(duì)下位機(jī)進(jìn)行輪詢以查驗(yàn)下位機(jī)的狀態(tài),依次向下位機(jī)發(fā)送查詢指令。XX為輪詢到的下位機(jī)地址,01為上位機(jī)查詢指令;00為上位機(jī)地址,02為下位機(jī)回復(fù)查詢指令。對(duì)輪詢到的下位機(jī),上位機(jī)根據(jù)下位機(jī)回復(fù)查詢指令查詢其狀態(tài)字,判斷其是否有通訊請(qǐng)求,如果沒有,就對(duì)該下位機(jī)發(fā)出通訊授權(quán)標(biāo)志,若在預(yù)定的時(shí)間內(nèi)有應(yīng)答,則上位機(jī)建立與該下位機(jī)的通信信道;在預(yù)定的時(shí)間內(nèi)下位機(jī)無應(yīng)答,則置該下位機(jī)不在線標(biāo)志,然后輪詢下一位置的下位機(jī),如此反復(fù)。三、上位機(jī)與下位機(jī)建立通信信道,上位機(jī)按照上位機(jī)指令優(yōu)先的原則下,根據(jù)下位機(jī)的狀態(tài)字和上位機(jī)的狀態(tài)字,向下位機(jī)發(fā)出準(zhǔn)備接受信息指令。下位機(jī)的動(dòng)作

26、包括登陸、提交實(shí)驗(yàn)信息;上位機(jī)的動(dòng)作有發(fā)送實(shí)驗(yàn)題目、開始實(shí)驗(yàn)、中斷實(shí)驗(yàn)、恢復(fù)實(shí)驗(yàn)及查詢下位機(jī)的實(shí)驗(yàn)狀況等,在通信協(xié)議中都將這些動(dòng)作進(jìn)行通訊標(biāo)志編碼,如上位機(jī)查詢下位機(jī)狀態(tài)指令通訊標(biāo)志編碼為01,開始實(shí)驗(yàn)指令編碼為0A,下位機(jī)登陸指令編碼為04。XX為與上位機(jī)通訊的下位機(jī)的地址,YY為上位機(jī)功能指令。特別地,上位機(jī)發(fā)送開始實(shí)驗(yàn)指令時(shí),XX可以是下位機(jī)地址,也可以是系統(tǒng)的廣播地址FF。當(dāng)XX為FF時(shí),用于向所有實(shí)驗(yàn)終端統(tǒng)一發(fā)送開始指令。當(dāng)YY為0A,表示系統(tǒng)中所有的下位機(jī)能夠同步接收上位機(jī)發(fā)送的開考指令。數(shù)據(jù)域是否存在和上位機(jī)的功能指令類型有關(guān),如當(dāng)上位機(jī)功能指令為發(fā)送實(shí)驗(yàn)題目指令時(shí),數(shù)據(jù)域的內(nèi)容

27、即為要發(fā)送的相關(guān)內(nèi)容;當(dāng)功能指令為開始實(shí)驗(yàn)指令時(shí),數(shù)據(jù)域?yàn)榭?。在通信過程中,當(dāng)在一個(gè)預(yù)定的時(shí)間內(nèi),上位機(jī)沒有向下位機(jī)發(fā)送指令(上位機(jī)優(yōu)先原則失效),這時(shí)下位機(jī)可向上位機(jī)發(fā)送指令, 00為上位機(jī)的地址,YY為下位機(jī)功能指令,根據(jù)YY的不同,數(shù)據(jù)域的內(nèi)容也是不同的,如在下位機(jī)請(qǐng)求登陸時(shí),YY為04,數(shù)據(jù)域?yàn)閷W(xué)生姓名、學(xué)號(hào)。四、上位機(jī)即PC機(jī)能夠按照教學(xué)的需要生成難易程度不同的實(shí)驗(yàn)題目,二進(jìn)制化后通過發(fā)送功能指令發(fā)送給通訊中的下位機(jī)。發(fā)送以實(shí)驗(yàn)為單位,組織格式為實(shí)驗(yàn)題號(hào)、嵌入式控制器控制字、發(fā)送內(nèi)容長(zhǎng)度和實(shí)驗(yàn)內(nèi)容;實(shí)驗(yàn)結(jié)束后,下位機(jī)將實(shí)驗(yàn)信息以預(yù)定的數(shù)據(jù)格式通過提交指令發(fā)送到上位機(jī)。3.2 系統(tǒng)硬件

28、設(shè)計(jì) PC與RS485總線的接口PC 機(jī)的串行接口為 RS- 232 或 USB 總線,本文采用USB轉(zhuǎn)RS485總線,采用51單片機(jī)進(jìn)行RS- 485 進(jìn)行串行通信, 只需要 將 TTL 電 平 的 串 行 接 口 通 過 芯 片 轉(zhuǎn) 換 為RS- 485 串行接口, 這種轉(zhuǎn)換比較簡(jiǎn)單, 本系統(tǒng)采用的是MAX485 芯片。原理圖如圖3-2所示。圖3-2 系統(tǒng)總體連接框圖3.2.2 RS485方式構(gòu)成的多機(jī)通信PC與單片機(jī)組成的系統(tǒng)中采用主從式結(jié)構(gòu):即多個(gè)從機(jī)受主機(jī)控制,從機(jī)單片機(jī)不發(fā)送命令,一個(gè)系統(tǒng)有且只有一臺(tái)主機(jī),從機(jī)之間不能實(shí)現(xiàn)通信,若要進(jìn)行信息交換,則需通過主機(jī)進(jìn)行控制。在總線末端接一

29、個(gè)匹配電阻, 吸收總線上的反射信號(hào), 使得正常傳輸信號(hào)無毛刺。匹配電阻的取值應(yīng)該與總線的特性阻抗相當(dāng)。在總線上沒有信號(hào)傳輸時(shí), 總線處于懸浮狀態(tài), 容易受干擾信號(hào)的影響。 將總線上的差分信號(hào)的正端 A+ 和負(fù)端 B- 之間接一個(gè) 10K 的電阻; 負(fù)端 B- 和地間接一個(gè) 10K的電阻, 形成一個(gè)電阻網(wǎng)路。當(dāng)總線上沒有信號(hào)傳輸時(shí), 正端 A+ 的電平大約為 3.2V, 負(fù)端 B- 的電平大約為 1。6V, 即使有干擾信號(hào), 也很難產(chǎn)生串行通信的起始信號(hào) 0, 從而增加了總線抗干擾的能力。3.2.3 單片機(jī)與PC機(jī)串行通信系統(tǒng)構(gòu)成直接利用了單片機(jī)上的串行通訊接口,其中Pl.0用于通訊控制,PI.

30、0輸出高電平時(shí),為“收”狀態(tài),Pl.0為低電平時(shí)為“發(fā)”狀態(tài),由于采用的是主從式通訊方式,微機(jī)處于“發(fā)”狀態(tài),而單片機(jī)處于“收”狀態(tài)。系統(tǒng)共線配置方案:凡為平衡電阻,接于總線兩端??偩€上最多可掛32個(gè)物發(fā)器。電纜用雙芯屏蔽端連接到設(shè)備機(jī)殼。為了避免干擾,每個(gè)設(shè)備應(yīng)接地。為了減少反射的影響,在線路兩端接上與之相匹配的特性阻抗。并且應(yīng)使支線與主線的距離盡可能短。單片機(jī)選用AT89C51,由40個(gè)管腳構(gòu)成。芯片MAX813是專門的看門狗,它的工作原理是:它有內(nèi)部的時(shí)鐘,上電后它就開始倒計(jì)時(shí),計(jì)滿時(shí)間約為1.6 s,在此期間,如果WDI引腳的電壓有變化,它就新開始計(jì)時(shí),如果沒有變化,它在 RE-SET

31、引腳輸出高電平,給CPU復(fù)位,然后再計(jì)數(shù),如此反復(fù)9。第四章 系統(tǒng)的軟件實(shí)現(xiàn)由于采用的是主從式通訊方式,各從機(jī)間不能互相通訊,主機(jī)需要依次查詢各個(gè)分機(jī),與各從機(jī)進(jìn)行通訊,MCS系列的具有多機(jī)通訊功能,可把其串口設(shè)置為通訊方式3,微機(jī)上的8250不具有多機(jī)通訊能力,但通過對(duì)其奇偶校驗(yàn)位的設(shè)置,可使其具有多機(jī)通訊能力。使8250奇偶校驗(yàn)位為1的指令:MOVDX,3FSHMOVAL,ZBHOUTDX,AL使8250奇偶校驗(yàn)位為0的指令:MOVDX,3FBHMOVAL,3BHOUTDX,AL。為了提高通訊效率,數(shù)據(jù)塊的長(zhǎng)度和格式是固定的。從機(jī)被訪問,此處采用的是定時(shí)查詢的方式10。由于采用的主要是主從

32、通訊方式,各個(gè)從機(jī)間不能相互通訊,由主機(jī)依次查詢各個(gè)從機(jī),與各個(gè)從機(jī)進(jìn)行通訊。MCS系列的UNAL具有多機(jī)通訊功能,可把其串口設(shè)置為通訊方式3,微機(jī)上的8250不具有多機(jī)通訊能力,但通過對(duì)其偶校驗(yàn)位的設(shè)置,可使其具有多機(jī)通訊能力。使8250奇偶校驗(yàn)位為1的指令:MOVDX,3FSHMOVAL,ZBHOUTDX,AL使8250奇偶校驗(yàn)位為0的指令:MOVDX,3FBHMOVAL,3BHOUTDX,AL。為了提高通訊效率,數(shù)據(jù)塊的長(zhǎng)度和格式是固定的。(當(dāng)然也可以設(shè)定)主機(jī)通過定時(shí)查詢的方式依次對(duì)從機(jī)進(jìn)行訪問。由于RS-485通訊是一種半雙工通訊,發(fā)送和接收共用同一物理信道。在任意時(shí)刻只允許一臺(tái)單機(jī)

33、處于發(fā)送狀態(tài)。因此要求應(yīng)答的單機(jī)必須在偵聽到總線上呼叫信號(hào)已經(jīng)發(fā)送完畢,并且沒有其它單機(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)原則:一、復(fù)位時(shí),主從機(jī)都應(yīng)該處于接收狀態(tài)。SN75176芯片的發(fā)送和接收功能轉(zhuǎn)換是由芯片的RE,DE端控制的。RE=1,DE=1時(shí),SN75176發(fā)送狀態(tài);RE=0,DE=0時(shí),SN75176處于接收狀態(tài)。一般使用單片機(jī)的一根口線連接RE,DE端。在上電復(fù)位時(shí),由于硬件電路穩(wěn)定需要一定的時(shí)間,

34、并且單片機(jī)各端口復(fù)位后處于高電平狀態(tài),這樣就會(huì)使總線上各個(gè)分機(jī)處于發(fā)送狀態(tài),加上上電時(shí)各電路的不穩(wěn)定,可能向總線發(fā)送信息。因此,如果用一根口線作發(fā)送和接收控制信號(hào),應(yīng)該將口線反向后接入SN75176控制端,使上電時(shí)SN75176處于接收狀態(tài)。另外,在主從機(jī)軟件上也應(yīng)附加若干處理措施,如:上電時(shí)或正式通訊之前,對(duì)串行口做幾次空操作,清除端口的非法數(shù)據(jù)和命令。二、控制端RE,DE的信號(hào)的有效脈寬應(yīng)該大于發(fā)送或接收一幀信號(hào)的寬度。在RS-232,RS-422等全雙工通訊過程中,發(fā)送和接收信號(hào)分別在不同的物理鏈路上傳輸,發(fā)送端始終為發(fā)送端,接收端始終為接收端,不存在發(fā)送、接收控制信號(hào)切換問題。在RS-

35、485半雙工通訊中,由于SN75176的發(fā)送和接收都由同一器件完成,并且發(fā)送和接收使用同一物理鏈路,必須對(duì)控制信號(hào)進(jìn)行切換??刂菩盘?hào)何時(shí)為高電平,何時(shí)為低電平,一般以單片機(jī)的TI,RI信號(hào)作參考。在485芯片的通信中,尤其要注意對(duì)485控制端DE的軟件編程。為了可靠的工作,在485總線狀態(tài)切換時(shí)需要做適當(dāng)延時(shí),再進(jìn)行數(shù)據(jù)的收發(fā)。具體的做法是在數(shù)據(jù)發(fā)送狀態(tài)下,先將控制端置“1”,延時(shí)1ms左右的時(shí)間,再發(fā)送有效的數(shù)據(jù),一包數(shù)據(jù)發(fā)送結(jié)束后再延時(shí)1ms后,將控制端置“0”。這樣的處理會(huì)使總線在狀態(tài)切換時(shí),有一個(gè)穩(wěn)定的工作過程。三、總線上所連接的各單機(jī)的發(fā)送控制信號(hào)在時(shí)序上完全隔開。為了保證發(fā)送和接收

36、信號(hào)的完整和正確,避免總線上信號(hào)的碰撞,對(duì)總線的使用權(quán)必須進(jìn)行分配才能避免競(jìng)爭(zhēng),連接到總線上的單機(jī),其發(fā)送控制信號(hào)在時(shí)間上要完全隔離。總之,發(fā)送和接收控制信號(hào)應(yīng)該足夠?qū)?,以保證完整地接收一幀數(shù)據(jù),任意兩個(gè)單機(jī)的發(fā)送控制信號(hào)在時(shí)間上完全分開,避免總線爭(zhēng)端。4.1 上下位機(jī)的關(guān)系(1)下位機(jī)不可與下位機(jī)傳輸通信,只能上位機(jī)與下位機(jī)之間傳輸。(2)PC機(jī)發(fā)起傳輸命令,單詞只能與一臺(tái)下位機(jī)通信,上位機(jī)傳輸?shù)拿畲a對(duì)下位機(jī)進(jìn)行控制。(3)PC如果發(fā)現(xiàn)下位機(jī)的請(qǐng)求代碼,則立即通信,否則空閑時(shí),上位機(jī)巡檢。(4)圖3所示的幀格式是上下位機(jī)通信方式,SOC196KC單片機(jī)是16位地址或數(shù)據(jù)線,自帶A/D轉(zhuǎn)換

37、器的數(shù)量是8路,是Intel研制的高性能微處理器,可在異步通信模式下在16MHz晶振下運(yùn)行,集成了事件處理器陣列和外設(shè)事務(wù)服務(wù)器。此型號(hào)單片機(jī)的串口輸人輸出電平均設(shè)為TTL電平,不能直接與RS485通信,必須使用轉(zhuǎn)化電平轉(zhuǎn)換成統(tǒng)一制式方可實(shí)現(xiàn),本系統(tǒng)具體實(shí)現(xiàn)方式詳見硬件連線見第2節(jié)11。RS485的通信方式為半雙工,若想要知道他的工作狀態(tài),需要經(jīng)由使能端,由于51單片機(jī)是從機(jī),須設(shè)置MAX485芯片的使能端為接收狀態(tài),而且RE為低電平有效,發(fā)送使能端DE為高電平有效,本系統(tǒng)的命令語句如下:andb portl,#11111011b:使能接收orb prod,# OOOOOl00b;使能發(fā)送本系

38、統(tǒng)的波特率設(shè)為9600,用異步模式1作為通信模式,下位機(jī)的晶振為12MHz。下面給出51單片機(jī)串行通信的程序框圖及接受超時(shí)處理程序清單,供設(shè)計(jì)者參考。接收超時(shí)處理程序pushf;進(jìn)棧1 db sptemp,sp_stat;保存狀態(tài)寄存器內(nèi)容ldb delaytimel,#2;超時(shí)寄存器賦初值確性。Idb delaytime2, #0Pd1ooreajbs sptemp, 6, readl;未超時(shí)接收,則轉(zhuǎn)入readdjnz delaytime2, read:等待接收完畢djnz delaytimel , loopsjmp return;超時(shí),則跳離中斷readl:stb sbuf,rxbuf;

39、將接收到的數(shù)據(jù)存入接收單元return:popf;出棧ret4.2 下位機(jī)通信軟件的設(shè)計(jì)51單片機(jī)的始祖是Intel,目前是應(yīng)用最為廣泛的8位單片機(jī)之一,它是基礎(chǔ)入門的也是應(yīng)用廣泛的一種單片機(jī),自帶8路A/D轉(zhuǎn)換器,集成了事件處理器陣列,以及先進(jìn)的外設(shè)事務(wù)服務(wù)器,可在16MHz晶振下運(yùn)行,在異步通信模式下,波特率最高可達(dá)1Mn7080C196KC單片機(jī)串口輸人輸出電平為TTL電平,必須通過轉(zhuǎn)化電平轉(zhuǎn)換才能與RS485接口通信,本系統(tǒng)采用MAM483進(jìn)行電平轉(zhuǎn)換12。RS485串行接口通信采用半雙工的通信方式,必須由使能端來決定其處于發(fā)送狀態(tài)還是接收狀態(tài),由于80C196KC單片機(jī)是從機(jī),必須先

40、將MAX813芯片的使能端設(shè)置為接收狀態(tài)14。MAX813的接收使能端RE為低電平有效,發(fā)送使能端DE為高電平有效,本系統(tǒng)采用P1。2口控制其發(fā)送和接收,命令語句如下:andb portl,#11111011b;使能接收orb prot1,# 00000l00b;使能發(fā)送本系統(tǒng)中80C196KC微處理器的串行通信采用中斷方式進(jìn)行,便于上位機(jī)隨時(shí)對(duì)下位機(jī)進(jìn)行監(jiān)控和管理。下位機(jī)晶振為12MHz,通信模式采用異步模式1,波特率為9600。下面給出80C196KC單片機(jī)串行通信的程序框圖及接受超時(shí)處理程序清單,供設(shè)計(jì)者參考。接收超時(shí)處理程序Pushf;進(jìn)棧1db sptemp,sp_stat;保存狀態(tài)

41、寄存器內(nèi)容ldb delaytimel,#2;超時(shí)寄存器賦初值確性。loop:1db delaytime2,#0read:jbs sptemp,6,readl;未超時(shí)接收,則轉(zhuǎn)入read1djnz delaytime2,read;等待接收完畢djnz delaytimel ,loopsjmp return;超時(shí),則跳離中斷readl:stb sbuf,rxbuf;將接收到的數(shù)據(jù)存入接收單元return:popf;出棧retPushf;進(jìn)棧1db sptemp,sp_stat;保存狀態(tài)寄存器內(nèi)容ldb delaytimel,#2;超時(shí)寄存器賦初值確性。loop:1db delaytime2,#0

42、read:jbs sptemp,6,readl;未超時(shí)接收,則轉(zhuǎn)入read1djnz delaytime2,read;等待接收完畢djnz delaytimel ,loopsjmp return;超時(shí),則跳離中斷readl:stb sbuf,rxbuf;將接收到的數(shù)據(jù)存入接收單元return:popf;出棧ret4.3 上位機(jī)通信軟件的設(shè)計(jì)上位機(jī)Windows環(huán)境下的通信軟件用C:+Builder編寫。一般來說,在Windows平臺(tái)上進(jìn)行串行通信編程,不外乎兩種方式:直接利用Windows,API或使用控件。用API能編寫出靈活的程序,但比較繁瑣。本系統(tǒng)使用MSComm控件進(jìn)行上位機(jī)通信軟件的

43、編制。使用MSComm控件進(jìn)行串口通信時(shí),首先要設(shè)置串口的基本參數(shù),然后可使用Output發(fā)送數(shù)據(jù),Input接收數(shù)據(jù),MSComm事件處理數(shù)據(jù)。上位機(jī)的通信流程限于篇幅,具體編程不予介紹15。4.3.1 通信協(xié)議設(shè)計(jì)為保證通信進(jìn)行,首先做到單片機(jī)的串行口與主控機(jī)串行口的設(shè)置保持一致,即數(shù)據(jù)格式一致、通信波特率相同。如果是多點(diǎn)通信,每個(gè)從機(jī)要分配一個(gè)地址碼。系統(tǒng)中協(xié)議有3種幀格式:呼叫幀、應(yīng)答幀和數(shù)據(jù)幀。呼叫幀由主機(jī)發(fā)出。應(yīng)答幀只能由從機(jī)發(fā)出。當(dāng)從機(jī)收到呼叫幀后,把本機(jī)地址和當(dāng)前狀態(tài)回發(fā)給主機(jī)。設(shè)置開機(jī)自檢、自診斷程序,機(jī)器不能帶病工作;如果需要,還可以設(shè)置在工作空閑時(shí)或定時(shí)自檢程序。PC機(jī)與

44、單片機(jī)構(gòu)成的多機(jī)通信系統(tǒng)采用主從式結(jié)構(gòu)。數(shù)據(jù)通信總是由主機(jī)發(fā)起。主機(jī)處于發(fā)送狀態(tài)“說”時(shí),從機(jī)總是出于“聽”狀態(tài)。若主機(jī)發(fā)送的地址信息與本地從機(jī)相符,則接收該數(shù)據(jù),否則,繼續(xù)“聽”總線上的數(shù)據(jù)。若從機(jī)需要發(fā)送數(shù)據(jù),則必須等到主機(jī)輪詢本地從機(jī)時(shí),才可提出請(qǐng)求。這種網(wǎng)絡(luò)模式下從機(jī)不會(huì)“偵聽”其他從機(jī)對(duì)主機(jī)的響應(yīng),這樣就不會(huì)對(duì)其他從機(jī)產(chǎn)生錯(cuò)誤的響應(yīng)16。主從式多機(jī)通信協(xié)議中,通信速率設(shè)為19.2 kb/s。系統(tǒng)上電或復(fù)位后,使所有從機(jī)的SM2位置1,處于只接收地址幀監(jiān)聽狀態(tài)。主機(jī)向從機(jī)發(fā)送一幀地址信息,從機(jī)接收到地址幀后,將其與本地地址比較,判斷是否一致。若與本地地址相符,則清除SM2,同時(shí)發(fā)送應(yīng)答

45、幀,進(jìn)入通信狀態(tài);其他與本地地址不相符的從機(jī)則保持SM2位不變,繼續(xù)監(jiān)聽。主從機(jī)均以中斷方式進(jìn)行通信,程序流程如圖4-1所示。(a)幀發(fā)送流程 (b)幀接收流程圖4-1 幀通信流程4.3.2 多機(jī)傳輸多機(jī)發(fā)送時(shí)的分時(shí)說、聽多機(jī)傳送時(shí),通信協(xié)議要合理地協(xié)調(diào)總線的分時(shí)共用,通信波特率的計(jì)算要有冗余。采用RS 485總線連接的多個(gè)站點(diǎn),由于485總線是異步半雙工的通信總線,在某一個(gè)時(shí)刻,總線只可能呈現(xiàn)一種狀態(tài),即任意時(shí)刻只有一個(gè)站點(diǎn)在“說”,其他站點(diǎn)只能處“聽”狀態(tài)。如果有多個(gè)站點(diǎn)在“說”,則數(shù)據(jù)將在通信總線時(shí)碰撞,結(jié)果是處于接收狀態(tài)的站點(diǎn)不能收到正確的數(shù)據(jù)。在RS 485總線通信網(wǎng)絡(luò)中,必須控制好

46、每個(gè)站點(diǎn)的“聽、說”狀態(tài),即收、發(fā)狀態(tài),對(duì)總線的使用權(quán)必須進(jìn)行分配,以使各從機(jī)的發(fā)送控制信號(hào)在時(shí)間上完全隔離,保證能及時(shí)、正確地傳輸數(shù)據(jù)。要做到總線上設(shè)備在時(shí)序上的嚴(yán)格配合,必須要遵從以下幾點(diǎn):(1)復(fù)位時(shí),主從機(jī)都應(yīng)該處于接收狀態(tài)。(2)控制端RE,DE的信號(hào)有效脈寬應(yīng)該大于發(fā)送或接收一幀信號(hào)的寬度。(3)總線上所連接的各從機(jī)的發(fā)送控制信號(hào)在時(shí)序上完全隔開。通信方式一般主節(jié)點(diǎn)循環(huán)輪詢各個(gè)從節(jié)點(diǎn)。各個(gè)從節(jié)點(diǎn)都有自己的網(wǎng)絡(luò)通信識(shí)別號(hào),即本機(jī)地址。當(dāng)主節(jié)點(diǎn)的輪詢信息中包含自己的網(wǎng)絡(luò)通信識(shí)別號(hào),此從節(jié)點(diǎn)對(duì)此幀進(jìn)行應(yīng)答,其他節(jié)點(diǎn)則忽略此幀,不做處理。4.3.3 差錯(cuò)控制差錯(cuò)控制用于傳輸數(shù)據(jù)的錯(cuò)誤檢查和

47、錯(cuò)誤糾正,以保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。當(dāng)主機(jī)發(fā)出呼叫幀后,如果在規(guī)定的時(shí)間內(nèi)沒有收到從機(jī)的應(yīng)答幀,則主機(jī)認(rèn)為幀丟失并重發(fā)呼叫幀;如果發(fā)送3次仍沒有收到應(yīng)答幀,則系統(tǒng)認(rèn)為該從機(jī)處于關(guān)機(jī)狀態(tài),開始執(zhí)行其他任務(wù)。在數(shù)據(jù)幀發(fā)送時(shí),本系統(tǒng)采用應(yīng)答方式進(jìn)行差錯(cuò)控制,即接收方向發(fā)送方回發(fā)特殊的控制命令碼,作為傳輸是否正確的確認(rèn);發(fā)送方收到確認(rèn)后就可知道是否正確發(fā)送,以決定是否重發(fā)。如果傳輸中幀完全丟失,則發(fā)送方進(jìn)行超時(shí)處理。即發(fā)送方發(fā)送數(shù)據(jù)后超過一定時(shí)間,發(fā)送方認(rèn)為幀丟失,需要重發(fā)。本系統(tǒng)約定最大重發(fā)數(shù)為3次,超過3次系統(tǒng)就認(rèn)為串行通信出現(xiàn)故障,主機(jī)進(jìn)行故障報(bào)警。另外,為避免通信頻繁后舊的數(shù)據(jù)未發(fā)出去,而新的數(shù)

48、據(jù)產(chǎn)生時(shí)可能會(huì)掉原來的數(shù)據(jù),造成數(shù)據(jù)丟失,在系統(tǒng)中采用了數(shù)據(jù)備份存儲(chǔ)的方式,即將長(zhǎng)度為N的數(shù)據(jù)緩沖區(qū),擴(kuò)展為長(zhǎng)度為2N的數(shù)據(jù)緩沖區(qū)。要傳送的新數(shù)據(jù)先放在原來的緩沖區(qū),檢測(cè)舊的數(shù)據(jù)是否發(fā)送成功,如果發(fā)送成功,則將新的數(shù)據(jù)復(fù)制到擴(kuò)展緩沖區(qū);如果未發(fā)送成功,則繼續(xù)發(fā)送,發(fā)送成功后再備份新的數(shù)據(jù)。此時(shí)進(jìn)來的如果是中斷數(shù)據(jù),只是更新原有的緩沖區(qū),備份緩沖區(qū)的數(shù)據(jù)不會(huì)被中斷數(shù)據(jù)更新掉。這種方法很好地解決了通信過程數(shù)據(jù)存儲(chǔ)出錯(cuò)、丟失的問題,使得通信的可靠性得到很大的提高17。4.4 程序設(shè)計(jì)單片機(jī)用匯編語言編程,根據(jù)通信協(xié)議,通信串行口工作于方式2,用定時(shí)器T1作為波特率發(fā)生器,T0工作于方式2,幀格式為1

49、位起始位,8位校驗(yàn)位,一個(gè)可編程的第9位,1個(gè)停止位。用T1定時(shí)器產(chǎn)生2 400波特率,晶體振蕩器的頻率為12MHz,T1的計(jì)數(shù)初值為E6H,中斷入口地址0023H,程序流程如圖2所示。在程序中主程序并不執(zhí)行任何功能,實(shí)際上PC機(jī)與單片機(jī)之間的通信只是單片機(jī)的部分功能,單片機(jī)在執(zhí)行其他功能時(shí),管理員對(duì)單片機(jī)寫入預(yù)定常數(shù),或讀出指定地址的數(shù)據(jù)進(jìn)行監(jiān)測(cè)和控制,這需要調(diào)用中斷,并不影響主程序的正確執(zhí)行。在此基礎(chǔ)上可以在主程序上附加其他功能模塊。分布式的數(shù)據(jù)采集系統(tǒng),由各個(gè)從機(jī)完成參數(shù)測(cè)量及控制任務(wù),由主機(jī)完成統(tǒng)一的操作顯示的任務(wù),比較適合于小型的測(cè)控系統(tǒng)。數(shù)字通訊相對(duì)于模擬通訊具有較大的通訊容量和較

50、高的可靠性,這使得整個(gè)系統(tǒng)的性能有了較大程度的提高,更適合現(xiàn)代工業(yè)生產(chǎn)的要求,是今后小型數(shù)據(jù)采集系統(tǒng)的發(fā)展方向。第五章 系統(tǒng)問題解決措施5.1 總線隔離RS 485總線為并接式二線制接口,一旦有一只芯片故障就可能將總線“拉死”,因此對(duì)其二線口VA,VB與總線之間各串接一只PTC電阻,同時(shí)與地之間各跨接5 V的TVS二極管,以消除線路浪涌干擾。此外應(yīng)該合理選用芯片。例如,對(duì)外置設(shè)備為防止強(qiáng)電磁沖擊,建議選用防雷擊芯片18。5.2 失效保護(hù)RS 485標(biāo)準(zhǔn)規(guī)定接收器門限為200 mV。這樣規(guī)定能夠提供比較高的噪聲抑制能力,但也帶來了一個(gè)問題:當(dāng)總線電壓在200 mV中間時(shí)接收器輸出狀態(tài)不確定。由于

51、UART以一個(gè)前導(dǎo)“0”觸發(fā)一次接收動(dòng)作,所以接收器的不定態(tài)可能會(huì)使UART錯(cuò)誤地接收一些數(shù)據(jù),導(dǎo)致系統(tǒng)誤操作。當(dāng)總線空閑、開路或短路時(shí)都有可能出現(xiàn)兩線電壓差低于200 mV的情況,必須采取一定措施避免接收器處于不定態(tài)。傳統(tǒng)的作法是給總線加偏置,當(dāng)總線空閑或開路時(shí),利用偏置電阻將總線偏置在一個(gè)確定狀態(tài)(差分電壓200 mV)。但這種方法仍然不能解決總線短路問題。為此,有些器件制造商間將接收門限移到-200 mV/-50 mV,巧妙解決了這個(gè)問題。例如Maxim公司MAX3080系列RS 485接口,不但省去了外部偏置電阻,而且解決了總線短路時(shí)的失效保護(hù)問題19。5.3 電磁干擾問題驅(qū)動(dòng)器輸出信

52、號(hào)中的共模部分需要一個(gè)返回通路,如果沒有一個(gè)低阻的返回通道(信號(hào)地),就會(huì)以輻射的形式返回源端,整個(gè)總線就會(huì)像一個(gè)巨大的天線向外輻射電磁波。因此,盡管是差分傳輸,對(duì)于RS 485網(wǎng)絡(luò)來講,一條低阻的信號(hào)地還是需要的。一條低阻信號(hào)地將兩個(gè)接口的工作地連接起來,使共模干擾電壓VGPD被短路20。這條信號(hào)地可以是額外的一對(duì)線(非屏蔽雙絞線)或者是屏蔽雙絞線的屏蔽層。但是,這種做法僅對(duì)高阻型共模干擾有效,由于干擾源內(nèi)阻大,短接后不會(huì)形成很大的接地環(huán)路電流,對(duì)于通信不會(huì)有很大的影響。當(dāng)共模干擾源內(nèi)阻較小時(shí),會(huì)在接地線上形成較大的環(huán)路電流,影響正常通信。筆者認(rèn)為,可以采取以下3種措施:(1)如果干擾源內(nèi)阻

53、不是非常小,可以考慮在接地線上加限流電阻限制干擾電流。接地電阻的增加可能會(huì)使共模電壓升高,但只要控制在適當(dāng)?shù)姆秶鷥?nèi)就不會(huì)影響正常通信。(2)采用浮地技術(shù),隔斷接地環(huán)路。當(dāng)共模干擾電阻很小時(shí)上述方法已不能奏效,此時(shí)可以考慮將引入干擾的結(jié)點(diǎn)(例如處于惡劣工作環(huán)境的現(xiàn)場(chǎng)儀表)浮置起來,也就是系統(tǒng)的電路地與機(jī)殼或大地隔離,這樣就隔斷了接地環(huán)路,不會(huì)形成很大的環(huán)路電流。(3)采用隔離接口。有些情況下,出于安全或其他方面的考慮,電路地必須與機(jī)殼或大地相連,不能懸浮,這時(shí)可以采用隔離接口來隔離接地回路,但是仍然應(yīng)該有一條地線將隔離側(cè)的公共端與其他接口的工作地相連。結(jié)論本文根據(jù)具體的項(xiàng)目需求以及多總線通信系統(tǒng)

54、的特點(diǎn)等,研制了基于高速RS485的分布式多總線通信系統(tǒng),其中包含的設(shè)備接口包括USB,RS232和RS485接口。本多總線通信系統(tǒng)可以實(shí)現(xiàn)各個(gè)設(shè)備接口的數(shù)據(jù)的融合,且可以利用上位機(jī)對(duì)與其連接的各個(gè)設(shè)備進(jìn)行檢測(cè)和控制。本高速多總線通信系統(tǒng)結(jié)合了嵌入式技術(shù)、數(shù)字電子技術(shù)、總線技術(shù)、信息處理技術(shù)等,應(yīng)用性和綜合性較強(qiáng)。現(xiàn)對(duì)本文完成的工作做如下總結(jié):(1)針對(duì)課題的應(yīng)用背景,分析了多總線通信系統(tǒng)的設(shè)計(jì)需求,并通過對(duì)課題中的重點(diǎn)問題的分析與研究,確定了系統(tǒng)的總體軟硬件設(shè)計(jì)方案,明確了多總線通信系統(tǒng)和上位機(jī)的協(xié)調(diào)設(shè)計(jì)關(guān)系。(2)在確定系統(tǒng)的總體設(shè)計(jì)架構(gòu)基礎(chǔ)上,詳細(xì)分析了系統(tǒng)的硬件構(gòu)成和選型,對(duì)可選的硬件

55、設(shè)計(jì)方案特別是電源及電磁兼容性設(shè)計(jì)等進(jìn)行對(duì)比并選擇最優(yōu)方案,采用模塊化設(shè)計(jì)。的思路設(shè)計(jì)了各硬件電路模塊,增強(qiáng)系統(tǒng)的設(shè)計(jì)靈活性。完成了對(duì)多總線通信系統(tǒng)主要的電路板,包括總線節(jié)點(diǎn)電路、母板電路及前面板電路的原理圖設(shè)計(jì)和PCB設(shè)計(jì)。(3)基于硬件電路平臺(tái)進(jìn)行軟件設(shè)計(jì),主要是為各功能模塊設(shè)計(jì)底層驅(qū)動(dòng)和應(yīng)用程序,包括CRC校驗(yàn)算法,節(jié)點(diǎn)與上位機(jī)通訊程序及各個(gè)設(shè)備接口包括RS232,RS485和USB通訊程序。(4)編寫基于labview的上位機(jī)程序,根據(jù)各個(gè)設(shè)備的所需實(shí)現(xiàn)的功能和控制命令編寫前后面板程序。(5)針對(duì)系統(tǒng)的軟硬件設(shè)計(jì)制定相應(yīng)的系統(tǒng)功能測(cè)試方案,優(yōu)化了子電路中的部分設(shè)計(jì),驗(yàn)證了系統(tǒng)設(shè)計(jì)的正確性。(6)設(shè)計(jì)實(shí)現(xiàn)了基于RS-485總線的數(shù)據(jù)采集系

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論