什么是串口通信
串口通信,就是傳數(shù)據(jù)只有一根線傳輸,一次只能傳一個(gè)位,要傳一個(gè)字節(jié)就需要傳8次。串口通信就是把數(shù)據(jù)串在一根線上傳輸,所以就叫串口吧。
在對(duì)速率要求不高的情況,使用一根線發(fā)送數(shù)據(jù)是帶來(lái)大大的方便和實(shí)用價(jià)值的。
為了能正常發(fā)送和接收正確的數(shù)據(jù),那異步串口通信就需要如下圖的格式。
在串口的通信參數(shù)上,就有了波特率、起始位、數(shù)據(jù)位、校驗(yàn)位、停止位這幾個(gè)參數(shù)。
232\485\422的區(qū)別
串口通信主要為分232、485、422三種通信方式,這三種有什么區(qū)別呢?
232通信
232通信主要是由RX、TX、GND三根線組成。RX接TX,TX接RX,GND接GND。這里發(fā)送和接收分別是由不同的線處理的,也就是能同時(shí)發(fā)送數(shù)據(jù)和接收數(shù)據(jù),這就是所謂的全雙工通信。
在這里擴(kuò)展一下,串口通信還有一個(gè)功能叫做全功能串口通信,也叫標(biāo)準(zhǔn)串口。因?yàn)樵趦蓚€(gè)設(shè)備間進(jìn)行數(shù)據(jù)傳輸,有些設(shè)備處理速度比較快,有些數(shù)據(jù)比較慢。為了保證數(shù)據(jù)能正常傳輸,在RX、TX的基礎(chǔ)上,還增加了幾個(gè)控制引腳,最后成了9個(gè)引腳,也就是常見(jiàn)的DB9這個(gè)東西,如下圖所示。
但是,如今很多控制器、人機(jī)界面、PLC等使用串口通信中一般不使用標(biāo)準(zhǔn)串口,而是直接使用RX、TX、GND三根線來(lái)通信的。
485通信
485的出現(xiàn),是為了解決232通信距離受限的問(wèn)題。
485通信只需要+、-兩根線,或者也叫A、B兩根線。A、B兩根線的差分電平信號(hào)就是作為數(shù)據(jù)信號(hào)傳輸。由于發(fā)送與接收都是用這兩根線,也就是說(shuō)每次只能用作發(fā)送或者只能用作接收。所以,485是半雙工通信。
485就是這樣犧牲了232全雙工的效率來(lái)達(dá)到自己傳輸距離遠(yuǎn)的代價(jià)。
422通信
422的出現(xiàn),是為了既實(shí)現(xiàn)232的全雙工通信方式,又能像485這樣提高傳輸距離。422也常被標(biāo)注為485-4,而485被標(biāo)注為485-2。因?yàn)?85-2是2根線,485-4是4根線,下圖是422的示意圖。
422就是把232的RX分成兩根線,RX+,RX-,把TX分成TX+,TX-。這樣就可以同時(shí)發(fā)送和同時(shí)接收了,還可以像485這樣,有較遠(yuǎn)的傳輸距離??墒沁@樣一種很有優(yōu)勢(shì)的通信方式,卻用得不多,最常用到的是232跟485。
串口通信常見(jiàn)問(wèn)題
1、電腦使用USB轉(zhuǎn)串口可以和設(shè)備通信上,換成屏與設(shè)備就通信不上了?
2、用A家的屏可以和設(shè)備通信,換成B家的屏就通信不上了?
3、以前不接地線可以通信,換個(gè)設(shè)備為什么需要接地線了?
這個(gè)問(wèn)題和上一個(gè)類(lèi)似,因?yàn)橛行┰O(shè)備使用了隔離電源。以前不接地可以通信,有可能實(shí)際上地線已經(jīng)接了,所以才可以通信??赡軗Q了個(gè)帶隔離電源的,兩個(gè)設(shè)備的地是隔離的,就需要在串口上把地線接起來(lái)。
4、一個(gè)設(shè)備是232,另一個(gè)設(shè)備是422,沒(méi)有轉(zhuǎn)換設(shè)備,怎么辦?
剛才也講了422和232的接線,因?yàn)檫@兩個(gè)都是全雙工的,接收和發(fā)送都是分到的,而422只是以一種差分信號(hào)進(jìn)行傳輸。
把422的Rx+與232的TX接,422的RX-與232的GND接。
5、用232通信沒(méi)問(wèn)題,用485通信沒(méi)問(wèn)題,使用232轉(zhuǎn)485之后就通信不穩(wěn)定?
但是485就得管了。因?yàn)榧热皇前腚p工,就得嚴(yán)格保證通路上只能有發(fā)送或只能有接收的數(shù)據(jù),一旦同時(shí)有發(fā)送和接收,數(shù)據(jù)就會(huì)沖突了。所以解決的辦法就是主站設(shè)備,也就是主動(dòng)命令的一方就需要嚴(yán)格控制好發(fā)送數(shù)據(jù)命令的節(jié)奏了。當(dāng)然有些232轉(zhuǎn)485的設(shè)備做的比較好了,可以優(yōu)化這個(gè),但是主站還是要控制,比較把通信速率調(diào)節(jié)慢一些。
6、要想實(shí)現(xiàn)兩個(gè)屏或兩個(gè)主站通過(guò)485訪問(wèn)modbus設(shè)備,有什么好的辦法?在485通信中,基本上是一主多從。但是遇到一些客戶實(shí)際使用中,有客戶想用兩個(gè)屏來(lái)訪問(wèn)一個(gè)modbus設(shè)備的。目前暫時(shí)還沒(méi)有好的辦法。
7、串口通信的弱點(diǎn)
剛才提到,同步通信需要依賴(lài)于時(shí)鐘信號(hào)。這就存在一個(gè)問(wèn)題,這個(gè)時(shí)鐘信號(hào)是誰(shuí)來(lái)發(fā)起呢。在同步通信中,往往需要一個(gè)主設(shè)備發(fā)起時(shí)鐘信號(hào)讀從模塊的數(shù)據(jù)。在實(shí)際中,有屏讀PLC,有屏讀屏的數(shù)據(jù)。而單純地從異步串口通信來(lái)說(shuō),是沒(méi)有主從之說(shuō),雙方都是平等的角色,都可以互發(fā)信息,互收信息。而同步通信一般是應(yīng)用于CPU讀一些模塊,由CPU發(fā)起時(shí)鐘信號(hào),比如讀SD卡模塊,就可以通過(guò)SPI方式,還有一些傳感器模塊。
*本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系刪除