0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RS232、RS485和RS422基礎(chǔ)知識(shí)

工控論壇 ? 來源:工控資料窩 ? 2023-03-03 09:44 ? 次閱讀

RS232、RS485RS422基礎(chǔ)知識(shí)

一、RS232基礎(chǔ)知識(shí)

計(jì)算機(jī)與計(jì)算機(jī)或計(jì)算機(jī)與終端之間的數(shù)據(jù)傳送可以采用串行通訊和并行通訊二種方式。由于串行通訊方式具有使用線路少、成本低,特別是在遠(yuǎn)程傳輸時(shí),避免了多條線路特性的不一致而被廣泛采用。

在串行通訊時(shí),要求通訊雙方都采用一個(gè)標(biāo)準(zhǔn)接口,使不同的設(shè)備可以方便地連接起來進(jìn)行通訊。RS-232-C接口(又稱EIA RS-232-C)是目前最常用的一種串行通訊接口。

RS-232-C是美國電子工業(yè)協(xié)會(huì)EIA(Electronic Industry Association)制定的一種串行物理接口標(biāo)準(zhǔn)。RS是英文“推薦標(biāo)準(zhǔn)”的縮寫,232為標(biāo)識(shí)號(hào),C表示修改次數(shù),代表RS232的最新一次修改(1969),在這之前,有RS232B、RS232A。它是在1970年由美國電子工業(yè)協(xié)會(huì)(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計(jì)算機(jī)終端生產(chǎn)廠家共同制定的用于串行通訊的標(biāo)準(zhǔn)。它的全名是“數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通訊設(shè)備。(DCE)之間串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)”。

8f882f5c-b93b-11ed-bfe3-dac502259ad0.jpg

1、電氣特性

EIA-RS-232C對(duì)電器特性、邏輯電平和各種信號(hào)線功能都作了規(guī)定。

在TxD和RxD上:邏輯1(MARK)=-3V~-15V ,邏輯0(SPACE)=+3~+15V 在RTS、CTS、DSR、DTR和DCD等控制線上:


信號(hào)有效(接通,ON狀態(tài),正電壓)=+3V~+15V


信號(hào)無效(斷開,OFF狀態(tài),負(fù)電壓)=-3V~-15V

根據(jù)設(shè)備供電電源的不同,+-5、+-10、+-12和+-15這樣的電平都是可能的。

2、連接器機(jī)械特性

由于RS-232C并未定義連接器的物理特性,因此,出現(xiàn)了DB-25、DB-15和DB-9各種類型的連接器,其引腳的定義也各不相同。最近,8管腳的RJ-45型連接器變得越來越普遍,盡管它的管腳分配相差很大。EIA/TIA 561標(biāo)準(zhǔn)規(guī)定了一種管腳分配的方法,但是由Dave Yost發(fā)明的被廣泛使用在Unix計(jì)算機(jī)上的Yost串連設(shè)備配線標(biāo)準(zhǔn)("Yost Serial Device Wiring Standard")以及其他很多設(shè)備都沒有采用上述任一種連線標(biāo)準(zhǔn)。下表中列出的是被較多使用的RS-232中的信號(hào)和管腳分配:

8f992a00-b93b-11ed-bfe3-dac502259ad0.jpg

信號(hào)的標(biāo)注是從DTE設(shè)備的角度出發(fā)的,TD、DTR和RTS信號(hào)是由DTE產(chǎn)生的,RD、DSR、CTS、DCD和RI信號(hào)是由DCE產(chǎn)生的。

PC 機(jī)的RS-232 口為9 芯針插座。一些設(shè)備與PC 機(jī)連接的RS-232 接口,因?yàn)椴皇褂脤?duì)方的傳送控制信號(hào),只需三條接口線,即“發(fā)送數(shù)據(jù)TXD”、“接收數(shù)據(jù)RXD”和“信號(hào)地GND”。

8facbffc-b93b-11ed-bfe3-dac502259ad0.jpg

雙向接口能夠只需要3根線制作是因?yàn)镽S-232的所有信號(hào)都共享一個(gè)公共接地。非平衡電路使得RS-232非常的容易受兩設(shè)備間基點(diǎn)電壓偏移的影響。對(duì)于信號(hào)的上升期和下降期,RS-232也只有相對(duì)較差的控制能力,很容易發(fā)生串話的問題。RS-232被推薦在短距離(15m以內(nèi))間通信。由于非對(duì)稱電路的關(guān)系,RS-232接口電纜通常不是由雙絞線制作的。

3、傳輸電纜

RS-232-C標(biāo)準(zhǔn)規(guī)定的數(shù)據(jù)傳輸速率為每秒50、75、100、150、300、600、1200、2400、4800、9600、19200波特,驅(qū)動(dòng)器允許有2500pF的電容負(fù)載,通信距離將受此電容限制。

例如,采用150pF/m的通信電纜時(shí),最大通信距離為15m;若每米電纜的電容量減小,通信距離可以增加。傳輸距離短的另一原因是RS-232屬單端信號(hào)傳送,存在共地噪聲和不能抑制共模干擾等問題,因此一般用于20m以內(nèi)的通信。

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

8fbb5508-b93b-11ed-bfe3-dac502259ad0.jpg

4、鏈路層

在RS-232標(biāo)準(zhǔn)中,字符是以一系列位元來一個(gè)接一個(gè)的傳輸。最長(zhǎng)用的編碼格式是異步起停asynchronous start-stop格式,它使用一個(gè)起始位后面緊跟7或8 個(gè)數(shù)據(jù)比特,這個(gè)可能是奇偶位,然后是兩個(gè)停止位。所以發(fā)送一個(gè)字符需要10比特,帶來的一個(gè)好的效果是使全部的傳輸速率,發(fā)送信號(hào)的速率以10分劃。

串行通信在軟件設(shè)置里需要做多項(xiàng)設(shè)置,最常見的設(shè)置包括波特率、奇偶校驗(yàn)和停止位。波特率是指從一設(shè)備發(fā)到另一設(shè)備的波特率,即每秒鐘多少比特bits per second (bit/s)。典型的波特率是300、1200、2400、9600、19200等bit/s。一般通信兩端設(shè)備都要設(shè)為相同的波特率,但有些設(shè)備也可以設(shè)置為自動(dòng)檢測(cè)波特率。

奇偶校驗(yàn)Parity是用來驗(yàn)證數(shù)據(jù)的正確性。奇偶校驗(yàn)一般不用,如果使用,那么既可以做奇校驗(yàn)也可以做偶校驗(yàn)。奇偶校驗(yàn)是通過修改每一發(fā)送字節(jié)(也可以限制發(fā)送的字節(jié))來工作的。如果不作奇偶校驗(yàn),那么數(shù)據(jù)是不會(huì)被改變的。在偶校驗(yàn)中,因?yàn)槠媾夹r?yàn)位會(huì)被相應(yīng)的置1或0(一般是最高位或最低位),所以數(shù)據(jù)會(huì)被改變以使得所有傳送的數(shù)位(含字符的各數(shù)位和校驗(yàn)位)中“1”的個(gè)數(shù)為偶數(shù);在奇校驗(yàn)中,所有傳送的數(shù)位(含字符的各數(shù)位和校驗(yàn)位)中“1”的個(gè)數(shù)為奇數(shù)。奇偶校驗(yàn)可以用于接受方檢查傳輸是否發(fā)送生錯(cuò)誤——如果某一字節(jié)中“1”的個(gè)數(shù)發(fā)生了錯(cuò)誤,那么這個(gè)字節(jié)在傳輸中一定有錯(cuò)誤發(fā)生。如果奇偶校驗(yàn)是正確的,那么要么沒有發(fā)生錯(cuò)誤要么發(fā)生了偶數(shù)個(gè)的錯(cuò)誤。

8fcaacec-b93b-11ed-bfe3-dac502259ad0.jpg

停止位是在每個(gè)字節(jié)傳輸之后發(fā)送的,它用來幫助接受信號(hào)方硬件重同步。

在串行通信軟件設(shè)置中D/P/S是常規(guī)的符號(hào)表示。8/N/1(非常普遍)表明8bit數(shù)據(jù),沒有奇偶校驗(yàn),1bit停止位。數(shù)據(jù)位可以設(shè)置為7、8或者9,奇偶校驗(yàn)位可以設(shè)置為無(N)、奇(O)或者偶(E),奇偶校驗(yàn)位可以使用數(shù)據(jù)中的比特位,所以8/E/1就表示一共8位數(shù)據(jù)位,其中一位用來做奇偶校驗(yàn)位。停止位可以是1、1.5或者2位的(1.5是用在波特率為60wpm的電傳打字機(jī)上的)。

5、傳輸控制

當(dāng)需要發(fā)送握手信號(hào)或數(shù)據(jù)完整性檢測(cè)時(shí)需要制定其他設(shè)置。公用的組合有RTS/CTS,DTR/DSR或者XON/XOFF(實(shí)際中不使用連接器管腳而在數(shù)據(jù)流內(nèi)插入特殊字符)

接受方把XON/XOFF信號(hào)發(fā)給發(fā)送方來控制發(fā)送方何時(shí)發(fā)送數(shù)據(jù),這些信號(hào)是與發(fā)送數(shù)據(jù)的傳輸方向相反的。XON信號(hào)告訴發(fā)送方接受方準(zhǔn)備好接受更多的數(shù)據(jù),XOFF信號(hào)告訴發(fā)送方停止發(fā)送數(shù)據(jù)直到知道接受方再次準(zhǔn)備好。XON/XOFF一般不贊成使用,推薦用RTS/CTS控制流來代替它們。

XON/XOFF是一種工作在終端間的帶內(nèi)方法,但是必須兩端都支持這個(gè)協(xié)議,而且在突然啟動(dòng)的時(shí)候會(huì)有混淆的可能。

XON/XOFF可以工作于3線的接口。RTS/CTS最初是設(shè)計(jì)為電傳打字機(jī)和調(diào)制解調(diào)器半雙工協(xié)作通信的,每次它只能一方調(diào)制解調(diào)器發(fā)送數(shù)據(jù)。終端必須發(fā)送請(qǐng)求發(fā)送信號(hào)然后等到調(diào)制解調(diào)器回應(yīng)清除發(fā)送信號(hào)。盡管RTS/CTS是通過硬件達(dá)到握手,但它有自己的優(yōu)勢(shì)。

6、RS-232標(biāo)準(zhǔn)的不足

經(jīng)過許多年來RS-232 器件以及通信技術(shù)的改進(jìn),RS-232 的通信距離已經(jīng)大大增加。由于RS-232 接口標(biāo)準(zhǔn)出現(xiàn)較早,難免有不足之處,主要有以下四點(diǎn):

(1)接口的信號(hào)電平值較高,易損壞接口電路的芯片,又因?yàn)榕cTTL 電平不兼容故需使用電平轉(zhuǎn)換電路方能與TTL 電路連接。

(2)傳輸速率較低,在異步傳輸時(shí),波特率為20Kbps。現(xiàn)在由于采用新的UART 芯片16C550等,波特率達(dá)到115.2Kbps。

(3)接口使用一根信號(hào)線和一根信號(hào)返回線而構(gòu)成共地的傳輸形式,這種共地傳輸容易產(chǎn)生共模干擾,所以抗噪聲干擾性弱。

(4)傳輸距離有限,最大傳輸距離標(biāo)準(zhǔn)值為50米,實(shí)際上也只能用在15米左右。

二、RS485基礎(chǔ)知識(shí)

針對(duì)RS-232串口標(biāo)準(zhǔn)的局限性,人們又提出了RS-422,RS-485接口標(biāo)準(zhǔn)。RS-485/422采用平衡發(fā)送和差分接收方式實(shí)現(xiàn)通信:發(fā)送端將串行口的TTL電平信號(hào)轉(zhuǎn)換成差分信號(hào)A、B兩路輸出,經(jīng)過線纜傳輸之后在接收端將差分信號(hào)還原成TTL電平信號(hào)。由于傳輸線通常使用雙絞線,又是差分傳輸,所以又極強(qiáng)的抗共模干擾的能力,總線收發(fā)器靈敏度很高,可以檢測(cè)到低至200mV電壓。故傳輸信號(hào)在千米之外都是可以恢復(fù)。

1、RS-485的電氣特性

驅(qū)動(dòng)器能輸出±7V的共模電壓

接收器的輸入電阻RIN≥12kΩ

輸入端的電容≤50pF
在節(jié)點(diǎn)數(shù)為32個(gè),配置了120Ω的終端電阻的情況下,驅(qū)動(dòng)器至少還能輸出電壓1.5V(終端電阻的大小與所用雙絞線的參數(shù)有關(guān))
發(fā)送端:邏輯"1"以兩線間的電壓差為+(2 至6) V 表示;邏輯"0"以兩線間的電壓差為-(2 至6)V 表示。
接收器的輸入靈敏度為200mV(即(V+)-(V-)≥0.2V,表示信號(hào)"0";(V+)-(V-)≤-0.2V,表示信號(hào)"1")

2、傳輸速率與傳輸距離

RS-485 的數(shù)據(jù)最高傳輸速率為10Mbps,最大的通信距離約為1219M,傳輸速率與傳輸距離成反比,在10Kb/S的傳輸速率下,才可以達(dá)到最大的通信距離。

但是由于RS-485 常常要與PC 機(jī)的RS-232口通信,所以實(shí)際上一般最高115.2Kbps。又由于太高的速率會(huì)使RS-485 傳輸距離減小,所以往往為9600bps 左右或以下。

3、網(wǎng)絡(luò)拓?fù)?/p>

RS-485 接口是采用平衡驅(qū)動(dòng)器和差分接收器的組合,抗共模干能力增強(qiáng),即抗噪聲干擾性好。RS-485采用半雙工工作方式,支持多點(diǎn)數(shù)據(jù)通信。

RS-485總線網(wǎng)絡(luò)拓?fù)湟话悴捎媒K端匹配的總線型結(jié)構(gòu)。即采用一條總線將各個(gè)節(jié)點(diǎn)串接起來,不支持環(huán)形或星型網(wǎng)絡(luò)。如果需要使用星型結(jié)構(gòu),就必須使用485中繼器或者485集線器才可以。RS-485/422總線一般最大支持32個(gè)節(jié)點(diǎn),如果使用特制的485芯片,可以達(dá)到128個(gè)或者256個(gè)節(jié)點(diǎn),最大的可以支持到400個(gè)節(jié)點(diǎn)。

8fdae9e0-b93b-11ed-bfe3-dac502259ad0.jpg

4、連接器

RS-485 的國際標(biāo)準(zhǔn)并沒有規(guī)定RS485 的接口連接器標(biāo)準(zhǔn)、所以采用接線端子或者DB-9、DB-25 等連接器都可以。

三、RS422基礎(chǔ)知識(shí)

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

(1)RS-485 有2 根信號(hào)線:發(fā)送和接收都是A 和B。由于RS-485 的收與發(fā)是共用兩根線,所以不能夠同時(shí)收和發(fā)(半雙工)。

(2)RS-422 有4 根信號(hào)線:兩根發(fā)送(Y、Z)、兩根接收(A、B)。由于RS-422 的收與發(fā)是分開的,所以可以同時(shí)收和發(fā)(全雙工)。

(3)支持多機(jī)通信的RS-422將Y-A 短接作為RS-485 的A、將RS-422 的Z-B 短接作為RS-485 的B可以這樣簡(jiǎn)單轉(zhuǎn)換為RS-485。

8fea91e2-b93b-11ed-bfe3-dac502259ad0.jpg

很多人往往都誤認(rèn)為RS-422串行接口是RS-485串行接口的全雙工版本,實(shí)際上,它們?cè)陔娖魈匦陨洗嬖谥簧俨町悾材k妷悍秶徒邮掌鬏斎腚娮璨煌沟迷搩蓚€(gè)標(biāo)準(zhǔn)適用于不同的應(yīng)用領(lǐng)域。RS-485串行接口的驅(qū)動(dòng)器可用于RS-422串行接口的應(yīng)用中,因?yàn)镽S-485串行接口滿足所有的RS-422串行接口性能參數(shù),反之則不能成立。對(duì)于RS-485串行接口的驅(qū)動(dòng)器,共模電壓的輸出范圍是-7V和+12V之間;對(duì)于RS-422串行接口的驅(qū)動(dòng)器,該項(xiàng)性能指標(biāo)僅有±7V。RS-422串行接口接收器的最小輸入電阻是4KΩ;而RS-485串行接口接收器的最小輸入電阻則是12KΩ。

串口與握手基礎(chǔ)知識(shí)

一、串口基礎(chǔ)知識(shí)


串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的協(xié)議(不要與通用串行總線Universal Serial Bus或者USB混淆)。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于RS232的串口。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口。同時(shí),串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。

串口通信的概念非常簡(jiǎn)單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。它很簡(jiǎn)單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。比如IEEE488定義并行通行狀態(tài)時(shí),規(guī)定設(shè)備線總常不得超過20米,并且任意兩個(gè)設(shè)備間的長(zhǎng)度不得超過2米;而對(duì)于串口而言,長(zhǎng)度可達(dá)1200米。

900cbd94-b93b-11ed-bfe3-dac502259ad0.jpg

典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成:(1)地線,(2)發(fā)送,(3)接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時(shí)在另一根線上接收數(shù)據(jù)。其他線用于握手,但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通行的端口,這些參數(shù)必須匹配:

1、波特率

這是一個(gè)衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個(gè)數(shù)。例如300波特表示每秒鐘發(fā)送300個(gè)bit。當(dāng)我們提到時(shí)鐘周期時(shí),我們就是指波特率例如如果協(xié)議需要4800波特率,那么時(shí)鐘是4800Hz。這意味著串口通信在數(shù)據(jù)線上的采樣率為4800Hz。通常電話線的波特率為14400,28800和36600。波特率可以遠(yuǎn)遠(yuǎn)大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通信,典型的例子就是GPIB設(shè)備的通信。

2、數(shù)據(jù)位

這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會(huì)是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴(kuò)展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡(jiǎn)單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語“包”指任何通信的情況。

3、停止位

用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。


4、奇偶校驗(yàn)位

在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。當(dāng)然沒有校驗(yàn)位也是可以的。對(duì)于偶和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對(duì)于偶校驗(yàn),校驗(yàn)位為0,保證邏輯高的位數(shù)是偶數(shù)個(gè)。如果是奇校驗(yàn),校驗(yàn)位位1,這樣就有3個(gè)邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡(jiǎn)單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。

二、握手基礎(chǔ)知識(shí)


RS-232通行方式允許簡(jiǎn)單連接三線:Tx、Rx和地線。但是對(duì)于數(shù)據(jù)傳輸,雙方必須對(duì)數(shù)據(jù)定時(shí)采用使用相同的波特率。盡管這種方法對(duì)于大多數(shù)應(yīng)用已經(jīng)足夠,但是對(duì)于接收方過載的情況這種使用受到限制。這時(shí)需要串口的握手功能。在這一部分,我們討論三種最常用的RS-232握手形式:軟件握手、硬件握手和Xmodem。

1、軟件握手

我們討論的第一種握手是軟件握手。通常用在實(shí)際數(shù)據(jù)是控制字符的情況,類似于GPIB使用命令字符串的方式。必須的線仍然是三根:Tx、Rx和地線,因?yàn)榭刂谱址趥鬏斁€上和普通字符沒有區(qū)別,函數(shù)SetXModem允許用戶使能或者禁止用戶使用兩個(gè)控制字符XON和OXFF。這些字符在通信中由接收方發(fā)送,使發(fā)送方暫停。

901a32bc-b93b-11ed-bfe3-dac502259ad0.jpg

例如:假設(shè)發(fā)送方以高波特率發(fā)送數(shù)據(jù)。在傳輸中,接收方發(fā)現(xiàn)由于CPU忙于其他工作,輸入buffer已經(jīng)滿了。為了暫時(shí)停止傳輸,接收方發(fā)送XOFF,典型的值是十進(jìn)制19,即十六進(jìn)制13,直到輸入buffer空了。一旦接收方準(zhǔn)備好接收,它發(fā)送XON,典型的值是十進(jìn)制17,即十六進(jìn)制11,繼續(xù)通信。輸入buffer半滿時(shí),LabWindows發(fā)送XOFF。此外,如果XOFF傳輸被打斷,LabWindows會(huì)在buffer達(dá)到75%和90%時(shí)發(fā)送XOFF。顯然,發(fā)送方必須遵循此守則以保證傳輸繼續(xù)。

2、硬件握手

第二種是使用硬件線握手。和Tx和Rx線一樣,RTS/CTS和DTR/DSR一起工作,一個(gè)作為輸出,另一個(gè)作為輸入。第一組線是RTS (Request to Send)和CTS(Clear to Send)。當(dāng)接收方準(zhǔn)備好接收數(shù)據(jù),它置高RTS線表示它準(zhǔn)備好了,如果發(fā)送方也就緒,它置高CTS,表示它即將發(fā)送數(shù)據(jù)。另一組線是DTR(Data Terminal Ready)和DSR(Data Set Ready)。這些現(xiàn)主要用于Modem通信。使得串口和Modem通信他們的狀態(tài)。例如:當(dāng)Modem已經(jīng)準(zhǔn)備好接收來自PC的數(shù)據(jù),它置高DTR線,表示和電話線的連接已經(jīng)建立。讀取DSR線置高,PC機(jī)開始發(fā)送數(shù)據(jù)。一個(gè)簡(jiǎn)單的規(guī)則是DTR/DSR用于表示系統(tǒng)通信就緒,而RTS/CTS用于單個(gè)數(shù)據(jù)包的傳輸。

902a46a2-b93b-11ed-bfe3-dac502259ad0.jpg

在LabWindows,函數(shù)SetCTSMode使能或者禁止使用硬件握手。如果CTS模式使能,LabWindows使用如下規(guī)則:當(dāng)PC發(fā)送數(shù)據(jù):RS-232庫必須檢測(cè)CTS線高后才能發(fā)送數(shù)據(jù)。

當(dāng)PC接收數(shù)據(jù):


如果端口打開,且輸入隊(duì)列有空接收數(shù)據(jù),庫函數(shù)置高RTS和DTR。
如果輸入隊(duì)列90%滿,庫函數(shù)置低RTS,但使DTR維持高電平。
如果端口隊(duì)列近乎空了,庫函數(shù)置高RTS,但使DRT維持高電平。
如果端口關(guān)閉,庫函數(shù)置低RTS和DTR。

3、XModem握手

最后討論的握手叫做XModem文件傳輸協(xié)議。這個(gè)協(xié)議在Modem通信中非常通用。盡管它通常使用在Modem通信中,XModem協(xié)議能夠直接在其他遵循這個(gè)協(xié)議的設(shè)備通信中使用。在LabWindows中,實(shí)際的XModem應(yīng)用對(duì)用戶隱藏了。只要PC和其他設(shè)備使用XModem協(xié)議,在文件傳輸中就使用LabWindows的XModem函數(shù)。函數(shù)是XModemConfig,XModemSend和XModemReceive。

903b582a-b93b-11ed-bfe3-dac502259ad0.jpg

XModem使用介于如下參數(shù)的協(xié)議:start_of_data、end_of_data、neg_ack、wait_delay、 start_delay、max_tries、packet_size。這些參數(shù)需要通信雙方認(rèn)定,標(biāo)準(zhǔn)的XModem有一個(gè)標(biāo)準(zhǔn)的定義:然而,可以通過 XModemConfig函數(shù)修改,以滿足具體需要。這些參數(shù)的使用方法由接收方發(fā)送的字符neg_ack確定。這通知發(fā)送方其準(zhǔn)備接收數(shù)據(jù)。它開始嘗試發(fā)送,有一個(gè)超時(shí)參數(shù)start_delay;當(dāng)超時(shí)的嘗試超過max_ties次數(shù),或者收到接收方發(fā)送的start_of_data,發(fā)送方停止嘗試。如果從發(fā)送方收到start_of_data,接收方將讀取后繼信息數(shù)據(jù)包。包中含有包的數(shù)目、包數(shù)目的補(bǔ)碼作為錯(cuò)誤校驗(yàn)、packet_size字節(jié)大小的實(shí)際數(shù)據(jù)包,和進(jìn)一步錯(cuò)誤檢查的求和校驗(yàn)值。在讀取數(shù)據(jù)后,接收方會(huì)調(diào)用wait_delay,然后想發(fā)送方發(fā)送響應(yīng)。如果發(fā)送方?jīng)]有收到響應(yīng),它會(huì)重新發(fā)送數(shù)據(jù)包,直到收到響應(yīng)或者超過重發(fā)次數(shù)的最大值max_tries。如果一直沒有收到響應(yīng),發(fā)送方通知用戶傳輸數(shù)據(jù)失敗。

由于數(shù)據(jù)必須以pack_size個(gè)字節(jié)按包發(fā)送,當(dāng)最后一個(gè)數(shù)據(jù)包發(fā)送時(shí),如果數(shù)據(jù)不夠放滿一個(gè)數(shù)據(jù)包,后面會(huì)填充ASCII碼NULL(0)字節(jié)。這導(dǎo)致接收的數(shù)據(jù)比原數(shù)據(jù)多。在XModem情況下一定不要使用XON/XOFF,因?yàn)閄Modem發(fā)送方發(fā)出包的數(shù)目很可能增加到XON/OFF控制字符的值,從而導(dǎo)致通信故障。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 調(diào)制解調(diào)器

    關(guān)注

    3

    文章

    836

    瀏覽量

    38597
  • RS-232
    +關(guān)注

    關(guān)注

    0

    文章

    382

    瀏覽量

    49646
  • 串行通訊
    +關(guān)注

    關(guān)注

    2

    文章

    77

    瀏覽量

    16328

原文標(biāo)題:【干貨】詳解RS232、RS485、RS422、串口&握手!

文章出處:【微信號(hào):gkongbbs,微信公眾號(hào):工控論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RS232,RS422RS485標(biāo)準(zhǔn)及應(yīng)用

    RS232,RS422RS485標(biāo)準(zhǔn)及應(yīng)用
    發(fā)表于 08-15 13:13

    RS232,RS422RS485的區(qū)別

    RS-485用于多點(diǎn)互連時(shí)非常方便,可以省掉許多信號(hào)線。應(yīng)用RS-485 可以聯(lián)網(wǎng)構(gòu)成分布式系統(tǒng),其允許最多并聯(lián)32臺(tái)驅(qū)動(dòng)器和32臺(tái)接收器。3、RS-422RS422總線,RS485
    發(fā)表于 06-19 19:29

    UART/RS485/RS422/RS232到底是什么?

    UART/RS485/RS422/RS232到底是什么?
    發(fā)表于 02-16 07:03

    RS485/RS422/RS232/TTL具有哪些特性參數(shù)?

    RS485/RS422/RS232/TTL具有哪些特性參數(shù)?
    發(fā)表于 02-22 07:40

    rs422接口定義 rs232接口定義 rs485接口定義

    rs422接口定義 rs232接口定義 rs485接口定義 Pin 信 號(hào) 定 義  
    發(fā)表于 04-27 17:33 ?1.5w次閱讀

    一種RS232/RS485/RS422接口轉(zhuǎn)換器說明

    一種RS232/RS485/RS422接口轉(zhuǎn)換器說明 &n
    發(fā)表于 10-17 08:31 ?2.4w次閱讀
    一種<b class='flag-5'>RS232</b>/<b class='flag-5'>RS485</b>/<b class='flag-5'>RS422</b>接口轉(zhuǎn)換器說明

    RS232RS422,RS485的區(qū)別

    RS232,RS422RS485的區(qū)別 1、RS-232-C   RS-232-C是美國電子工業(yè)協(xié)會(huì)EIA(Electronic I
    發(fā)表于 10-17 08:33 ?3084次閱讀

    RS232,RS422,RS485的區(qū)別

    RS232RS422,RS485的區(qū)別
    發(fā)表于 03-04 17:53 ?37次下載

    TTL CMOS RS232 RS485 RS422各種電平內(nèi)容

    TTL CMOS RS232 RS485 RS422各種電平內(nèi)容
    發(fā)表于 10-31 14:32 ?55次下載
    TTL CMOS <b class='flag-5'>RS232</b> <b class='flag-5'>RS485</b> <b class='flag-5'>RS422</b>各種電平內(nèi)容

    RS232、RS485、RS422、串口與握手基礎(chǔ)知識(shí)詳細(xì)介紹

    本文開始闡述了RS232RS485RS422相關(guān)的基礎(chǔ)知識(shí),其次介紹了RS232RS485
    發(fā)表于 04-19 10:29 ?3.6w次閱讀
    <b class='flag-5'>RS232</b>、<b class='flag-5'>RS485</b>、<b class='flag-5'>RS422</b>、串口與握手<b class='flag-5'>基礎(chǔ)知識(shí)</b>詳細(xì)介紹

    RS232、RS485RS422基礎(chǔ)知識(shí)詳解

    由于RS-232C并未定義連接器的物理特性,因此,出現(xiàn)了DB-25、DB-15和DB-9各種類型的連接器,其引腳的定義也各不相同。最近,8管腳的RJ-45型連接器變得越來越普遍,盡管它的管腳分配相差
    的頭像 發(fā)表于 07-20 08:24 ?1.7w次閱讀

    圖文解 RS485 RS422 RS232 TTL

    圖文詳解 RS485 RS422 RS232 TTLRS485、RS422、RS232、TTL只
    發(fā)表于 12-28 20:02 ?118次下載
    圖文解 <b class='flag-5'>RS485</b> <b class='flag-5'>RS422</b> <b class='flag-5'>RS232</b> TTL

    RS485/RS422/RS232覆盆子帽開源項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《RS485/RS422/RS232覆盆子帽開源項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 07-29 09:40 ?5次下載
    <b class='flag-5'>RS485</b>/<b class='flag-5'>RS422</b>/<b class='flag-5'>RS232</b>覆盆子帽開源項(xiàng)目

    杰盛微 RS485/RS422/RS232/RS562收發(fā)器 數(shù)據(jù)手冊(cè)

    RS485/RS422/RS232/RS562收發(fā)器SOP-85VOriginal2.5Mb/sOriginal
    發(fā)表于 08-19 15:54 ?7次下載

    RS232、RS422RS485怎么選?串口通信標(biāo)準(zhǔn)的深度剖析!

    RS232、RS422、RS485三種串口通訊規(guī)范各有千秋,適用于不同的應(yīng)用場(chǎng)景。RS232適宜短路線、低速簡(jiǎn)單地通訊,RS422在遠(yuǎn)距離和
    的頭像 發(fā)表于 09-02 11:51 ?784次閱讀
    <b class='flag-5'>RS232</b>、<b class='flag-5'>RS422</b>、<b class='flag-5'>RS485</b>怎么選?串口通信標(biāo)準(zhǔn)的深度剖析!