通訊格式、傳輸方式及MODBUS協(xié)議簡介_第1頁
通訊格式、傳輸方式及MODBUS協(xié)議簡介_第2頁
通訊格式、傳輸方式及MODBUS協(xié)議簡介_第3頁
通訊格式、傳輸方式及MODBUS協(xié)議簡介_第4頁
通訊格式、傳輸方式及MODBUS協(xié)議簡介_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 MODBUS協(xié)議、通訊格式、傳輸方式 QQ:512989395 淘寶店鋪: MODBUS簡介MODBUS是一種單主站的主/從通信模式。MODBUS網(wǎng)絡(luò)上只能有一個(gè)主站存在,主站在 MODBUS網(wǎng)絡(luò)上沒有地址,從站的地址范圍為 0 - 247,其中 0 為廣播地址,從站的實(shí)際地址范圍為 1 - 247。 MODBUS通信標(biāo)準(zhǔn)協(xié)議可以通過各種傳輸方式傳播,如 RS232C、RS485、光纖、無線電等。 MODBUS具有兩種串行傳輸模式,ASCII 和 RTU。它們定義了數(shù)據(jù)如何打包、解碼的不同方式。支持 MODBUS 協(xié)議的設(shè)備一般都支持 RTU 格式。 通信雙方必須同時(shí)支持上述模式中的一種。實(shí)

2、際也就是發(fā)送與接收雙方商量一下,定好規(guī)則,發(fā)送方想要接收方做某件事,就發(fā)送某種格式的信息給接收方,接收方收到信息后,按照事先約定好的規(guī)則分析信息,執(zhí)行命令。您如果愿意,也可以自己定義一個(gè)通訊規(guī)范,用PLC 或是VB 語言按照您自己定義的這個(gè)規(guī)范處理,如果您定義的這個(gè)規(guī)范可靠性、便于分析性超過MODBUS,那您的通訊規(guī)范就是最流行的了!MODBUS 的通訊規(guī)范:起始符 + 設(shè)備地址 + 功能代碼 + 數(shù)據(jù) + 校驗(yàn)和 + 結(jié)束符 通訊格式 通訊格式設(shè)置舉例:9600,o,8,1 即: 波特率為9600; 校驗(yàn)方式為奇校驗(yàn); 數(shù)據(jù)位為八位; 停止位為一位; -1、波特率:波特率是每秒鐘傳輸?shù)臄?shù)據(jù)位

3、數(shù);什么是位數(shù)呢?計(jì)算機(jī)處理的語言是"0"和"1"組合而成的信息,即機(jī)器語言!一個(gè)"0"或是一個(gè)"1"就是一個(gè)位; 設(shè)置波特率的作用? 如果把波特率設(shè)為9600,即一秒鐘之內(nèi)能夠傳輸9600個(gè)"0"或是"1",它決定了通訊的數(shù)據(jù)傳輸速度。常用的波特率數(shù)值有:2400、4800、9600、19200、38400、57600、115200; 其值越大,通訊傳輸速度越高,那么是不是把波特率的數(shù)值設(shè)置的越大越好呢?當(dāng)然不是,它要根據(jù)現(xiàn)場傳輸條件來決定,波特率設(shè)置的越大,要承擔(dān)的通訊失

4、敗風(fēng)險(xiǎn)越大。- 2、數(shù)據(jù)位:前面說過,計(jì)算機(jī)處理的語言是"0"和"1"組合而成的信息,即機(jī)器語言!01000001 ,01000010 ,01000011 ,01000100 ,01000101,01000110 A B C D E F上面一組機(jī)器碼分別代表的字符是 A,B,C,D,E,F(xiàn);如A: 是用01000001表示,共八個(gè)"0"或"1",即數(shù)據(jù)位為八位;數(shù)據(jù)位的含義:是一個(gè)字符可以用多少個(gè)位的組合來表示; 為什么要設(shè)置數(shù)據(jù)位呢? 其一,設(shè)置數(shù)據(jù)位后,我們就知道了數(shù)據(jù)長度,然后可以根據(jù)波特率(9600)計(jì)算出

5、傳輸一個(gè)字符A需要多少時(shí)間。如果數(shù)據(jù)位設(shè)為8,則: 8/9600=0.00083秒即傳輸一個(gè)字符"A"需要0.83毫秒的時(shí)間(這不是正確的計(jì)算,原因在停止位的解釋中再論述?。?其二,定義一個(gè)標(biāo)準(zhǔn),方便通訊雙方分析。合法的數(shù)據(jù)位值:4、5、6、7、8 目前常用的數(shù)據(jù)位是8 位與7 位。- 3、停止位: 設(shè)置了數(shù)據(jù)位,就可以正常通訊了嗎?不是!接收方何時(shí)才知道一個(gè)字符傳輸結(jié)束了呢?這就需要一個(gè)停止位,有停止位當(dāng)然還需要一個(gè)起始位來告訴接收方一個(gè)字符的傳輸開始! 為什么要設(shè)置停止位呢? 上面解釋過了,即,知道一個(gè)字符何時(shí)傳輸結(jié)束! 目前常用的停止位是一位與二位。還有一個(gè)問題,為什

6、么在通訊格式中不用設(shè)置起始位?我所知道的是: 停止位是一個(gè)高電平(1),當(dāng)接收方接收到連續(xù)的高電平時(shí),表示一個(gè)字符傳輸結(jié)束。 起始位是一個(gè)低電平(0),當(dāng)接收方接收連續(xù)的低電平時(shí),表示下一個(gè)字符的傳輸開始。如果停止位可靠(1 位或是2 位),那么干擾造成低電平起始位假象的可能性就不大,所以不用設(shè)置起始位! 在數(shù)據(jù)位的解釋中,我計(jì)算過傳輸一個(gè)數(shù)據(jù)位設(shè)為八位的字符"A"的傳輸時(shí)間,8/9600=0.00083 秒,即0.83 毫秒的時(shí)間傳輸一個(gè)字符A,現(xiàn)在您應(yīng)該知道了,這個(gè)計(jì)算并不正確,因?yàn)闆]有加上起始位數(shù)和停止位數(shù)! 現(xiàn)在我們重新計(jì)算:假如設(shè)置停止位為2,則一個(gè)起始位,兩個(gè)停

7、止位,8 個(gè)數(shù)據(jù)位,總位數(shù)為11。11/9600=0.0011 秒,即傳輸一個(gè)字符"A"需要1.1毫秒的時(shí)間(這還不是正確的計(jì)算,原因在校驗(yàn)方式的解釋中再論述!)- 4、校驗(yàn)方式: 朋友們都知道,干擾是無處不在的,如果抗干擾處理的不理想,在通訊傳輸過程中,"0"可能會變成"1",或是將"1"干擾成"0",造成傳輸錯誤.干擾是消除不了的,提高抗干擾能力也只是提高而已,并不能完全防止干擾。所以因?yàn)楦蓴_造成的傳輸錯誤一定會發(fā)生。接收方如何知道接收到字符是否正確呢?解決方式就是加上一個(gè)校驗(yàn),即在傳輸?shù)臄?shù)

8、據(jù)中再加上一個(gè)校驗(yàn)位!目前所用的校驗(yàn)方式為: 偶校驗(yàn)(even):簡單表示為"e" ; 奇校驗(yàn)(odd):簡單表示為"o" ; 無校驗(yàn)(none):簡單表示為"n" ; 偶校驗(yàn):如果一個(gè)字符中"1"的個(gè)數(shù)是奇數(shù)那么校驗(yàn)位就置為"1"; 如果一個(gè)字符中"1"的個(gè)數(shù)是偶數(shù),那么校驗(yàn)位就置為0;從而保證總的1 的個(gè)數(shù)是偶數(shù);比如設(shè)置數(shù)據(jù)位為8位,字符"A"是:0100 0001 其"1"的個(gè)數(shù)是2個(gè),為偶數(shù)。那么校驗(yàn)位則為"0&qu

9、ot; 真正發(fā)送的信息為:0100 0001 0 奇校驗(yàn):如果一個(gè)字符中"1"的個(gè)數(shù)是偶數(shù),那么校驗(yàn)位就置為1; 如果一個(gè)字符中"1"的個(gè)數(shù)是奇數(shù),那么校驗(yàn)位就置為0;從而保證總的"1"的個(gè)數(shù)是奇數(shù);比如設(shè)置數(shù)據(jù)位為8位,字符"A"是:0100 0001 其"1"的個(gè)數(shù)是2個(gè),為偶數(shù)。那么校驗(yàn)位則為"1" 真正發(fā)送的信息為:0100 0001 1無校驗(yàn):沒有校驗(yàn)位;校驗(yàn)位的作用:如果在傳輸過程中,由于干擾將某個(gè)"0"變成了"1",偶校驗(yàn)

10、時(shí),"1" 的個(gè)數(shù)因?yàn)楦蓴_變成奇數(shù),奇校驗(yàn)時(shí),"1" 的個(gè)數(shù)因?yàn)楦蓴_變成偶數(shù),接收方會返回一個(gè)奇偶校驗(yàn)錯誤信息給發(fā)送方。 比如:當(dāng)采用奇校驗(yàn)時(shí),發(fā)送"A"字符的 0100 0001 1當(dāng)傳輸?shù)浇邮辗剑捎诟蓴_變成了 0100 0011 1接收方接收到四個(gè)"1",是偶數(shù),不符合奇校驗(yàn)的"1"的個(gè)數(shù)為奇數(shù)的規(guī)定,所以返回一個(gè)奇偶校驗(yàn)錯誤信息給發(fā)送方!注意:奇偶校驗(yàn)方式不可能完全校驗(yàn)一個(gè)字符發(fā)送是否正確!比如采用奇校驗(yàn)方式時(shí),發(fā)送"A"字符時(shí) 0100 0001 1由于干擾接收方接

11、收到的是 0100 0010 1 (是"B")由于只是"1"的位置改變了,"1"的個(gè)數(shù)還是奇數(shù),雖然發(fā)送的是A,接收到的是B,但是奇校驗(yàn)還認(rèn)為是正確的字符;為了解決奇偶校驗(yàn)方式的上述缺陷,每種標(biāo)準(zhǔn)協(xié)議都會要求校驗(yàn)和計(jì)算,比如 MODBUS通訊協(xié)議的 RTU 方式是 CRC 校驗(yàn)計(jì)算; MODBUS通訊協(xié)議的 ASCII 方式是 LRC 校驗(yàn)計(jì)算;有些朋友對于奇偶校驗(yàn) 與 校驗(yàn)和計(jì)算 這兩個(gè)概念分不清楚。 奇偶校驗(yàn):判斷一個(gè)字符傳輸?shù)氖欠裾_; 校驗(yàn)和: 判斷一組字符傳輸?shù)氖欠裾_;在停止位的解釋中,我計(jì)算過傳輸一個(gè)數(shù)據(jù)位設(shè)為八位,停止

12、位設(shè)為2位的字符"A"的傳輸時(shí)間,一個(gè)起始位,兩個(gè)停止位,8 個(gè)數(shù)據(jù)位,總位數(shù)為11。 11/9600=0.0011 秒,即1.1 毫秒傳輸一個(gè)字符A,現(xiàn)在您應(yīng)該知道了,這個(gè)計(jì)算并不正確,因?yàn)闆]有加上校驗(yàn)位! 現(xiàn)在我們重新計(jì)算: 通訊格式為:9600,o,8,2一個(gè)起始位,八個(gè)數(shù)據(jù)位,一個(gè)校驗(yàn)位,兩個(gè)停止位,總位數(shù)為12。12/9600=0.00125 秒,傳輸一個(gè)字符"A"需要1.25毫秒的時(shí)間;這個(gè)計(jì)算值才是最后的理論計(jì)算值!可以大致評估傳輸一組字符需要的時(shí)間!當(dāng)然,選用無校驗(yàn)方式,計(jì)算傳輸方式不需要加上校驗(yàn)位需要永遠(yuǎn)記住的是:*參預(yù)通訊的雙方設(shè)定的通訊格式必須一樣的*傳輸方式 傳輸方式?jīng)]什么好講,只是有初學(xué)者詢問我問題時(shí),我問采用的通訊協(xié)議是什么,對方回答是485通訊,這明顯是搞亂了傳輸方式與通訊協(xié)議兩個(gè)概念,所以用一兩句話大致說一下: 485通訊,232通訊,這講的是采用何種傳輸方式!既然是傳輸方式,重要就是“傳輸”兩字,不管是232還是485,只是起到傳輸作用,可以傳輸MODBUS通訊協(xié)議信息,也可以傳輸其他通訊協(xié)議信息! 或

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論