国产乱色伦影片在线观看下_又黄又硬又大又湿的毛片视频_91影视亚洲成在线观看_亚洲三级片国产98_爆乳无码一区二区在线观看ai_波多野结字衣dvd中文字幕_无码中文字幕久久免费_宅男app免费观看_午夜福利网在线观看网站_男人天堂无码专区

400-9928-029

RS232,RS485,RJ45,以及Modbus協(xié)議傻傻分不清楚?看完這篇豁然開朗!

時間:2022-08-08 作者:網(wǎng)站編輯

設(shè)想直流電源,它的輸出端插座接口有三個管腳,分別是正極、負(fù)極和接地極。相應(yīng)地,負(fù)載的插頭也應(yīng)當(dāng)有三個管腳與電源側(cè)一一對應(yīng),這樣才能正確地獲得電能供應(yīng)。


注意到這里有三個必須滿足的條件:

一是插頭和插座管腳的形狀、大小和插針直徑及長度必須一一對應(yīng),否則無法完成接插操作。這一點(diǎn)規(guī)定了插頭組合的物理結(jié)構(gòu)和管腳定義。

二是電源的輸出電壓值必須滿足載側(cè)的需求值,否則無法完成電參量的要求。這一點(diǎn)決定了插頭組合的電平規(guī)范。

三是電源的輸出阻抗與負(fù)載的輸入阻抗必須匹配,否則不能實(shí)現(xiàn)完善的供電。這一點(diǎn)決定了電源的工作性質(zhì)。

這三點(diǎn)其實(shí)就是電源插頭組合在物理層面上的規(guī)范性協(xié)議。

再看通信接口。在有關(guān)計算機(jī)信息交換的ISO/OSI模型里,物理層是底層,它規(guī)定了接口的機(jī)械外形、接口管腳定義、接口電平和字節(jié)格式。

這里的字節(jié)格式,指的是一個字節(jié)中有幾個數(shù)據(jù)位,有幾個起始位/停止位,有幾個奇偶校驗(yàn)位。一般地,一個字節(jié)有8個數(shù)據(jù)位,1個起始位(停止位),和1個奇偶校驗(yàn)位。注意:起始位和停止位可以合并。

再看通信接口和通信網(wǎng)絡(luò)的工作制問題。

當(dāng)我們拿手機(jī)掛電話時,我們發(fā)現(xiàn)通信雙方在通話的同時也可以接聽,這叫做全雙工(雙向工作制);如果說話的時候不能聽,而接聽的時候不能說,但任何一方都具有說和聽的能力,也即對講機(jī)的通話型式,這叫做半雙工。

圖片

RS422接口和RS232接口是全雙工接口,而RS485則是半雙工接口。

對于半雙工接口,顯然需要有通信的發(fā)起者,所以RS485接口和網(wǎng)絡(luò)一定具有主站和若干從站,并且從站的數(shù)量也有規(guī)定。一般地,從站的數(shù)量是32個。

RS485主站與從站的關(guān)系問題,看似只是通信工作制的不同,其本質(zhì)是通信各方對通信總線控制權(quán)的合理分配。

我們再看總線連接問題。

我們還是以電源為例。我們可以從電源引出一條主干線,然后再并聯(lián)若干個支路并分別送到若干個負(fù)載。只要滿足電源的功率要求,顯然這是可行的。

如果我們用同樣的方法來引出RS485的通信線,是否可行呢?答案是否定的。我們必須從通信主站先引一條線到一個通信子站,再從一子站引第二條線到第二子站,如此循環(huán)直到一個子站。在通信線的終端,還要配一個終端電阻。在這條通信線路上,任何一點(diǎn)如果發(fā)生斷路,則后續(xù)的通信鏈路上的通信也就斷了。這種接線方法形象地被稱為菊花瓣連接方法,或者鏈形連接方法,而電源的接線方法則被稱為星形連接方法。

圖片

我們發(fā)現(xiàn),從電氣接線來看,鏈路是并聯(lián)的。但從通信來看,鏈路是菊花瓣的,屬于一個接一個的有秩序的連接。

現(xiàn)在我們可以總結(jié)一下了:

RS485的總線網(wǎng)絡(luò)接線方式必須是鏈形菊花瓣的接線方式,并且屬于半雙工的通信方式;RS232是點(diǎn)到點(diǎn)的接線方式,屬于全雙工通信。不管是RS232接口,還是RS485接口,它們必須符合物理層的通信規(guī)約。

再看MODBUS-RTU通信協(xié)議:

有了物理層通信接口,是不是就能通信呢?答案是否定的。物理層通信接口只是使得通信雙方具備通信條件而已。但若雙方說的話誰都聽不懂,或者通信雙方的說話方式及語法結(jié)構(gòu)不相符,顯然這也無法通信。

在OSI模型中,物理層之上是數(shù)據(jù)鏈路層。MODBUS-RTU協(xié)議就是數(shù)據(jù)鏈路層協(xié)議,只要通信雙方都采用了MODBUS-RTU協(xié)議,則能確保通信語言是雙方都能聽得懂的語句格式。

注意這里的詞匯“語句”。物理層定義的是字節(jié),相當(dāng)于語言中的字,數(shù)據(jù)鏈路層則把字節(jié)組織成語句,也即幀。幀規(guī)定了通信雙方所用語句的語法結(jié)構(gòu)。

MODBUS也是主從式的。和物理層的總線控制是一樣的,這里的主從關(guān)系,就是對通信總線的控制權(quán)做了規(guī)定。主站先下達(dá)命令,占用總線;接著把總線空置,交給從站去寫回應(yīng)碼;從站完成后,再把總線還給主站。

現(xiàn)在我們來看看ISO的HDLC規(guī)定的幀結(jié)構(gòu),也即通信語句的語法結(jié)構(gòu),如下:

圖片

在MODBUS通信協(xié)議下,不同的命令功能碼它的幀結(jié)構(gòu)不盡相同。對于讀寄存器命令,MODBUS的主站幀結(jié)構(gòu)是:2個字節(jié)的地址碼,1個字節(jié)的功能碼,2個字節(jié)的數(shù)據(jù)地址碼,2個字節(jié)的CRC校驗(yàn)碼;MODBUS的從站回應(yīng)幀結(jié)構(gòu)是:2個字節(jié)的功能碼,1個字節(jié)的回應(yīng)區(qū)字節(jié)總數(shù),N個字節(jié)的回應(yīng)數(shù)據(jù),2個字節(jié)的CRC校驗(yàn)碼。

雖然物理層協(xié)議與數(shù)據(jù)鏈路層協(xié)議不同,但數(shù)據(jù)鏈路層協(xié)議的執(zhí)行必須建立在通信雙方物理層連接已經(jīng)符合要求,并且已經(jīng)可以無障礙地實(shí)現(xiàn)信息交互的基礎(chǔ)上。

這個規(guī)則在ISO/OSI模型的七層協(xié)議中必須完全徹底地得到執(zhí)行。在ISO/OSI模型中,通信雙方的低層次協(xié)議必須為上層協(xié)議建立透明的無故障的連接和信息交換關(guān)系。也就是說,各層次的上下級關(guān)系必須是對的。

從數(shù)據(jù)鏈路層再往上,就是網(wǎng)絡(luò)層了。它的任務(wù)是構(gòu)成現(xiàn)場總線的信息交換網(wǎng)。

網(wǎng)絡(luò)層的功能包括:把通信幀打包成數(shù)據(jù)分組,然后把數(shù)據(jù)分組發(fā)送給對方。

由于通信雙方的網(wǎng)絡(luò)結(jié)構(gòu)可能不同,于是對于同種網(wǎng)就需要用網(wǎng)橋來連接,而異種網(wǎng)則需要用網(wǎng)關(guān)來連接。

網(wǎng)絡(luò)之間的信道可能有多條。數(shù)據(jù)分組在發(fā)送時有多種路徑可以選擇。負(fù)責(zé)選擇路徑的元件稱為路由器。路由器不但決定了真實(shí)的數(shù)據(jù)交換網(wǎng)絡(luò)路徑,還可以構(gòu)建虛擬的網(wǎng)絡(luò)路徑,還要決定數(shù)據(jù)分組的發(fā)送秩序。因此,路由器是網(wǎng)絡(luò)層中復(fù)雜關(guān)鍵的裝備。

OSI模型中,把物理層+數(shù)據(jù)鏈路層+網(wǎng)絡(luò)層合并稱為現(xiàn)場總線,其通信接口就是8針的RJ45水晶頭。顯見,RJ45與RS232/RS485/RA422完全不是一回事。

網(wǎng)絡(luò)層的數(shù)據(jù)分組是數(shù)據(jù)幀的組合。通俗地說,數(shù)據(jù)分組是一篇短文,或者是一頁待傳遞的數(shù)據(jù)組合單元。

網(wǎng)絡(luò)層在發(fā)送數(shù)據(jù)分組時,其路由問題和接收組合問題見下圖:

圖片

我們看到網(wǎng)絡(luò)層在通信時先由路由器確定路由路徑,然后把分組發(fā)送到對方。對方接收到分組后,把分組按前后秩序組合起來,再解包為實(shí)際文檔。

指的注意的是:由于網(wǎng)絡(luò)層有了路由器,因此網(wǎng)絡(luò)層支持星形網(wǎng)絡(luò)結(jié)構(gòu)。

現(xiàn)在我們來關(guān)注一下ISO/OSI的7層模型,如下:

圖片

需要明確的是:從網(wǎng)絡(luò)層再往上,各層之間發(fā)送的信息單位已經(jīng)是完整的報文了。OSI模型也規(guī)定了報文的語法結(jié)構(gòu),限于篇幅給予忽略。


值得注意的是:RS232/RS485/RS422通信接口以及它們的定義,是非常明確的。包括管腳的電平,管腳的功能定義,以及接口在信息發(fā)送和接收信息時的數(shù)據(jù)流時序關(guān)系,這些都必須準(zhǔn)確和嚴(yán)格,否則就無法執(zhí)行信息交換。


當(dāng)PLC與某電力儀表交換信息,并且這些電力儀表符合RS485/MODBUS-RTU通信規(guī)范。我們要做什么事呢?

一,我們按菊花瓣結(jié)構(gòu)的通信鏈路要求去接線,將PLC的通信接口與N個電力儀表接口連接起來。一個電力儀表的末端要配100歐的終端電阻。

二,我們把這N個電力儀表按地址遞增的原則確定各自的地址,例如01H、02H、1FH等等。這里的H表示是16進(jìn)制,1F表示16+15=31。

三,我們在PLC編程軟件中設(shè)定好電力儀表規(guī)定的通信速率。

四,我們在PLC編程軟件中按電力儀表的數(shù)據(jù)區(qū)地址碼設(shè)定好MODBUS通信碼,以及各個子站的循環(huán)關(guān)系。

注意,這里的MODBUS通信碼滿足PLC的IEC 61131-3編程模塊要求,一般的PLC梯形圖沒有此功能。梯形圖滿足IEC 61131-1要求,但不滿足IEC 61131-3要求。

第五,在PLC的內(nèi)存中開辟專用數(shù)據(jù)區(qū),存放從電力儀表讀取到并處理后的信息,以便讓更高層的總站來讀取信息。此數(shù)據(jù)區(qū)有一個名稱,叫做數(shù)據(jù)點(diǎn)表,有時也簡稱通信協(xié)議。

當(dāng)然就是開機(jī)測試了。其中的內(nèi)容很多,限于篇幅不再介紹。

我們來看一個在RS485網(wǎng)絡(luò)上用MODBUS-RTU讀取數(shù)據(jù)的例子,如下:

某電力儀表,地址是01H。在電力儀表內(nèi)存第2000的位置上,放置了三相電流和三相電壓等6個數(shù)據(jù),每個數(shù)據(jù)占用兩個字節(jié),共12個字節(jié)。

此電力儀表的通信速率是9600bps。什么意思呢?bps表示一個0/1,也就是比特,這說明每秒鐘這條總線上可以發(fā)送9600個比特。我們已經(jīng)知道一個字節(jié)有8個數(shù)據(jù)位,1個起始位,1個奇偶校驗(yàn)位,剛好10位或者10個比特,所以,如果電力儀表的通信速率是9600bps,那么1秒鐘就可以發(fā)送:9600/10=960個字節(jié)。

我們還知道,主站的讀數(shù)據(jù)的幀結(jié)構(gòu)(下行幀)中,有1個字節(jié)的地址,1個字節(jié)的功能碼,2個字節(jié)的內(nèi)存地址,2個字節(jié)的數(shù)據(jù)數(shù)量,2個字節(jié)的CRC校驗(yàn)碼,總共有8個字節(jié),所以主站發(fā)送讀數(shù)據(jù)MODBUS通信幀占用的時間是:8X10/9600=8.33毫秒。

對于本例,我們知道MODBUS-RUT讀數(shù)據(jù)的命令是0X03H,也即03命令。注意這里的寫法:0X是字頭,中間的03是命令,H表示是16進(jìn)制。

具體通信幀的是:01 03 07 D0 00 06 C5 45,其中0X01H是地址,0X03H是命令,0X07D0H是內(nèi)存地址2000,0X0006H表示讀取連續(xù)6個字,也即內(nèi)存中的電流和電壓參數(shù),0XC545H是01 03 07 D0 00 06的CRC校驗(yàn)碼。

那么電力儀表的回應(yīng)幀(上行幀)的幀結(jié)構(gòu)是:1個字節(jié)的地址,1個字節(jié)的功能碼,1個字節(jié)的數(shù)據(jù)區(qū)字節(jié)數(shù),12個字節(jié)的數(shù)據(jù),2個字節(jié)的CRC校驗(yàn)碼,總共17個字節(jié),占用時間是:17X10/9600=17.7毫秒。

具體的儀表回應(yīng)通信幀是:01 03 0C 00 64 0064 0064 00 DC 00 DC 00 DC D6 F5,其中0X01H和0X03H的意義同前,0X0CH表示上傳數(shù)據(jù)區(qū)有12個字節(jié),0X0064H表示A相電流為100A,后面的兩組為B相和C相電流,均為100A,0X00DCH表示A相電壓為220V,其后兩組為B相和C相電壓,均為220V,0XD6F5H為CRC校驗(yàn)碼。

從主站發(fā)起下行通信幀,再等待10毫秒讓從站回應(yīng),再接收到從站發(fā)還的上行通信幀,總歷時為:

圖片

如果有31個相同的儀表等待主站一一訪問,則主站從訪問一個儀表開始,到回應(yīng)完畢,總歷時:

圖片

這里的1.12秒就是在通信速率為9600bps下這31臺儀表的讀數(shù)據(jù)循環(huán)周期,且忽略了主站再次發(fā)送下行通信幀的等待時間,實(shí)際時間會略微再長一些。

相信,看到這里,大家對MODBUS-RTU下的通信幀應(yīng)當(dāng)有了較為深刻的認(rèn)識。

提醒大家:一個字有兩個字節(jié)。一般地,字節(jié)只能用來表達(dá)8個開關(guān)量。但對于模擬量,則要用字來表達(dá)。例如電流1250A,16進(jìn)制下是04E2H,要用2個字節(jié)才能表達(dá)完整。也因此,各種電力儀表中,模擬量都是用字來表達(dá)的。

以下是MODBUS的部分常用功能碼,也即命令碼:

圖片

以下是PLC在讀取雙投開關(guān)ASCO控制器的數(shù)據(jù)點(diǎn)表的下行和上行通信幀范例:

圖片

幾個相關(guān)的問題解釋一下:

1)有些現(xiàn)場總線,用令牌解決了總線的控制權(quán)問題。

大家很容易想到,如果從站有緊急事項需要主站來服務(wù),可是MODBUS規(guī)定了輪詢規(guī)則,等到自己的時候,可能會太遲了。于是許多現(xiàn)場總線就發(fā)明了一個特殊的東西,叫做令牌。令牌很短,只有一個字節(jié),它可以很快地在總線上傳遞。令牌在各站點(diǎn)中傳遞,誰拿到令牌,誰就是主站,就可以發(fā)布信息。如果本站沒有事情需要發(fā)布,就把令牌交給下一個站點(diǎn),由此解決了總線占用問題。

2)當(dāng)鏈路發(fā)生斷路時,為了避免出現(xiàn)通信中斷,可采用雙主站措施。雙主站(PLC的兩個主站RS485接口)之間用握手線連接,平時主用RS485開通,而輔助RS485浮空。浮空的RS485雖然接在總線上,但它處于高阻態(tài)等效于完全脫離。當(dāng)發(fā)生斷路時,從站確認(rèn)后立即開通通信,從鏈路兩頭進(jìn)行連接通信。

有時,還采取環(huán)狀通信措施。限于篇幅,不做介紹。

3)MODBUS可工作在網(wǎng)絡(luò)層,此時協(xié)議變?yōu)镸ODBUS-TCP,但還是符合主從結(jié)構(gòu)。

4)MODBUS協(xié)議是美國莫迪康公司發(fā)明的,該公司的宗旨是:MODBUS協(xié)議為不收費(fèi)的公開協(xié)議。后來莫迪康公司被施耐德公司收購了,施耐德公司繼承了莫迪康公司的做法,MODBUS是不收費(fèi)的公開協(xié)議。既然MODBUS已經(jīng)成為施耐德的協(xié)議,施耐德把它延伸到網(wǎng)絡(luò)層,構(gòu)建了網(wǎng)絡(luò)層的MODBUS-TCP協(xié)議,以及內(nèi)部專用的MODBUS-PLUS協(xié)議。限于篇幅,對于這兩個協(xié)議的描述此處從略。

5)關(guān)于RS232和RS485的區(qū)別

學(xué)過模電和數(shù)電的人都知道差分電路。差分電路具有共模抑制比,能夠消除共模誤差。RS485接口就具有此特征。因此RS232接口的傳輸距離僅為十幾米,而RS485/RS422接口的傳輸距離為1200米。

圖片

我們從圖中看到,雖然RS232和RS485接口的外形是一致的,但它們的性能和信息交換模式不同,因此抗干擾能力也不同。

6)當(dāng)距離很長的時候,RS485接口還可以接入光纖,但需要配備1對光纖轉(zhuǎn)換器。之所以要1對,是因?yàn)槠渲幸恢挥糜陔娹D(zhuǎn)光,而第二只則用于光轉(zhuǎn)電。光纖收發(fā)器中間的通信介質(zhì)就是光纜或者光纖。(注意哦,光纖是光纜的芯線,不要以為是兩種東西)

光纖分為單模和多模。單模的光纖較細(xì),光在傳輸過程中反射較少,因而失真小,其傳輸距離可達(dá)15km以上;多模的光纖較粗,光在傳輸過程中反射較多,因而失真大,其傳輸距離為1.5km。

圖片

7)CRC校驗(yàn)碼是二進(jìn)制不借位的除法,用以做接收信息是否出錯的檢驗(yàn)。

圖片

注意這里的f(x)就是除去CRC校驗(yàn)碼的MODBUS通信幀,除數(shù)是CRC16。幀中的CRC是運(yùn)算后的余數(shù)。

主站在發(fā)送幀之前,把幀先做CRC計算,再把CRC運(yùn)算的余數(shù)附在幀尾發(fā)送給從站。從站接收到幀后,先對幀除去CRC的部分做CRC運(yùn)算來檢驗(yàn)是否正確,若不正確,從站要求主站重發(fā)。

同理,當(dāng)從站發(fā)送信息給主站時,主站也根據(jù)CRC來檢查數(shù)據(jù)的正確性。若發(fā)現(xiàn)錯誤,則要求從站重發(fā)。

8)關(guān)于MODBUS-RTU、MODBUS-ASC和MODBUS-TCP

如果MODBUS中字節(jié)表達(dá)數(shù)據(jù)的方式采取BCD碼,則被稱為MODBUS-RTU;如果MODBUS中字節(jié)表達(dá)數(shù)據(jù)的方式采取ASCII碼,則被稱為MODBUS-ASC;如果MODBUS運(yùn)行在網(wǎng)絡(luò)層上,則被稱為MODBUS-TCP。

ASCII碼的內(nèi)容如下:

圖片

MODBUS在實(shí)際使用中,大多數(shù)都采用BCD碼,因此MODBUS-RTU得到廣泛應(yīng)用。

BCD碼如下:

值得注意的是:在協(xié)議使用中,數(shù)據(jù)幀中的數(shù)值都是用16進(jìn)制數(shù)來表達(dá)的。例如100A電流寫成0X64H,而380V電壓則寫成0X17CH。

9)關(guān)于RS485網(wǎng)絡(luò)使用的雙絞通信線和接地

我們知道,兩條平行的線纜之間會有分布電容,而分布電容會削弱信號的強(qiáng)度。為了消除分布電容,通信線的兩條平行線需要按一定長度互相旋轉(zhuǎn)對絞,這種線被稱為雙絞線。雙絞線的對絞長度有規(guī)范,它與通信速率密切相關(guān)。在實(shí)際使用時,要按通信速率來選擇合適的雙絞線。

雙絞線的外層有屏蔽層。屏蔽層必須單點(diǎn)接地,不得在線頭線尾同時接地,防止地電流流過引起干擾。在實(shí)際布線時,采取各線段獨(dú)立接地,切忌采用所有線段的屏蔽層前后連接統(tǒng)一接地的做法。

10)關(guān)于菊花瓣的通信鏈路連接方式

菊花瓣鏈形網(wǎng)絡(luò)是不存在的。事實(shí)上,我們用菊花瓣鏈形接線方法構(gòu)建的通信網(wǎng)絡(luò)中,各個節(jié)點(diǎn)是接線端子,由接線端子通過雙絞線連接到各個子站,這些雙絞線就構(gòu)成了類似的星形結(jié)構(gòu),我們不妨把這種接線方式稱為鏈形網(wǎng)絡(luò)下的準(zhǔn)星形接線。

在工程實(shí)踐中證明,準(zhǔn)星形接線的長度不得超過70cm。一旦超過,則可能出現(xiàn)通信不穩(wěn)定狀態(tài)。

事實(shí)上,70cm也成為行業(yè)中的一條不成文的質(zhì)檢規(guī)范。

100歐終端電阻在通信速率低時可加可不加,但當(dāng)通信速率較高時(高于19.2kbps),建議一定要加。例如PROFIBUS下的RS485網(wǎng)絡(luò),終端電阻已經(jīng)植入終端設(shè)備中,只需撥動開關(guān)即可加入或者撤離。

終端電阻的用途是吸收反射波。

我們在兩棵樹間緊緊地綁上一根繩子,接著敲擊繩子的某一側(cè),我們會看到有傳導(dǎo)波向另一端傳去,并能看到反射波。如果敲擊的頻率適當(dāng),則在繩子中間出現(xiàn)波的不動點(diǎn),這叫做駐波。

對于通信來說,不管是反射波還是駐波,將嚴(yán)重影響通信質(zhì)量。終端電阻用于吸收反射波,并且可提升子站的電平水平。

RS485和MODBUS這兩個概念,都需要通過實(shí)踐去掌握它們,單單憑著閱讀文本,很難理解和掌握。如果這篇小文能給大家的實(shí)踐活動帶來益處,我會感到分外欣慰。

來源:知乎問答,張白帆老師