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

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

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

串口通信三種方式的常見問題

MCU開發(fā)加油站 ? 來源:21ic電子網(wǎng) ? 作者:21ic電子網(wǎng) ? 2021-03-18 13:46 ? 次閱讀

下面先講串口通信的一些基本概念,術(shù)語。如果對串口通信比較熟悉的,就當(dāng)復(fù)習(xí),如果哪里講的不到位,歡迎及時指出。

這里并不對串口的編程作講解,主要是從應(yīng)用的角度去講一講。因為更多的時候,都是產(chǎn)品做好了,比如觸摸屏需要和控制器,PLC通信。理想的情況下,一般只要一上電,不需要太多的操作和配置,就可以通信上。

文章后半部分羅列了一些相關(guān)問題,在解答前還需要先了解一下什么是串口通信,232,485,422等。

什么是串口通信

常見的串口通信一般是指異步串行通信。

這里就要說一下同步和異步的區(qū)別了。

先講一下串行通信的概念。那么,與串行通信相對的是什么呢?

與串行通信相對的是并行通信。數(shù)據(jù)傳輸一般都是以字節(jié)傳輸?shù)模粋€字節(jié)8個位。拿一個并行通信舉例來說,也就是會有8根線,每一根線代表一個位。一次傳輸就可以傳一個字節(jié),而串口通信,就是傳數(shù)據(jù)只有一根線傳輸,一次只能傳一個位,要傳一個字節(jié)就需要傳8次。就像小虎隊那首歌一樣,把你的心,我的心,串一串,再烤一烤。。串口通信就是把數(shù)據(jù)串在一根線上傳輸,所以就叫串口吧。

與異步通信相對的就是同步通信了。同步通信一般是指有一個時鐘信號進行數(shù)據(jù)信號同步。同步通信對接收方來說就相對簡單一些。因為有時鐘信號在,每一個高低電平變化一下,就去取一下數(shù)據(jù)就行了。通信速率可以由發(fā)送方或者說是主站設(shè)備進行控制。通信速度也相對比串口通信快很多。但是為什么很多設(shè)備,屏和plc,控制器不采用這種方式,都使用串口呢。

那么,在很多設(shè)備上,不方便接太多線,比如接8根數(shù)據(jù)線,也不方便接同步時鐘信號(這個后面再說),于是一種異步串行通信就誕生了。

相對來說,異步串口通信,就只需要一根線就可以發(fā)送數(shù)據(jù)了。在對速率要求不高的情況,使用一根線發(fā)送數(shù)據(jù)是帶來大大的方便和實用價值的。

那么問題來了,怎么樣才能保證一根線就能發(fā)送正常的數(shù)據(jù)呢。也就說發(fā)送方發(fā)送的數(shù)據(jù),接收方是怎么知道是什么數(shù)據(jù)呢。為了能正常發(fā)送數(shù)據(jù)和接收正確的數(shù)據(jù),那異步串口通信就需要滿足以下幾個條件:

81e2ba48-8657-11eb-8b86-12bb97331649.jpg

也就是雙方必要約定一種暗號。也許當(dāng)時發(fā)送這個通信的小組是這樣討論的。

經(jīng)理:我要用一根線就能傳輸數(shù)據(jù),你來給我定個標(biāo)準(zhǔn)。研發(fā):好。經(jīng)理:只有一根線,我怎么知道數(shù)據(jù)什么時候開始呢。研發(fā):就一根線,默認是高電平,那就有一個起始位吧。當(dāng)檢測到有低電平的時候,就是開始有一個字節(jié)的數(shù)據(jù)發(fā)送了,起始位之后,先是字節(jié)的最低位,傳送一個字節(jié)。經(jīng)理:可是,就一根線,過來的數(shù)據(jù)會不會有干擾,容易出錯呀。研發(fā):行呀,那就在字節(jié)數(shù)據(jù)后再加一個校驗位??梢宰髌嫘r?,偶校驗,1校驗,0校驗,無校驗。經(jīng)理:嗯 ,很不錯。有起始位就應(yīng)該有停止位,那我們就再加個停止位在后面吧。研發(fā):。。。。。。。。。經(jīng)理:傳輸一串?dāng)?shù)據(jù),對方要怎么知道數(shù)據(jù)的拆分呢,怎么按時間或頻率去解讀數(shù)據(jù)位,校驗位呢。

研發(fā):這樣吧,雙方約定一個波特率吧,定義一個每個位占用多長的時間,這樣雙方按這個波特率就可以處理了。經(jīng)理:這個比特率呀。。。研發(fā):老板,是波特率。經(jīng)理:我知道,是比特率嘛。研發(fā):這個波特率呢,是指1S鐘可以傳輸多個位,也就知道一個位占用多長時間。這樣就解決傳輸?shù)膯栴}了。經(jīng)理:那萬一傳輸過程,數(shù)據(jù)快太,判斷失誤停不下來怎么辦。研發(fā):那就把停止位可以調(diào)節(jié)為1個停止位或者2個停止位。這樣就可以停下來了。經(jīng)理:嗯,聽著不錯。就這樣辦吧。

于是,串口通信就這樣出來了。在串口的通信參數(shù)上,就有了波特率,數(shù)據(jù)位,停止位,校驗位這幾個參數(shù)來確保串口通信的正確性和穩(wěn)定上。當(dāng)然,這只是某個方面保證串口通信的正確性和穩(wěn)定性,不代表設(shè)備間通信的正確性和穩(wěn)定性。

串口通信主要為分232,485,422 通信三種方式。

這三種有什么區(qū)別呢。232:

82f9b558-8657-11eb-8b86-12bb97331649.jpg

232 通信主要是由RX,TX,GND三根線組成。

RX與TX,TX接RX,GND接GND。這樣還是比較好理解吧。因為發(fā)送和接收分別是由不同的線處理的,也就是能同時發(fā)送數(shù)據(jù)和接收數(shù)據(jù),這就是所謂的全雙工。

在這里擴展一下,串口通信還有一個功能叫做全功能串口通信,也叫標(biāo)準(zhǔn)串口。因為在兩個設(shè)備間進行數(shù)據(jù)傳輸,有些設(shè)備處理速度比較快,有些數(shù)據(jù)比較慢。為了保證數(shù)據(jù)能正常傳輸,在RX,TX的基礎(chǔ)上,還增加了幾個控制引腳,本來好端端就R,T,G,三根線,湊著就湊齊了9個引腳,召喚出了DB9這個東西。

83587200-8657-11eb-8b86-12bb97331649.jpg

這要怪就怪當(dāng)時使用電腦的時候,還沒有互聯(lián)網(wǎng)這個概念,但是又想在兩臺電腦間進行通信。所以才有這樣一個東西。

在后來的設(shè)備,很多控制器,人機界面,PLC等使用串口通信中,基本上就不使用標(biāo)準(zhǔn)串口,而是就直接使用RX,TX,GND三根線來通信了。

但是這里為什么要提到這個呢。因為只是很多設(shè)備這樣用,也就是還存在少數(shù)設(shè)備還保留了標(biāo)準(zhǔn)串口的功能。這就是為什么會遇到明明電腦通信是好的,換成觸摸屏通信就不行了。因為很多觸摸屏只使用了RX,TX,GND通信,遇到一些還保留標(biāo)準(zhǔn)串口功能的就比較討厭了。

485:485是為了解決232通信距離的問題。原理什么之類的就不多講了。反正232通信距離就是不長。485主要是以一種差分信號進行傳輸,只需要兩根線,+,-兩根線,或者也叫A,B兩根線。A,B兩根線的差分電平信號就是作為數(shù)據(jù)信號傳輸。

那么問題來了,那是不是就沒有RX和TX的概念了。是的,發(fā)送和接收就不能分開了。發(fā)送和接收都是靠這兩根的來傳輸,也就是每次只能作發(fā)送或者只能作接收,這就是半雙工的概念了,這在效率上就比232弱很多了。就像對講機一樣,經(jīng)常是某個人講完之后,都要說一個over,確保當(dāng)前說完了,等待對方回復(fù)。

83c1a6bc-8657-11eb-8b86-12bb97331649.jpg

485就是這樣犧牲了232全雙工的效率來達到自己傳輸距離遠的代價。那有沒有即保留了232的全雙工,又可以像485這樣提高傳輸距離呢,于是,422出來了。

422:

422呢,有些標(biāo)注為485-4。而485就標(biāo)注為485-2。有什么區(qū)別呢。就是為了好記呢。485-2就是2根線。485-4就是4根線。

841437c4-8657-11eb-8b86-12bb97331649.jpg

422就是把232的RX分成兩根線,RX+,RX-,把TX分成TX+,TX-。這樣就可以同時發(fā)送和同時接收了,還可以像485這樣,有較遠的傳輸距離。可是這樣一種很有優(yōu)勢的通信方式,為什么用的不多呢。我個人的答案和理解就是:線太多了。特別是像我這樣懶得接線的人,超過3根線就頭暈的。搞個通信還需要接這么多線,什么TX,RX,正啊負啊。交換來交換去。

因為在很多設(shè)備通信中,基本上是屬于一問一答式的,因此,232的全雙工通信優(yōu)勢其實也并沒有發(fā)揮出來。就像現(xiàn)在打電話,雖然兩個人可以同時說話,但是兩個人同時說話,嘰嘰歪歪的,誰知道說什么呀。特別是一個主站與多個從站通信的時候,485的接線就就方便多了,反正大家就兩根線,把+都接一塊,把-都接一塊。如果是422作一主多從,接線上還要理半天呢,而且通信異常了也不好解決。

好了,串口通信基本就普及到這里吧。下面就對剛上提到的問題進行講一講。

1、 電腦使用USB轉(zhuǎn)串口可以和設(shè)備通信上,換成屏與設(shè)備就通信不上了?

(1)有可能電腦USB轉(zhuǎn)串口接到設(shè)備上,使用的是標(biāo)準(zhǔn)串口功能,也就是除了RX,TX,GDN外,還使用了其它引腳。比如像歐姆龍PLC,三菱PLC,在實際與屏的通信中,就需要接某些引腳短接的情況。

(2)電腦與控制器或PLC通信時,是掃描波特率參數(shù),自適應(yīng)的,屏通信可能參數(shù)沒有設(shè)備好。在三菱,基恩士等PLC,就存在變化波特率進行通信交互的過程。

(3)也有可能是接線方式不對。因為有些DB9,還需要公頭,母頭。如果不注意的話,也會存在把TX接到TX上,把RX接到RX上,這樣需要注意的地方。

(4) 在這里補充一下,有時候可能會使用一些串口助手發(fā)送測試數(shù)據(jù)與控制器通信,有些串口助手的奇偶校驗是不起作用,這個要提醒一下。

2、 這A家的屏可以和設(shè)備通信,換成B家的屏就通信不上了?

1) 首先確認一下接線是否正確了,RX和TX是否兼容。2) 地線是否沒有接。3) 除了RX,TX,GND,是否還有其它引腳需要短接的。4) 通信協(xié)議是否一致或不完善,波特率是否一樣。

3、 以前不接地線可以通信,換個設(shè)備為什么需要接地線了?

這個問題和上一個有類似的。因為有些設(shè)備使用了隔離電源。以前不接地可以通信,有可能是地線已經(jīng)在另外一個環(huán)路已經(jīng)共地了,實際地線已經(jīng)接了,所以才可以通信。可能換了個帶隔離電源的,兩個設(shè)備的地是隔離的,就需要在串口上把地線接起來。這個我是自身經(jīng)歷過的,有個客戶老說他的設(shè)備通信不上,后來拍個照我給我,他地線沒有接,他說以前不接地線可以通信的。于是我就給他科普了一下。

4 、一個設(shè)備是232,另一個設(shè)備是422,沒有轉(zhuǎn)換設(shè)備,怎么辦?(232與422互轉(zhuǎn)的簡單方法)

這個情況我遇到過,客戶的設(shè)備是422通信的,但是我手上并沒有422設(shè)備,只有232通信可以測試。因此就需要把422轉(zhuǎn)成232進行通信。

剛才也講了422和232的接線,因為這兩個都是全雙工的,接收和發(fā)送都是分到的,而422只是以一種差分信號進行傳輸。

把422的Rx+與232的TX接,422的RX-與232的GND接。

把422的TX+與232的RX接,422的TX-與232的GDN接。

這樣,422設(shè)備要發(fā)送數(shù)據(jù)的,就可以發(fā)送到了232的RX上。232的TX發(fā)數(shù)據(jù)后,由于TX和GND也形成了差分信號給422,422就可以接收到數(shù)據(jù)了。

5、 用232通信沒問題,用485通信沒問題,使用232轉(zhuǎn)485之后就通信不穩(wěn)定?

232和485從通信原理上,最大一個差別是全雙工和半雙工的區(qū)別??墒菓?yīng)用層發(fā)送數(shù)據(jù)和接收數(shù)據(jù)才不管底下是全雙工還是半雙工。

但是485就得管了。因為既然是半雙工,就得嚴(yán)格保證通路上只能有發(fā)送或只能有接收的數(shù)據(jù),一旦同時有發(fā)送和接收,數(shù)據(jù)就會沖突了。所以解決的辦法就是主站設(shè)備,也就是主動命令的一方就需要嚴(yán)格控制好發(fā)送數(shù)據(jù)命令的節(jié)奏了。

當(dāng)然有些232轉(zhuǎn)485的設(shè)備做的比較好了,可以優(yōu)化這個,但是主站還是要控制,比較把通信速率調(diào)節(jié)慢一些(不是調(diào)節(jié)波特率)。

6、 485單獨接每個設(shè)備都通信正常,多個從站接一塊通信就不穩(wěn)定?

這個是屬于485通信的不穩(wěn)定因素了。

7 、要想實現(xiàn)兩個屏或兩個主站通過485訪問modbus設(shè)備,有什么好的辦法?

在485通信中,基本上是一主多從。但是遇到一些客戶實際使用中,有客戶想用兩個屏來訪問一個modbus設(shè)備的。目前暫時還沒有好的辦法。

8、 針對串口通信的弱點,在使用上應(yīng)該要注意哪些地方?

說來串口通信的弱點,那就說來話長了。不過還是長話短說吧。

1)信號干擾的問題建議使用帶屏蔽線,接線要嚴(yán)格,比如要接地。有些485通信上,還考慮接上終端電阻來匹配。如果是232,盡量不要讓線太長。通信協(xié)議上盡量避免長報文的數(shù)據(jù)通信。

2)波特率匹配的問題因為有些設(shè)備的計算的波特率是存在誤差的,特別是一些控制器,由于使用的晶振不一樣。因此在一些波特率比如9600波特率就存在誤差。存在誤差帶來的影響是什么呢。因為接收方是通過時間來計算一個位的。那么如果一個報文過長,就會存在誤差積累的問題,算著算著就偏了。所以,這也是串口通信不穩(wěn)定的一些地方,在使用上應(yīng)注意避免發(fā)送太長數(shù)據(jù)的包。

3)在一些可能會存在干擾的情況,在有的選的情況,可以考慮使用奇校驗或者偶校驗。因為雖說出現(xiàn)錯誤的可能性不大,但既然存在干擾,如果加了校驗,至少可以把錯誤的報文過濾掉??偤帽葲]有校驗然后通信數(shù)據(jù)錯了不知道?;蛘弑M量使用一些帶校驗的協(xié)議,防止數(shù)據(jù)出錯。

4)串口通信本來就比較慢,請降低對數(shù)據(jù)響應(yīng)的要求。因為串口通信本身就比以太網(wǎng)慢。而且,串口通信并不是能像CPU那樣多線程處理。因為就一個口一個線數(shù)據(jù)出去,即便你應(yīng)用到程序再怎么用多線程處理數(shù)據(jù),但是最底下也只有一個口出去,一次也只能傳一個位,一個字節(jié)過去。因為有客戶在使用9600的波特率通信,但是又希望多少的數(shù)據(jù)可以在多少毫秒內(nèi)得到響應(yīng)。

但是串口通信還是要事實求是,所以正確認識串口通信對應(yīng)用,對開發(fā),對溝通都有著很大的幫助的。

為什么不用同步通信呢?

剛才提到,同步通信需要依賴于時鐘信號。這就存在一個問題,這個時鐘信號是誰來發(fā)起呢。在同步通信中,往往需要一個主設(shè)備發(fā)起時鐘信號讀從模塊的數(shù)據(jù)。在實際中,有屏讀PLC,有屏讀屏的數(shù)據(jù)。而單純地從異步串口通信來說,是沒有主從之說,雙方都是平等的角色,都可以互發(fā)信息,互收信息。而同步通信一般是應(yīng)用于CPU讀一些模塊,由CPU發(fā)起時鐘信號,比如讀SD卡模塊,就可以通過SPI方式,還有一些傳感器模塊。

原文標(biāo)題:一文說清:串口通信(232、485、422)的常見問題

文章出處:【微信公眾號:MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

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

    關(guān)注

    34

    文章

    1605

    瀏覽量

    55328

原文標(biāo)題:一文說清:串口通信(232、485、422)的常見問題

文章出處:【微信號:mcugeek,微信公眾號:MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    計算機網(wǎng)絡(luò)中的三種通信方式

    計算機網(wǎng)絡(luò)中的三種通信方式,即單工通信、半雙工通信和全雙工通信,是理解和設(shè)計高效網(wǎng)絡(luò)架構(gòu)的基礎(chǔ)。
    的頭像 發(fā)表于 08-07 15:00 ?1454次閱讀

    plc常見三種通訊協(xié)議有哪些

    這一目標(biāo),PLC采用了多種通信協(xié)議。以下是三種常見的PLC通信協(xié)議的詳細介紹: Modbus協(xié)議 Modbus協(xié)議是一應(yīng)用層協(xié)議,主要用于
    的頭像 發(fā)表于 07-01 10:12 ?1669次閱讀

    簡述斬波電路的三種控制方式

    斬波電路是一常見的電力電子器件,廣泛應(yīng)用于直流電壓調(diào)節(jié)、電壓變換、電流變換等領(lǐng)域。它可以實現(xiàn)對電流和電壓的控制,以滿足不同的電氣設(shè)備的需求。斬波電路的控制方式主要有三種:脈寬調(diào)制控制
    的頭像 發(fā)表于 03-11 15:22 ?2710次閱讀

    光耦隔離 電容隔離 磁隔離這三種隔離方式各有什么優(yōu)缺點?

    光耦隔離、電容隔離和磁隔離是三種常見的隔離方式,它們各有優(yōu)缺點,適用于不同的應(yīng)用場景。
    的頭像 發(fā)表于 01-30 15:38 ?4677次閱讀

    介紹三種建模方式

    據(jù)量大,而是指樣本的完備性。還有就是大數(shù)據(jù)或者AI被專業(yè)學(xué)者或者行業(yè)工程師所詬病的就是,純粹的數(shù)據(jù)驅(qū)動搞不出所以然出來,需要領(lǐng)域知識(即Domain Knowledge)的協(xié)助。此外,還有第三種建模方式就是混合驅(qū)動,即基礎(chǔ)物理模型加上數(shù)據(jù)驅(qū)動的
    的頭像 發(fā)表于 01-23 10:48 ?1275次閱讀

    運動控制的三種控制方式

    非標(biāo)項目中有非常多的運動控制,根據(jù)系統(tǒng)配置、電機類型以及精度需求的不同主要有三種控制方式:開環(huán)控制、半閉環(huán)控制、全閉環(huán)控制。
    的頭像 發(fā)表于 01-23 09:48 ?1143次閱讀
    運動控制的<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b>

    嵌入式Linux開發(fā)的三種方式

    嵌入式Linux開發(fā)主要有三種方式:裸機開發(fā)、SDK開發(fā)和驅(qū)動開發(fā)。
    的頭像 發(fā)表于 01-22 14:22 ?882次閱讀

    三種常見電流探頭的工作原理

    三種常見電流探頭的工作原理? 電流探頭是測量電流的重要工具,常見的有磁性式電流探頭、霍爾式傳感器和電阻器式電流探頭。它們可以通過不同的原理來感知電流信號,并將其轉(zhuǎn)化為與電流成比例的輸出信號。下面將
    的頭像 發(fā)表于 01-08 11:30 ?1375次閱讀

    分布式鎖的三種實現(xiàn)方式

    ,下面將分別介紹三種常見的實現(xiàn)方式。 一、基于數(shù)據(jù)庫實現(xiàn)的分布式鎖 在分布式系統(tǒng)中,數(shù)據(jù)庫是最常用的共享資源之一。因此,可以通過數(shù)據(jù)庫的特性來實現(xiàn)分布式鎖。常見
    的頭像 發(fā)表于 12-28 10:01 ?780次閱讀

    伺服電機的三種控制方式 如何確定選擇伺服電機控制方式?

    伺服電機的三種控制方式 如何確定選擇伺服電機控制方式? 伺服電機是一能夠根據(jù)輸入信號實時調(diào)整轉(zhuǎn)速和位置的電動機。它通常用于需要高精度、高效率、高可靠性的工業(yè)領(lǐng)域,如機床、機器人、印刷
    的頭像 發(fā)表于 12-26 14:02 ?1485次閱讀

    變頻器的三種控制方式 | 變頻器三種控制方式的優(yōu)缺點

    ? ? ? 變頻器是一電力調(diào)節(jié)設(shè)備,它通過改變電機的工作頻率來調(diào)節(jié)電機的轉(zhuǎn)速。在實際應(yīng)用中,變頻器通常采用三種控制方式:開環(huán)控制、閉環(huán)控制和矢量控制。這三種控制
    的頭像 發(fā)表于 12-18 09:56 ?3114次閱讀
    變頻器的<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b> | 變頻器<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b>的優(yōu)缺點

    常見的socket三種類型

    常見的socket三種類型? Socket是計算機網(wǎng)絡(luò)中常用的通信機制,在網(wǎng)絡(luò)編程中起到了非常重要的作用。Socket可以分為三種類型:流套接字(Stream Socket)、數(shù)據(jù)報套
    的頭像 發(fā)表于 12-08 11:18 ?2252次閱讀

    單工通信、半雙工通信和全雙工通信三種方式的不同之處

    首先,不要被生澀的文字嚇到了,通訊在我們?nèi)粘V型ㄓ嵤菬o處不在的,三種通訊方式也是隨處可見。下面分別舉例說明三種方式的不同之處以及在工業(yè)和電子設(shè)備上常用的一些案例。
    的頭像 發(fā)表于 11-14 16:09 ?4679次閱讀
    單工<b class='flag-5'>通信</b>、半雙工<b class='flag-5'>通信</b>和全雙工<b class='flag-5'>通信</b><b class='flag-5'>三種</b><b class='flag-5'>方式</b>的不同之處

    什么是電池化成?電池化成的三種方式 三種電池化成對比

    什么是電池化成?電池化成的三種方式 三種電池化成對比? 電池化成是指將物體或設(shè)備改造為可以使用電池供電的過程。在電池化成過程中,常見的電源例如燃油、電線甚至是替換掉,以便更高效、便捷地
    的頭像 發(fā)表于 11-10 14:49 ?2131次閱讀

    PWM信號輸出的三種硬件驅(qū)動方式

    PWM信號輸出的三種硬件驅(qū)動方式 PWM信號,即脈沖寬度調(diào)制信號,用于控制電子設(shè)備的運轉(zhuǎn)。在電路控制領(lǐng)域中,PWM信號是非常重要的信號之一,它通常用于控制電機、LED燈、音頻放大器等設(shè)備的運轉(zhuǎn)。當(dāng)
    的頭像 發(fā)表于 10-30 09:47 ?1089次閱讀