大家好,很高興和各位一起分享我的文章,喜歡和支持我的工程師,一定記得給我點(diǎn)贊、收藏、分享。
加微信[xyzn3333]與作者溝通交流,免費(fèi)獲取更多單片機(jī)與嵌入式的海量電子資料。
是不是還有人對(duì)RS485與Modbus傻傻分不清楚?針對(duì)兩者的區(qū)別,本文對(duì)小白進(jìn)行一次普及。大牛們請(qǐng)主動(dòng)跳過,當(dāng)然也可以分享給你身邊的小小白。
RS485是工業(yè)應(yīng)用中廣泛使用的串行數(shù)據(jù)傳輸標(biāo)準(zhǔn)。在實(shí)現(xiàn)RS485通信時(shí),通常使用Modbus協(xié)議,所以就造成了很多人將RS485與Modbus混為一談。本文從以下幾點(diǎn)進(jìn)行重點(diǎn)介紹:
- 什么是RS485通信?
- 485的半雙工通信?
- Modbus通信原理?
- Modbus消息格式?
- RS485與Modbus的區(qū)別?
01、什么是RS485通信
RS485是一種類似于RS232的協(xié)議,用于實(shí)現(xiàn)串行數(shù)據(jù)通信。這兩種協(xié)議使用不同的電信號(hào)來(lái)實(shí)現(xiàn)數(shù)據(jù)傳輸。工業(yè)環(huán)境中使用RS485比RS232更廣泛的原因之一是它能夠?yàn)檫B接到同一總線的多個(gè)設(shè)備提供服務(wù)。這樣,在查詢多個(gè)設(shè)備時(shí)就不需要有多個(gè)接口,只是通過區(qū)分總線上不同設(shè)備的地址就可以進(jìn)行通信,可以通過軟件固定、撥碼開關(guān)、不同電阻電壓等形式來(lái)區(qū)分不同的設(shè)備。由于RS485比RS232更多的優(yōu)越性,所以我們會(huì)經(jīng)常看到RS485協(xié)議直接連接到USB、GSM或以太網(wǎng)端口,如在工業(yè)互聯(lián)網(wǎng)行業(yè)比較通用的串口服務(wù)器,主要是將RS485轉(zhuǎn)換為以太網(wǎng)接口。
使用RS485端口的設(shè)備通常采用Modbus協(xié)議。下表總結(jié)了RS485協(xié)議的特點(diǎn)。RS485在平衡線路上提供半雙工傳輸,傳輸距離可達(dá)1.2公里。
02、485的半雙工通信
半雙工系統(tǒng)由一個(gè)或多個(gè)發(fā)送機(jī)和接收機(jī)組成,但同時(shí)一次只能有一個(gè)主機(jī)發(fā)送數(shù)據(jù)。通信是由發(fā)送端向特定接收方發(fā)出請(qǐng)求而實(shí)現(xiàn)的。RS485網(wǎng)絡(luò)基于主/從框架構(gòu)建。主機(jī)扮演發(fā)送器的角色,向作為接收器的指定從機(jī)發(fā)出請(qǐng)求。主機(jī)監(jiān)聽響應(yīng),如果在適當(dāng)?shù)臅r(shí)間范圍內(nèi)未獲得響應(yīng),將終止通信。
03、Modbus通信原理
Modbus消息的原理。在Modbus RS485網(wǎng)絡(luò)中,當(dāng)主設(shè)備向連接的從設(shè)備發(fā)送查詢時(shí),通信開始。從設(shè)備實(shí)時(shí)監(jiān)控網(wǎng)絡(luò),以收到專門針對(duì)它的查詢時(shí),要么執(zhí)行一個(gè)操作,要么回復(fù)主機(jī)。
查詢僅由主設(shè)備發(fā)起。
Modbus協(xié)議允許主機(jī)選擇將消息尋址到特定的從設(shè)備或同時(shí)與所有從設(shè)備通信。這是通過一個(gè)特殊的“廣播”地址實(shí)現(xiàn)的。但是有一些產(chǎn)品設(shè)計(jì)時(shí),設(shè)計(jì)為不接收“廣播”地址命令。讀寫操作通過使用線圈的Modbus消息發(fā)送。線圈由16位字和二進(jìn)制寄存器組成。從機(jī)只能對(duì)接收到的消息做出響應(yīng),而不會(huì)啟動(dòng)與主機(jī)的通信。并行連接到RS485總線的每個(gè)從設(shè)備都分配了一個(gè)唯一的Modbus從設(shè)備ID。所有Modbus通信都從發(fā)送從設(shè)備ID開始,以提醒從設(shè)備接收查詢或通知主設(shè)備哪個(gè)設(shè)備提供了回復(fù)。與RS232連接的工作方式相同,從設(shè)備和主設(shè)備需要保證配置相同,如傳輸速度(波特率)、奇偶校驗(yàn)等參數(shù)需要在整個(gè)網(wǎng)絡(luò)中同步。04
Modbus消息格式
Modbus協(xié)議中定義了主設(shè)備和從設(shè)備之間的Modbus通信中使用的消息格式。Modbus查詢由設(shè)備(或廣播)地址、定義任何請(qǐng)求操作的功能代碼、隨請(qǐng)求返回的數(shù)據(jù)以及錯(cuò)誤檢查字段組成。Modbus響應(yīng)由驗(yàn)證已采取請(qǐng)求操作的字段、隨響應(yīng)發(fā)送的數(shù)據(jù)和錯(cuò)誤檢查字段組成。如果從設(shè)備無(wú)法完成請(qǐng)求或錯(cuò)誤影響了消息的接收,則從設(shè)備將創(chuàng)建一條錯(cuò)誤消息作為其響應(yīng)。Modbus通信采用兩種不同的串行傳輸模式:ASCII和RTU。Modbus ASCII(美國(guó)信息交換標(biāo)準(zhǔn)代碼)模式將每個(gè)8位消息作為兩個(gè)ASCII字符發(fā)送。ASCII模式的優(yōu)點(diǎn)包括能夠在文本控制臺(tái)上輕松監(jiān)控消息。該模式還允許在不啟動(dòng)超時(shí)的情況下接受1秒的間隔。Modbus RTU(遠(yuǎn)程終端單元)模式以不同的格式傳輸消息。這里,8位消息包含兩個(gè)4位十六進(jìn)制字符。使用這種傳輸模式的數(shù)據(jù)需要以連續(xù)流的形式發(fā)送,并且與ASCII模式相比,在波特率相當(dāng)?shù)那闆r下能夠?qū)崿F(xiàn)更好的吞吐量。
05、Modbus VS RS-485
Modbus是一種協(xié)議。Modbus協(xié)議定義了用于交換數(shù)據(jù)的消息傳遞結(jié)構(gòu)。Modbus可以使用多種不同類型的電氣標(biāo)準(zhǔn),并連接到RS 485。Modbus通信可以通過RS 232、RS 485、RS 422、無(wú)線電、衛(wèi)星、TCP/IP進(jìn)行。Modbus不定義其通信的物理介質(zhì),而是定義消息傳遞結(jié)構(gòu)。RS485是一種電氣標(biāo)準(zhǔn)。RS485定義了允許數(shù)據(jù)傳輸?shù)奈锢黼娦盘?hào)電平和接線。總結(jié)一句話:
Modbus定義協(xié)議類型,RS485定義協(xié)議上的信號(hào)電平。