硬件基礎:理解串口通信以及232,485,422常見問題

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

在這里羅列了一些問題,待會對這些問題講一講,看是否有類似的情況,也許可以一起交流分享。

1.電腦使用USB轉串口可以和設備通信上,換成屏與設備就通信不上了。

2.在A家的屏可以和設備通信,換成B家的屏就通信不上了。

3.以前不接地線可以通信,換個設備為什么需要接地線了。

4. 一個設備是232,另一個設備是422,沒有轉換設備,怎么辦(232與422互轉的簡單方法)。

5.用232通信沒問題,用485通信沒問題,使用232轉485之后就通信不穩定。

6.485單獨接每個設備都通信正常,多個從站接一塊通信就不穩定。

7.要想實現兩個屏或兩個主站通過485訪問modbus設備,有什么好的辦法。

8.針對串口通信的弱點,在使用上應該要注意哪些地方。

當然有可能實際遇到的還不只是這些問題,可能還有一些意想不到的問題,如果你還遇到過什么奇葩奇怪的問題,也可以留言,一塊交流探討,一定會知無不言,言而無盡。

要回答和解決以上這些問題,還需要先了解一下什么是串口通信,232,485,422等

什么是串口通信???

常見的串口通信一般是指異步串行通信。這里就要說一下同步和異步的區別了。

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

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

? ? ?

?????

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

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

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

?那么問題來了,怎么樣才能保證一根線就能發送正常的數據呢?也就說發送方發送的數據,接收方是怎么知道是什么數據呢?

為了能正常發送數據和接收正確的數據,那異步串口通信就需要滿足以下幾個條件:

也就是雙方必要約定一種暗號。

也許當時發送這個通信的小組是這樣討論的。

經理:我要用一根線就能傳輸數據,你來給我定個標準。

研發:好。

經理:只有一根線,我怎么知道數據什么時候開始呢。

研發:就一根線,默認是高電平,那就有一個起始位吧。當檢測到有低電平的時候,就是開始有一個字節的數據發送了,起始位之后,先是字節的最低位,傳送一個字節。

經理:可是,就一根線,過來的數據會不會有干擾,容易出錯呀。

研發:行呀,那就在字節數據后再加一個校驗位。可以作奇校驗,偶校驗,1校驗,0校驗,無校驗。

經理:嗯?,很不錯。有起始位就應該有停止位,那我們就再加個停止位在后面吧。

研發:。。。。。。。。。

經理:傳輸一串數據,對方要怎么知道數據的拆分呢,怎么按時間或頻率去解讀數據位,校驗位呢。研發:這樣吧,雙方約定一個波特率吧,定義一個每個位占用多長的時間,這樣雙方按這個波特率就可以處理了。

經理:這個比特率呀。。。

研發:老板,是波特率。

經理:我知道,是比特率嘛。

研發:這個波特率呢,是指1S鐘可以傳輸多個位,也就知道一個位占用多長時間。這樣就解決傳輸的問題了。

經理:那萬一傳輸過程,數據太快,判斷失誤停不下來怎么辦。

研發:那就把停止位可以調節為1個停止位或者2個停止位。這樣就可以停下來了。

經理:嗯,聽著不錯。就這樣辦吧。

于是,串口通信就這樣出來了。

在串口的通信參數上,就有了波特率,數據位,停止位,校驗位這幾個參數來確保串口通信的正確性和穩定性。當然,這只是某個方面保證串口通信的正確性和穩定性,不代表設備間通信的正確性和穩定性。

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

這三種有什么區別呢。

232:

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

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

??

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

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

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

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

485:

485是為了解決232通信距離的問題。原理什么之類的就不多講了。反正232通信距離就是不長。485主要是以一種差分信號進行傳輸,只需要兩根線,+,-兩根線,或者也叫A,B兩根線。A,B兩根線的差分電平信號就是作為數據信號傳輸。那么問題來了,那是不是就沒有RX和TX的概念了。是的,發送和接收就不能分開了。發送和接收都是靠這兩根的來傳輸,也就是每次只能作發送或者只能作接收,這就是半雙工的概念了,這在效率上就比232弱很多了。就像對講機一樣,經常是某個人講完之后,都要說一個over,確保當前說完了,等待對方回復。

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

422:

422呢,有些標注為485-4。而485就標注為485-2。有什么區別呢。就是為了好記呢。485-2就是2根線。485-4就是4根線。

??

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

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

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

1、電腦使用USB轉串口可以和設備通信上,換成屏與設備就通信不上了:

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

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

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

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

2、在A家的屏可以和設備通信,換成B家的屏就通信不上了:

① 首先確認一下接線是否正確了,RX和TX是否兼容。

② 地線是否沒有接。

③除了RX,TX,GND,是否還有其它引腳需要短接的。

④通信協議是否一致或不完善,波特率是否一樣。

3、以前不接地線可以通信,換個設備為什么需要接地線了:

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

4、一個設備是232,另一個設備是422,沒有轉換設備,怎么辦(232與422互轉的簡單方法);

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

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

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

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

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

5、用232通信沒問題,用485通信沒問題,使用232轉485之后就通信不穩定。

232和485從通信原理上,最大一個差別是全雙工和半雙工的區別。可是應用層發送數據和接收數據才不管底下是全雙工還是半雙工。

但是485就得管了。因為既然是半雙工,就得嚴格保證通路上只能有發送或只能有接收的數據,一旦同時有發送和接收,數據就會沖突了。所以解決的辦法就是主站設備,也就是主動命令的一方就需要嚴格控制好發送數據命令的節奏了。當然有些232轉485的設備做的比較好了,可以優化這個,但是主站還是要控制,比較把通信速率調節慢一些(不是調節波特率)。

6、485單獨接每個設備都通信正常,多個從站接一塊通信就不穩定。

7、要想實現兩個屏或兩個主站通過485訪問modbus設備,有什么好的辦法。

在485通信中,基本上是一主多從。但是遇到一些客戶實際使用中,有客戶想用兩個屏來訪問一個modbus設備的。目前暫時還沒有好的辦法。等這個功能出來后,再來給大家演示操作吧。

8、針對串口通信的弱點,在使用上應該要注意哪些地方。

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

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

②波特率匹配的問題。因為有些設備的計算的波特率是存在

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

③在一些可能會存在干擾的情況,在有的選的情況,可以考慮使用奇校驗或者偶校驗。因為雖說出現錯誤的可能性不大,但既然存在干擾,如果加了校驗,至少可以把錯誤的報文過濾掉。總好比沒有校驗然后通信數據錯了不知道。或者盡量使用一些帶校驗的協議,防止數據出錯。

④ 串口通信本來就比較慢,請降低對數據響應的要求。

因為串口通信本身就比以太網慢。而且,串口通信并不是能像CPU那樣多線程處理。因為就一個口一個線數據出去,即便你應用到程序再怎么用多線程處理數據,但是最底下也只有一個口出去,一次也只能傳一個位,一個字節過去。因為有客戶在使用9600的波特率通信,但是又希望多少的數據可以在多少毫秒內得到響應。

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

好了。關于串口通信方面,就暫時聊到這里了。

為什么不用同步通信呢???

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

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271510.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271510.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271510.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

decimal轉為string sql_SQL注入詳解|OWASP Top 10安全風險實踐(二)

本文為一些列連載文章之一,不定期更新,計劃目錄如下:OWASP介紹SQL注入命令注入XML外部實體注入XPATH注入反射式、DOM及存儲XSS失效的身份認證和會話管理不安全的直接對象引用安全配置錯誤敏感信息泄露功能級訪問控制缺失跨站請求偽造服務端請…

各類排序算法實現(親測)

排序算法通常分為外部排序和內部排序,通常所說的八類排序屬于內部排序; 外部排序在此不說明,主要給出八類排序的簡單思想和實現: 1.插入排序 1.1 直接插入排序: 每次將一個新數,插入到已經排列好的有序…

沖正什么意思

沖正是用戶在進行銀行轉賬或者du取現交易時,在未操作成功,但是銀行卡賬戶發生了扣款時,采取的一種補救的方法,銀行的專業術語稱之為沖正。其實就是銀行系統在誤扣了用戶銀行卡中的金額后,再將金額退還到用戶銀行卡中的…

.net 2005大寫html標簽 xhtml10,HTML10.ppt

關于標簽的說明 正如之前所說的,部分的內容并不是為瀏覽者寫的,而是為瀏覽器和搜索引擎寫的。因此部分不應該含有任何在頁面中可視的的內容。 DTD 如果現在再次效驗我們的網頁,仍然會得到出錯信息,提示找不到DTD文件,那…

計算機基礎:聲音的相關知識筆記

1、聲音的相關概念 模擬聲音信號:聲波在時間和幅度上都是連續的模擬信號。 1.1 聲音的組成 幅度:聲波的振幅。計量單位是分貝(dB) 頻率:聲波每秒變化的次數,用Hz表示。人耳能聽到的聲音信號的頻率范圍20Hz~…

ansi編碼_Java 字符編碼

點擊上方藍字關注我們!作者介紹王云靜,Java 開發工程師,2018 年 7 月加入去哪兒網,目前在目的地 - 呼叫中心。曾獲得過 ACM 亞洲區域賽銅牌。-----基本概念字符集字符(Character)是各種文字和符號的總稱,包括各國家文字…

外賣和快遞行業數據_下周一起,整治全面啟動!鎖定全市外賣、快遞行業!

為加強我市外賣、快遞行業電動自行車交通安全管理,降壓預防事故,營造良好的通行秩序,下周一起(12月21日)深圳交警將開展電動自行車交通安全月暨外賣、快遞行業集中整治行動。?圈重點?下周一起(12月21日)正式開展外賣、快遞行業集中整治行動…

計算機基礎:圖形、圖像相關知識筆記

1、圖形、圖像的基礎知識 圖形:由稱為矢量的數學對象所定義的直線和曲線等組成。 圖像:也稱為柵格圖像,由點陣圖或位圖圖像、用像素來代表圖像。每一個像素都被分配一個特點的位置和顏色值。 圖形和圖像之間在一定條件下可以互相轉換&#xf…

計算機應用用什么樣的筆記本,制圖用什么筆記本好

以前人們常說的繪畫都是在紙上,然而科技時代的到來也讓繪畫的方式有了改變,而且現實中還在發展電子商務,因此大家都開始使用計算機制圖,不同的計算機制圖的方式不一樣,專業使用電腦制圖的人都會對電腦比較挑剔。它們還…

Powerdesigner 在線打開 不用安裝客戶端 訪問pdm,ldm文件

Powerdesigner 在線打開 不用安裝客戶端 http://www.dmanywhere.cn/

【代碼筆記】iOS-下拉選項cell

一&#xff0c;效果圖。 二&#xff0c;工程圖。 三&#xff0c;代碼。 RootViewController.h #import <UIKit/UIKit.h> //加入頭文件 #import "ComboBoxView.h"interface RootViewController : UIViewController {ComboBoxView *_comboBox; }end RootV…

寬量程電壓電流 stm32_萬用表你只會量電壓電流?史上最全萬用表手冊,這么做你不會燒表...

一&#xff0c;萬用表使用前的準備。二&#xff0c;萬用表各個檔位的含義。三&#xff0c;萬用表測量電壓。四&#xff0c;萬用表測量電流。五&#xff0c;萬用表測量電阻。六&#xff0c;萬用表測量二極管。七&#xff0c;萬用表測量電容。八&#xff0c;萬用表一般的維護保養…

24個筆畫順序表_小學一年級語文26個漢語拼音字母要點+田字格兒歌,趕緊給孩子看...

126個漢語拼音字母要點漢語拼音字母表-聲母表漢語中每個音節起始處的輔音可以構成聲母。漢語拼音方案《聲母表》規定的聲母符號一共有23個。b [玻] p [坡] m [摸] f [佛]d [得] t [特] n [訥] l [勒]g [哥] k [科] h [喝] j [基] q [欺] x [希]z [資] c[雌] s [思] r [日] zh[知…

多媒體基礎:動畫和視頻知識筆記

1、動畫和視頻的概念 動畫&#xff1a;將靜態的圖像、圖形等按照一定的時間順序顯示而形成的連續的動態畫面。傳統意義來說動畫是在連續多格的膠片上拍攝的一系列畫面&#xff0c;比將膠片以一定的速度放映&#xff0c;從而產生動態的視覺技術。 視頻&#xff1a;活動的、連續的…

mongoDB的安裝(一)

0、安裝環境說明&#xff1a; linux系統&#xff1a;centos6.5 mongoDB版本&#xff1a;mongodb-linux-x86_64-rhel62-3.2.7.tgz 1、下載 mongoDB的下載&#xff1a;https://www.mongodb.com/download-center#community&#xff0c;注意選擇版本 2、解壓 tar -zxvf mongodb-lin…

計算機管理任務計劃程序損壞,win7彈出任務計劃程序窗口顯示該任務映像損壞或已篡改0x80041321錯誤代碼怎么辦...

最近有win7 64位專業版系統用戶到本站反饋說碰到這樣一個問題&#xff0c;就是電腦突然彈出一個任務計劃程序窗口&#xff0c;顯示該任務映像損壞或已篡改0x80041321錯誤代碼&#xff0c;遇到這樣的問題該如何處理呢&#xff0c;本文就給大家講解一下win7彈出任務計劃程序窗口顯…

c51單片機矩陣鍵盤1602計算器_基于51單片機矩陣鍵盤的簡易計算器制作

1. 運算過程、符號公式實時顯示在顯示屏上(I2C 1602)。2. 自帶三角函數、開根號、平方運算。3. 計算得出的結果可設置保存并用以下一次計算。4. 所有運算結果精確到至少小數點后兩位。5. 運算結果可通過串口發送給上位機。6. 當斷電重啟時&#xff0c;能存儲并顯示斷電前正在計…

Visual paradigm社區版下載及中文菜單的設置

免費的官網社區版鏈接為&#xff1a; https://www.visual-paradigm.com/download/community.jsp 設置中文菜單 安裝之后&#xff0c;由于如果想設置中文菜單的話&#xff0c;可能會遇到麻煩&#xff0c;因為菜單太多 如下圖&#xff0c;所示步驟&#xff1a; Window-->…

python畫函數圖像要用到的模塊_教你如何繪制數學函數圖像——numpy和matplotlib的簡單應用...

numpy和matplotlib的簡單應用 一、numpy庫 1.什么是numpy NumPy系統是Python的一種開源的數值計算擴展。這種工具可用來存儲和處理大型矩陣&#xff0c;比Python自身的嵌套列表&#xff08;nested list structure)結構要高效的多&#xff08;該結構也可以用來表示矩陣&#xff…

臺式電腦如何使用無線網,wifi怎么連接?

隨著網絡的發展&#xff0c;現在無線路由器已經深入到尋常百姓家了&#xff0c;無線信號滿街都是&#xff0c;但是作為臺式電腦&#xff0c;卻不具備wifi自動連接這個功能。那么&#xff0c;臺式電腦怎么用wifi呢&#xff1f;下面小編就教大家wifi如何連接。1、電腦必須安裝一塊…