中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用RS-485構(gòu)成總線型多點(diǎn)數(shù)據(jù)采集系統(tǒng)

        用RS-485構(gòu)成總線型多點(diǎn)數(shù)據(jù)采集系統(tǒng)

        作者: 時(shí)間:2017-06-04 來源:網(wǎng)絡(luò) 收藏
        摘 要:工業(yè)自動(dòng)化中遠(yuǎn)程控制很適合用組網(wǎng)。文章以總線型多點(diǎn)為例,介紹了用構(gòu)成主從機(jī)方式通信網(wǎng)絡(luò)的一般組網(wǎng)方法。

        關(guān)鍵詞:;;;

        一、概述

        在數(shù)據(jù)通信、計(jì)算機(jī)網(wǎng)絡(luò)以及工業(yè)上的分布式控制系統(tǒng)中,經(jīng)常需要采用串行通信來達(dá)到遠(yuǎn)程信息交換的目的。目前,有多種接口標(biāo)準(zhǔn)可用于串行通信,包括RS-232、RS-422、RS-423和RS-485[2]。RS232是最早的串行接口標(biāo)準(zhǔn),在短距離、較低波特率串行通信中得到了廣泛應(yīng)用。其后發(fā)展起來的RS-422、RS-485是平衡傳送的電氣標(biāo)準(zhǔn),比起RS-232非平衡的傳送方式在電氣指標(biāo)上有了大幅度的提高。

        RS-485串行接口的電氣標(biāo)準(zhǔn)實(shí)際上是RS-422的變型,它屬于七層OSI(Open System Interconnection,開放系統(tǒng)互連)模型物理層的協(xié)議標(biāo)準(zhǔn)。由于性能優(yōu)異、結(jié)構(gòu)簡單、組網(wǎng)容易,RS-485總線標(biāo)準(zhǔn)得到了越來越廣泛的應(yīng)用。其互連方式如圖1所示。

        圖1 RS-485互連示意圖

        本文引用地址:http://www.antipu.com.cn/article/201706/348632.htm

        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á)32臺(tái)驅(qū)動(dòng)器和32接收器,非常便于多器件的連接。不僅可以實(shí)現(xiàn)半雙工通信,而且可以實(shí)現(xiàn)全雙工通信。下面以RS-485總線型網(wǎng)絡(luò)為原型,介紹它的軟硬件構(gòu)成。

        二、RS-485總線型多點(diǎn)互連設(shè)計(jì)

        1、硬件電路設(shè)計(jì)

        圖2 RS-485總線型網(wǎng)絡(luò)原理圖


        分布式多點(diǎn)或集中控制系統(tǒng)的網(wǎng)絡(luò)拓?fù)湟话悴捎每偩€方式,傳送數(shù)據(jù)采用主從站的方法。圖2所示是用RS-485構(gòu)成的總線型網(wǎng)絡(luò)系統(tǒng),采用進(jìn)行多機(jī)通信。主機(jī)可以是PC機(jī)、工控機(jī)或單片機(jī),從機(jī)一般是單片機(jī)。每個(gè)從機(jī)擁有自己固定的地址,由主機(jī)控制完成網(wǎng)上的每一次通信。R為平衡電阻,通常取為120歐。

        開始時(shí)所有從機(jī)復(fù)位,即處于監(jiān)聽狀態(tài),等待主機(jī)的呼叫。當(dāng)主機(jī)向網(wǎng)上發(fā)出某一從機(jī)的地址時(shí),所有從機(jī)接收到該地址并與自己的地址相比較。如果相符,說明主機(jī)在呼叫自己,應(yīng)發(fā)回應(yīng)答信號(hào),表示準(zhǔn)備好開始接收后面的命令和數(shù)據(jù);否則不予理睬,繼續(xù)監(jiān)聽呼叫地址。主機(jī)收到從機(jī)的應(yīng)答后,則開始一次通信。通信完畢,從機(jī)繼續(xù)處于監(jiān)聽狀態(tài),等待呼叫。

        圖3 單片機(jī)的RS-485接口

        采用單片機(jī)和RS-485接口的原理圖如圖3所示。由于使用半雙工方式,RS-485接口芯片采用的是SN75LBC184集成電路。這是具有瞬變高壓抑制功能的芯片,能抗雷擊、靜電放電,避免因交流電故障引起的非正常高壓脈沖沖擊。A、B為RS-485總線接口,DI是發(fā)送端,RO為接收端,分別與單片機(jī)串行口的TXD、RXD連接,RE、DE為收發(fā)使能端,由單片機(jī)的 P1.4口作為收發(fā)控制。數(shù)據(jù)采集或控制信號(hào)的輸出通過P0口進(jìn)行,P2的口線可用來控制A/D或D/A轉(zhuǎn)換。

        2、

        SN75LBC184僅能保證在物理層上二進(jìn)制信號(hào)流的暢通。為了能使具體的命令、數(shù)據(jù)在網(wǎng)絡(luò)上正確地傳輸,在數(shù)據(jù)鏈路層必須提供一定的,保證在物理層的比特流出現(xiàn)錯(cuò)誤時(shí)進(jìn)行檢測和校正,同時(shí)實(shí)現(xiàn)生成數(shù)據(jù)幀和命令幀的功能。

        主機(jī)發(fā)出的信息分為地址和數(shù)據(jù),它們必須區(qū)分開。單片機(jī)[1]串行口模式3是波特率可變的9位通信方式,可編程位(TB8)由主機(jī)單片機(jī)自動(dòng)打包區(qū)別地址和數(shù)據(jù),TB8為1表示地址字節(jié),否則是數(shù)據(jù)字節(jié)。從機(jī)接收時(shí)則根據(jù)這一位來區(qū)別地址和數(shù)據(jù)。

        通信開始前,所有的從機(jī)處于復(fù)位狀態(tài),監(jiān)聽主機(jī)的地址呼叫。FFH的呼叫地址將使所有的從機(jī)復(fù)位。這時(shí)的從機(jī)只對(duì)TB8為1的地址字節(jié)敏感,對(duì)數(shù)據(jù)字節(jié)不予理睬。如果有地址呼叫,則中斷所有的從機(jī)。每個(gè)從機(jī)都把接收到的呼叫地址和本機(jī)地址相比較,如果相符,則該從機(jī)開始接收數(shù)據(jù)幀。其他從機(jī)則保持不變,后面的數(shù)據(jù)字節(jié)由于TB8為0,它們不接收,繼續(xù)監(jiān)聽地址呼叫。通信的從機(jī)完成通信后自動(dòng)轉(zhuǎn)入復(fù)位狀態(tài)。

        通信的數(shù)據(jù)長度必定大于一個(gè)字節(jié),必須將他們合成一幀。網(wǎng)絡(luò)數(shù)據(jù)協(xié)議幀的格式如表1所示。

        表1 網(wǎng)絡(luò)數(shù)據(jù)協(xié)議


        第一部分只有一個(gè)字節(jié),代表該幀的長度為N+2。第二部分是N個(gè)數(shù)據(jù)的數(shù)據(jù)包。具體地說,當(dāng)主機(jī)發(fā)給從機(jī)的時(shí)候,數(shù)據(jù)包包括命令字及參數(shù);當(dāng)從機(jī)回送給主機(jī)的時(shí)候,包括狀態(tài)字以及必要的數(shù)據(jù)。最后一部分是采用CCITT(Consultative Committee International for Telephony and Telegraph,國際電報(bào)電話咨詢委員會(huì))的CRC(Cyclic Redundancy Cheek,循環(huán)冗余校驗(yàn))碼,長度是兩個(gè)字節(jié)。

        三、服務(wù)軟件

        按照網(wǎng)絡(luò)?議的幀格式編寫的通信軟件通過物理層最終完成主機(jī)與從機(jī)之間的數(shù)據(jù)交換。在總線型拓?fù)浣Y(jié)構(gòu)構(gòu)成的分布式數(shù)據(jù)采集系統(tǒng)中,主機(jī)和各從機(jī)間傳送的命令和數(shù)據(jù)是二進(jìn)制的直接傳送,并且從機(jī)還要完成采集數(shù)據(jù)和控制的任務(wù),主機(jī)要完成集中處理的任務(wù),所以服務(wù)軟件要使主機(jī)和各從機(jī)協(xié)調(diào)一致地工作,盡量減小通信對(duì)其他工作的影響。

        下面以單片機(jī)構(gòu)成的總線型多點(diǎn)數(shù)據(jù)采集系統(tǒng)為例,給出用C51編寫的RS-485通信部分服務(wù)軟件。

        1、主機(jī)程序

        #define uchar unsigned char

        ...

        sbit tr=p1.4:

        void main()

        {

        //初始化

        PCON=0; //SMODE=0

        TMOD=0x20; //定時(shí)器1設(shè)為模式2,作為串行口的波特率發(fā)生器

        EA=0; //禁止定時(shí)器中斷

        TH1=0xf3;

        TL1=0xf3; //定時(shí)起始值,6MHz晶振時(shí)波特率為1200bps

        SCON=0xd8; //串行口模式3,TB8=1發(fā)送地址呼叫

        TR1=1; //啟動(dòng)定時(shí)器1

        while(TI=0); //等待發(fā)送結(jié)束

        TI=0;

        ...

        }

        //發(fā)送子程序

        uchar SendMsg(uchar msg,uchar len,uchar IDnum)

        //msg:發(fā)送緩沖區(qū)指針;len:要發(fā)送的數(shù)據(jù)長度;IDnum:從機(jī)號(hào)

        {

        ...

        TB8=1;

        tr=1;

        SBUF=0xff; //復(fù)位從機(jī)

        while(TI=0);

        TI=0;

        SBUF=IDnum; //呼叫從機(jī)

        while(TI=0);

        TI=0;

        tr=0;

        while(RI=0); //等待從機(jī)回應(yīng) RI=0; //清除串行口中斷標(biāo)志

        //下面是數(shù)據(jù)幀

        TB8=0;

        tr=1;

        SBUF=len+2;

        while(TI=0)

        TI=0

        for(i=0;i

        {

        SBUF=*(msg+i);

        while(TI=0);

        TI=0;

        }

        //下面計(jì)算 @#@冗余校驗(yàn)碼并發(fā)送

        ...

        //等待從機(jī)回應(yīng),看是否接收正確

        ...

        return 0; //正確返回

        }

        2、從機(jī)程序

        #define ADDRESS 0x01

        ...

        sbit tr=P1.4;

        //中斷接收程序

        void sevice-serial(void)interrupt 4 using 1

        {

        uchar rs;

        RI=0;

        ES=0; //關(guān)串行口中斷

        tr=0;

        rs=SBUF;

        if(rs=0xff) //是復(fù)位命令

        {

        SM2=1;

        ES=1;

        return;

        }

        if(rs!=ADDRESS) //不是呼叫本機(jī)

        {

        ES=1;

        return;

        }

        SM2=0;

        tr=1;

        SBUF=ADDRESS; //用本機(jī)地址作為應(yīng)答

        while(TI=0);

        TI=0;

        tr=0;

        //下面開始接收

        ...

        }

        四、結(jié)束語

        本文著重討論了用RS-485構(gòu)成網(wǎng)絡(luò)系統(tǒng)的基本組網(wǎng)方法,當(dāng)然在具體的應(yīng)用中還會(huì)有一些變化。由于RS-485具有性能優(yōu)異、組網(wǎng)簡單的優(yōu)點(diǎn),它在集中控制系統(tǒng)、分布式控制系統(tǒng)中的應(yīng)用相當(dāng)廣泛,特別是在要求遠(yuǎn)距離傳輸?shù)膽?yīng)用中。由于其硬件電路已比較成熟,設(shè)計(jì)中的問題主要集中在網(wǎng)絡(luò)協(xié)議和服務(wù)軟件的設(shè)計(jì)上。 網(wǎng)絡(luò)協(xié)議是保證通信暢通的關(guān)鍵,在一定程度上也影響著網(wǎng)絡(luò)通信的可靠性,即它必須能夠抵抗實(shí)際運(yùn)作環(huán)境的干擾。另外通信只是整個(gè)系統(tǒng)中的一個(gè)部分,系統(tǒng)還必須完成諸如數(shù)據(jù)采集和控制的功能。這就要求通信占用盡量少的時(shí)間,以求達(dá)到整個(gè)系統(tǒng)的高效率。在通信數(shù)據(jù)量一定的情況下,采用較高的波特率當(dāng)然比較好,但高的波特率必定要降低傳輸距離,在實(shí)際應(yīng)用中必須仔細(xì)衡量。更好的辦法就是采用數(shù)據(jù)壓縮算法,在傳輸前對(duì)數(shù)據(jù)進(jìn)行壓縮,可使通信數(shù)據(jù)量大大減少,網(wǎng)絡(luò)效率成倍提高。



        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉