沈樵综合在线,一区二区三区乱码,免费资源一区二区三区,91超碰碰,av极品一线天,日韩免费高清一区二区,国产蜜尤福利在线,嗯啊91在线观看,精品一区二三

江蘇率忠儀表有限公司
免費會員
電磁流量計
渦輪流量計
孔板流量計
橢圓齒輪流量計
渦街流量計
旋進旋渦流量計
金屬管浮子(轉子)流量計
均速管流量計
其它流量計
超聲波流量計
超聲波物位計系列
液位計
液位變送器系列
壓力表系列
壓力變送器系列
溫度計系列
溫度變送器系列
熱電偶系列
熱電阻系列
記錄儀系列
顯示儀表系列產品
校驗儀表系列產品
儀表配件

RS-232/RS-485/RS-422 接口簡介與編程

時間:2009/11/28閱讀:1489
分享:

   一、什么是RS-232 接口?

(1) RS-232 的歷史和作用

在串行通訊時,要求通訊雙方都采用一個標準接口,使不同的設備可以方便地連接起來進行通訊。RS-232-C接口(又稱EIA RS-232-C)是目前zui常用的一種串行通訊接口。(“RS-232-C”中的“-C”只不過表示RS-232的版本,所以與“RS-232”簡稱是一樣的)它是在1970 年由美國電子工業(yè)協(xié)會(EIA)聯合貝爾系統(tǒng)、調制解調器廠家及計算機終端生產廠家共同制定的用于串行通訊的標準。它的全名是"數據終端設備(DTE)和數據通訊設備(DCE)之間串行二進制數據交換接口技術標準"該標準規(guī)定采用一個25 個腳的DB-25 連接器,對連接器的每個引腳的信號內容加以規(guī)定,還對各種信號的電平加以規(guī)定。后來IBMPC 機將RS-232 簡化成了DB-9 連接器,從而成為事實標準。而工業(yè)控制的RS-232 口一般只使用RXDTXD、GND 三條線。

(2)RS-232 接口的電氣特性

RS-232-C 中任何一條信號線的電壓均為負邏輯關系。即:邏輯"1"-3 -15V;邏輯"0"+3 +15V 。RS-232-C zui常用的9 條引線的信號內容如下所示

DB-9 1 2 3 4 5 6 7 8 9

DB-25 8 3 2 20 7 6 4 5 22

定義DCD RXD TXD DTR GND DSR RTS CTS RI

(3) RS-232 接口的物理結構

RS-232-C 接口連接器一般使用型號為DB-9 插頭座,通常插頭在DCE,插座在DTE.

PC 機的RS-232 口為9 芯針插座。而波士RS-232/RS-485轉換器的RS-232 DB-9 孔插頭。一些設備與PC 機連接的RS-232 接口,因為不使用對方的傳送控制信號,只需三條接口線,"發(fā)送數據TXD"、"接收數據RXD""信號地GND"RS-232 傳輸線采用屏蔽雙絞線。

4RS-232 傳輸電纜長度

RS-232C標準規(guī)定在碼元畸變小于4%的情況下,傳輸電纜長度應為50 英尺,其實這個4%的碼元畸變是很保守的,在實際應用中,約有99%的用戶是按碼元畸變10-20%的范圍工作的,所以實際使用中zui大距離會遠超過50英尺,美國DEC公司曾規(guī)定允許碼元畸變?yōu)?/span>10%而得出下面實驗結果。其中1 號電纜為屏蔽電纜,型號為DECP.NO.9107723 內有三對雙絞線,每對由22# AWG 組成,其外覆以屏蔽網。2 號電纜為不帶屏蔽的電纜。型號為DECP.NO.9105856-0422#AWG 的四芯電纜。

DEC 公司的實驗結果

波特率bps    1號電纜傳輸距離(米)    2號電纜傳輸距離(米)

110         1500                        900

300         1500                        900

1200         900                        900

2400         300                        150

4800         300                        75

9600         75                         75

經過許多年來RS-232 器件以及通信技術的改進,RS-232 的通信距離已經大大增加。波士電子的RS-232 增強器可以將普通的RS-232 口的通信距離直接延長到1000米。

二、什么是RS-485 接口?

1. RS-485 的電氣特性:

發(fā)送端:邏輯"1"以兩線間的電壓差為+2 6 V 表示;邏輯"0"以兩線間的電壓差為-2 6V 表示。接收端:AB200mV以上即認為是邏輯"1",A B 200mV 以上即認為是邏輯"0"。

2. RS-485( RS-422)的接線:

RS-485( RS-422)通信建議一定要接地,因為RS-485( RS-422)通信要求通信雙方的地電位差小于1V。即:半雙工通信接3根線(+A、-B、地),全雙工通信接5根線(+發(fā)、-發(fā)、+收、-收、地)。為了安全起見,建議通信機器的外殼接大地。RS-485( RS-422)光隔轉換器的所有外接電源的必須全部連在一起但不要與計算機外殼地相連,因為電源同時也是RS-485 RS-422的信號。當通信距離超過100米時建議使用光電隔離的通信接口轉換器。

3. RS-485 的數據zui高傳輸速率為10Mbps。但是由于RS-485 常常要與PC 機的RS-232口通信,所以實際上一般zui高115.2Kbps。又由于太高的速率會使RS-485 傳輸距離減小,所以往往為9600bps 左右或以下。

4. RS-485 接口是采用平衡驅動器和差分接收器的組合,抗噪聲干擾性好。

5. RS-485接口的zui大傳輸距離標準值為1200米(9600bps時),實際上可達3000米,RS-485 接口在總線上是允許連接多達128個收發(fā)器、即RS-485 具有多機通信能力,這樣用戶可以利用單一的RS-485 接口方便地建立起設備網絡。因RS-485 接口具有良好的抗噪聲干擾性,長的傳輸距離和多站能力等上述優(yōu)點就使其成為的串行接口。因為RS485 接口組成的半雙工網絡,一般只需二根信號線,所以RS485 接口均采用屏蔽雙絞線傳輸。RS-485 的標準并沒有規(guī)定RS485 的接口連接器標準、所以采用接線端子或者DB-9、DB-25 等連接器都可以。波士RS-485 接口是事實工業(yè)標準。

6. 采用RS485 接口時,傳輸電纜的長度如何考慮?

在使用RS485 接口時,對于特定的傳輸線經,從發(fā)生器到負載其數據信號傳輸所允許的zui大電纜長度是數據信號速率的函數,這個長度數據主要是受信號失真及噪聲等影響所限制。zui大電纜長度與信號速率的關系曲線是使用24AWG 銅芯雙絞電纜(線徑為0。51mm),線間旁路電容為52。5PF/M,終端負載電阻為100 歐時所得出。(引自GB11014-89附錄A)。當數據信號速率降低到90Kbit/S 以下時,假定zui大允許的信號損失為6dBV 時, 則電纜長度被限制在1200M。實際上,在實用時是*可以取得比它大的電纜長度。當使用不同線徑的電纜。則取得的zui大電纜長度是不相同的。例如:當數據信號速率為600Kbit/S

時,采用24AWG 電纜,zui大電纜長度是200m,若采用19AWG 電纜(線徑為0.91mm)則電纜長度將可以大于200m 若采用28AWG 電纜(線徑為0.32mm)則電纜長度只能小于200m。RS-485的遠距離通信建議采用屏蔽電纜,并且將屏蔽層作為地線。

三、什么是RS-422 接口?

RS-422 的電氣性能與RS-485*一樣。主要的區(qū)別在于:

RS-422 4 根信號線:兩根發(fā)送(Y、Z)、兩根接收(A、B)。由于RS-422 的收與發(fā)

是分開的所以可以同時收和發(fā)(全雙工)。

RS-485 2 根信號線:發(fā)送和接收都是A B。由于RS-485 的收與發(fā)是共用兩根線所以不能夠同時收和發(fā)(半雙工)。能否將RS-422 Y-A 短接作為RS-485 A、將RS-422 Z-B 短接作為RS-485 B呢?回答:不一定。條件是RS-422 必須是能夠支持多機通信的。波士電子的所有接口轉換器的RS-422 口都能夠支持全雙工多機通信,所以可以這樣簡單轉換為RS-485。

四、RS-485 RS-232接口相比有何特點?

由于RS-232 接口標準出現較早,難免有不足之處,主要有以下四點:

1 接口的信號電平值較高,易損壞接口電路的芯片,又因為與TTL 電平不兼容故需使用電平轉換電路方能與TTL 電路連接。

2 傳輸速率較低,在異步傳輸時,波特率為20Kbps?,F在由于采用新的UART 芯片16C550 等,波特率達到115.2Kbps。

3 接口使用一根信號線和一根信號返回線而構成共地的傳輸形式, 這種共地傳輸容

易產生共模干擾,所以抗噪聲干擾性弱。

4 傳輸距離有限,zui大傳輸距離標準值為50 米,實際上也只能用在15米左右。

5RS-232 只允許一對一通信,而RS-485 接口在總線上是允許連接多達128個收發(fā)器。

 

五、串口通信功能的實現

利用VC++實現串口通信的方法有多種,我們采取直接調用Window API中的一系列標準的串口通信函數,直接用這些標準函數來完成Windows下面的串口通信編程[11]。利用WindowsAPI函數控制利用API函數實現對RS232串口通信的訪問,在實現控制通信中,我們必定要調動3個函數來實現對串口的控制:

CreatFile()函數實現串口初始化并打開串口;

ReadFile()函數接收串口傳遞過來的二進制流并返回數據到接收緩沖區(qū)中

WriteFile()把應用程序發(fā)出的指令送到發(fā)送緩沖區(qū)以供串口接收1. 打開串口

以下程序用于以同步方式打開串口COM1;

HANDLE hCom;

DWORD dwErrorHcomm=CreateFile(“COM1”,GENERIC_READ|GENERIC_WRITE

,0, NULL,OPEN_EXISTING, 0, NULL);

if (hComm==(HANDLE)0Xffff)

{

dwError=GetLastError();

MessageBox(dwError);

}

2. 配置串口

配置串口是通過改變設備控制塊DCB(Device Control Block)的成員變量值來實現的,程序實現如下:

DCB dcb

dcb.BaudRate=9600;//波特率為9600bps

dcb.ByteSize=8;//數據位8

dcb.Parity=EVENPARTTY;//有校驗

dcb.StopBits=ONESTOPRTT; //一個停止位

SetCommState(hCom,&dcb);

3. 數據讀寫

對串口進行讀寫與對文件進行讀寫所用的函數相同,具體為可采用查詢、同步、異步或事件驅動等方法對串口進行讀寫所用函數如下所示:

bReadStatus=ReadFile(hCom,buffer,length,&length &m_lpOverlapped);

if(!bReadStatus)

{

if(GetLastError()=ERROR_IO_PENDING)

{

WaitForSingleObject(m_lpOverlapped,hEvent,1000);

return((char)length);

}

return 0;

}

//寫入函數程序為:

bWriteStatus=WriteFile(hCom,buffer,length,&length,&m_lpOverlapped)

if(!bWriteStatus)

{

if(GetLastError()=ERROR_IO_PENDING)

{

WaitForSingleObject(m_lpOverlapped, hEvent,1000);

return((char)length);

}

return 0;

}

4. 程序的編制

VC++進行程序的編制首先要對串口進行初始化,設定端口,通信速率和校驗方式,并在使用前打開串口,程序部分如下:

{

Cdialog::OnInitDialog();//TODO: Add extra initialization here

m_comm.SetCommPort(1);//選擇串口1

if(! m_comm.GetPortOpen())

m_comm.SetPortOpen(TRUE);//打開串口1

m_comm.SetSettings(“9600,n,8,1”); //設置串口參數

m_comm.SetRThreshold(1);

m_comm.SetInputMode(1);//設置二進制模式

return TRUE;

}

除了串口的位置和基本串口參數數據傳輸速率9600bps,1位開始位,8位數據位,1位停止位,一位奇偶校驗設置外,為了實現實時數據采集功能,接受數據的讀寫要盡可能的快速,則設置RTHreshold=1即接收緩沖區(qū)收到一個字節(jié)產生OnComm事件InputLen=1每次讀取一個字節(jié)。如果PC上位機在一定時間內不能將數據處理完,接收緩沖區(qū)會滯留數據,數據會產生丟失現象,我們必須對接受緩沖區(qū)進行適當的設置。我們利用API函數實現串口通信的方法,實現了羅經及發(fā)射機對上位機串行通信的功能。

 

會員登錄

×

請輸入賬號

請輸入密碼

=請輸驗證碼

收藏該商鋪

X
該信息已收藏!
標簽:
保存成功

(空格分隔,最多3個,單個標簽最多10個字符)

常用:

提示

X
您的留言已提交成功!我們將在第一時間回復您~
在線留言
连山| 长阳| 怀集县| 博罗县| 西畴县| 文成县| 上蔡县| 上蔡县| 赤峰市| 江阴市| 黔江区| 吉水县| 鱼台县| 五河县| 藁城市| 桓仁| 柳江县| 平顶山市| 汉川市| 慈溪市| 和硕县| 五莲县| 社会| 津市市| 海淀区| 六枝特区| 临江市| 临武县| 苗栗县| 靖江市| 个旧市| 淮南市| 金湖县| 栾川县| 兴文县| 论坛| 南京市| 中牟县| 花垣县| 林西县| 平安县|