a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 用RS-485構成總線型多點數據采集系統

用RS-485構成總線型多點數據采集系統

作者: 時間:2017-06-04 來源:網絡 收藏
摘 要:工業自動化中遠程控制很適合用組網。文章以總線型多點為例,介紹了用構成主從機方式通信網絡的一般組網方法。

關鍵詞:;;;

一、概述

在數據通信、計算機網絡以及工業上的分布式控制系統中,經常需要采用串行通信來達到遠程信息交換的目的。目前,有多種接口標準可用于串行通信,包括RS-232、RS-422、RS-423和RS-485[2]。RS232是最早的串行接口標準,在短距離、較低波特率串行通信中得到了廣泛應用。其后發展起來的RS-422、RS-485是平衡傳送的電氣標準,比起RS-232非平衡的傳送方式在電氣指標上有了大幅度的提高。

RS-485串行接口的電氣標準實際上是RS-422的變型,它屬于七層OSI(Open System Interconnection,開放系統互連)模型物理層的協議標準。由于性能優異、結構簡單、組網容易,RS-485總線標準得到了越來越廣泛的應用。其互連方式如圖1所示。

圖1 RS-485互連示意圖

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

RS-485采用平衡發送和差分接收方式來實現通信:在發送端TXD將串行口的TTL電平信號轉換成差分信號A、B兩路輸出,經傳輸后在接收端將差分信號還原成TTL電平信號。兩條傳輸線通常使用雙絞線,又是差分傳輸,因此有極強的抗共模干擾的能力,接收靈敏度也相當高。同時,最大傳輸速率和最大傳輸距離也大大提高。如果以10Kbps速率傳輸數據時傳輸距離可達12m,而用100Kbps時傳輸距離可達1.2km。如果降低波特率,傳輸距離還可進一步提高。另外RS-485實現了多點互連,最多可達32臺驅動器和32接收器,非常便于多器件的連接。不僅可以實現半雙工通信,而且可以實現全雙工通信。下面以RS-485總線型網絡為原型,介紹它的軟硬件構成。

二、RS-485總線型多點互連設計

1、硬件電路設計

圖2 RS-485總線型網絡原理圖


分布式多點或集中控制系統的網絡拓撲一般采用總線方式,傳送數據采用主從站的方法。圖2所示是用RS-485構成的總線型網絡系統,采用進行多機通信。主機可以是PC機、工控機或單片機,從機一般是單片機。每個從機擁有自己固定的地址,由主機控制完成網上的每一次通信。R為平衡電阻,通常取為120歐。

開始時所有從機復位,即處于監聽狀態,等待主機的呼叫。當主機向網上發出某一從機的地址時,所有從機接收到該地址并與自己的地址相比較。如果相符,說明主機在呼叫自己,應發回應答信號,表示準備好開始接收后面的命令和數據;否則不予理睬,繼續監聽呼叫地址。主機收到從機的應答后,則開始一次通信。通信完畢,從機繼續處于監聽狀態,等待呼叫。

圖3 單片機的RS-485接口

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

2、

SN75LBC184僅能保證在物理層上二進制信號流的暢通。為了能使具體的命令、數據在網絡上正確地傳輸,在數據鏈路層必須提供一定的,保證在物理層的比特流出現錯誤時進行檢測和校正,同時實現生成數據幀和命令幀的功能。

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

通信開始前,所有的從機處于復位狀態,監聽主機的地址呼叫。FFH的呼叫地址將使所有的從機復位。這時的從機只對TB8為1的地址字節敏感,對數據字節不予理睬。如果有地址呼叫,則中斷所有的從機。每個從機都把接收到的呼叫地址和本機地址相比較,如果相符,則該從機開始接收數據幀。其他從機則保持不變,后面的數據字節由于TB8為0,它們不接收,繼續監聽地址呼叫。通信的從機完成通信后自動轉入復位狀態。

通信的數據長度必定大于一個字節,必須將他們合成一幀。網絡數據協議幀的格式如表1所示。

表1 網絡數據協議


第一部分只有一個字節,代表該幀的長度為N+2。第二部分是N個數據的數據包。具體地說,當主機發給從機的時候,數據包包括命令字及參數;當從機回送給主機的時候,包括狀態字以及必要的數據。最后一部分是采用CCITT(Consultative Committee International for Telephony and Telegraph,國際電報電話咨詢委員會)的CRC(Cyclic Redundancy Cheek,循環冗余校驗)碼,長度是兩個字節。

三、服務軟件

按照網絡?議的幀格式編寫的通信軟件通過物理層最終完成主機與從機之間的數據交換。在總線型拓撲結構構成的分布式數據采集系統中,主機和各從機間傳送的命令和數據是二進制的直接傳送,并且從機還要完成采集數據和控制的任務,主機要完成集中處理的任務,所以服務軟件要使主機和各從機協調一致地工作,盡量減小通信對其他工作的影響。

下面以單片機構成的總線型多點數據采集系統為例,給出用C51編寫的RS-485通信部分服務軟件。

1、主機程序

#define uchar unsigned char

...

sbit tr=p1.4:

void main()

{

//初始化

PCON=0; //SMODE=0

TMOD=0x20; //定時器1設為模式2,作為串行口的波特率發生器

EA=0; //禁止定時器中斷

TH1=0xf3;

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

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

TR1=1; //啟動定時器1

while(TI=0); //等待發送結束

TI=0;

...

}

//發送子程序

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

//msg:發送緩沖區指針;len:要發送的數據長度;IDnum:從機號

{

...

TB8=1;

tr=1;

SBUF=0xff; //復位從機

while(TI=0);

TI=0;

SBUF=IDnum; //呼叫從機

while(TI=0);

TI=0;

tr=0;

while(RI=0); //等待從機回應 RI=0; //清除串行口中斷標志

//下面是數據幀

TB8=0;

tr=1;

SBUF=len+2;

while(TI=0)

TI=0

for(i=0;i

{

SBUF=*(msg+i);

while(TI=0);

TI=0;

}

//下面計算 @#@冗余校驗碼并發送

...

//等待從機回應,看是否接收正確

...

return 0; //正確返回

}

2、從機程序

#define ADDRESS 0x01

...

sbit tr=P1.4;

//中斷接收程序

void sevice-serial(void)interrupt 4 using 1

{

uchar rs;

RI=0;

ES=0; //關串行口中斷

tr=0;

rs=SBUF;

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

{

SM2=1;

ES=1;

return;

}

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

{

ES=1;

return;

}

SM2=0;

tr=1;

SBUF=ADDRESS; //用本機地址作為應答

while(TI=0);

TI=0;

tr=0;

//下面開始接收

...

}

四、結束語

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



評論


相關推薦

技術專區

關閉