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

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

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

Modbus協(xié)議長(zhǎng)啥樣呢?Modbus RTU協(xié)議有哪些參數(shù)?

冬至子 ? 來(lái)源:物聯(lián)網(wǎng)諸子?xùn)| ? 作者:諸子?xùn)| ? 2023-08-10 16:36 ? 次閱讀

Modbus 協(xié)議可以走串口,可以走網(wǎng)口。

我們就先以Modbus RTU為主,畢竟Modbus RTU用的實(shí)在太多了。

其實(shí)只要把Modbus RTU掌握了,理解了,其它衍生出來(lái)的協(xié)議,自然也就理解了。

那Modbus 協(xié)議長(zhǎng)啥樣呢。

我們先來(lái)直接看一組數(shù)據(jù)。

主站發(fā)送:01 03 00 14 00 01 C4 0E

從站回復(fù):01 03 02 00 63 F8 6D

好,不管你有沒(méi)有學(xué)過(guò)Modbus協(xié)議,我們先假裝看懂了上面的報(bào)文。

我們進(jìn)入情景中。

現(xiàn)場(chǎng)有一個(gè)HMI。

還有一個(gè)PLC。

PLC接了100個(gè)燈,100個(gè)門(mén),100個(gè)稱(chēng)。

“誰(shuí)家PLC會(huì)接這么多個(gè)燈,接這么多稱(chēng)呀。”

“你管的著么,雙十一打折,多買(mǎi)了幾個(gè)不行呀?!?/p>

那燈的數(shù)據(jù)呢,就只有開(kāi)還是關(guān)。也就是非0即1了。是開(kāi)關(guān)類(lèi)型。

那稱(chēng)的數(shù)據(jù)呢,如果單位是克,那可以是0到9999克,比如,這個(gè)稱(chēng)只能稱(chēng)到9999克上限。

那HMI通過(guò)Modbus協(xié)議,理應(yīng)可以讀到100個(gè)燈里,任意一個(gè)或者連續(xù)幾個(gè)燈的數(shù)據(jù)。

也可以讀一個(gè)稱(chēng)或者連續(xù)幾個(gè)稱(chēng)的數(shù)據(jù)。

也就是報(bào)文上,要能把這些表現(xiàn)出來(lái)。

比如HMI想讀第20個(gè)稱(chēng)的數(shù)據(jù),只讀一個(gè)。

那20,也就是十六進(jìn)制0x14。

讀一個(gè),1,也就是0x01 。

我們看一下報(bào)文。

01 03 00 14 00 01 C4 0E。

真的有14 這個(gè)字節(jié)。

但是是00 14 呢還是14 00 還是14 呢。

如果只有一個(gè)字節(jié),只能表示0到255。不行,數(shù)量太少了,肯定不夠。那必須兩個(gè)字節(jié)表示。

所以,0014就是第20個(gè)稱(chēng)。也就是我們所說(shuō)的地址了。

1.jpg

這么乍一看,好像只需要三個(gè)字段,就可以表示HMI所需要讀的數(shù)據(jù)了。

確實(shí)也是呀。HMI只是想讀一個(gè)稱(chēng)的數(shù)據(jù),沒(méi)必要發(fā)其它不相關(guān)的數(shù)據(jù)的呀。

“HMI可以連接多個(gè)PLC嘛,怎么連接?”

“HMI可以通過(guò)485,接幾個(gè)PLC的哦?!?/p>

“可是我要怎么知道我要讀哪個(gè)PLC的數(shù)據(jù)呢”

“這樣吧,我們給不同的PLC起一個(gè)編號(hào),也就是站號(hào),這樣就可以了。”

“那Modbus協(xié)議上,我是不是也帶這個(gè)站號(hào)呢?!?/p>

“是的,我們?cè)贛odbus上面加個(gè)站號(hào)就是行了。這樣,如果PLC收到的報(bào)文,是自己的站號(hào)的,就回復(fù),不是自己站號(hào)的,就不要回復(fù),就解決了呀?!?/p>

“嗯,好辦法。那就用第一個(gè)字節(jié)表示吧?!?/p>

1.jpg

這樣,一個(gè)Modbus RTU協(xié)議,就此誕生了。

我們?cè)倩剡^(guò)頭來(lái)總結(jié)看一下,這個(gè)modbus 協(xié)議,大概就五個(gè)參數(shù)。

1.jpg

我們每個(gè)字段開(kāi)始聊一下。

第一個(gè)字段,就是站號(hào)。

主設(shè)備是沒(méi)有站號(hào)的。只有從設(shè)備有站號(hào)。

為什么主設(shè)備沒(méi)有站號(hào)呢。

主要是因?yàn)樵谝粋€(gè)modbus 通信里,有且只能有一個(gè)主站。只有主站才能主動(dòng)發(fā)報(bào)文,從設(shè)備接到報(bào)文再判斷是否要回復(fù)。

那從設(shè)備是否只能一個(gè)呢。

如果是接到485總線上面,從站就可以有多個(gè)了。一般建議不超過(guò)32個(gè)。這個(gè)梗下期會(huì)聊的。

主設(shè)備要訪問(wèn)哪個(gè)設(shè)備的時(shí)候呢,就根據(jù)站號(hào)來(lái)區(qū)分了。

不過(guò),有時(shí)候呢,如果需要同時(shí)操作多個(gè)從設(shè)備,比如,想讓10個(gè)從設(shè)備同時(shí)開(kāi)燈,怎么做比較合適呢。

逐個(gè)發(fā)送寫(xiě)請(qǐng)求,那效率就有點(diǎn)慢了。

于是就有廣播站號(hào)的概念了。站號(hào)0代表廣播站號(hào),當(dāng)主站對(duì)站號(hào)0進(jìn)行寫(xiě)操作的時(shí)候,所有的從設(shè)備收到命令之后,一般只執(zhí)行,不回復(fù)。

第二個(gè)字段,是功能碼。

這個(gè)功能碼呢,我們換一個(gè)角度去講解。

我們回歸到協(xié)議本身,這個(gè)協(xié)議主要就是用于通信,采集和控制的。那采集什么數(shù)據(jù)呢。

就是位變量和數(shù)值變量。有只讀的,可讀可寫(xiě)的。

1.jpg

其實(shí)到這里,我們基本就把modbus協(xié)議掌握了。

modbus ascii和modbus tcp 也離不了這幾個(gè)參數(shù)。

一般來(lái)說(shuō)新手只要了解到這里,基本可以了。modbus 就算是入門(mén)了。

至于是要繼續(xù)還是從入門(mén)到放棄,就看緣分了。

筆者從事物聯(lián)網(wǎng)以來(lái),接觸的設(shè)備支持modbus的,不在少數(shù)??梢哉f(shuō),99%就只用到前面介紹的內(nèi)容,真的不能更多了。

所以,本文就不再深入講解modbus rtu更多的功能碼和內(nèi)容了。

國(guó)內(nèi)外常見(jiàn)的PLC,還有各種單片機(jī)做出來(lái)的控制器,基本也就圍繞0X,1X,4X,3X功能碼的這幾個(gè)功能碼。

所以當(dāng)你網(wǎng)上搜索出來(lái)各種中英文介紹Modbus 協(xié)議,講一大堆,不知道哪些要看,哪些不要看。筆者的經(jīng)驗(yàn)告訴我,不需要全都了解。

我們先看看讀的。

1.jpg

寄存器比較特殊,8個(gè)位占一個(gè)字節(jié)。在Modbus回復(fù)的數(shù)據(jù)里,并不是用一個(gè)字節(jié)表示一個(gè)位寄存器。而是用一個(gè)位,表示一個(gè)位寄存器。

這樣讀20個(gè)寄存器,就需要3個(gè)字節(jié)了。

這樣從站回復(fù)的數(shù)據(jù)就是FF FF 0F了。

也就是從站是至少一個(gè)字節(jié)起回復(fù),不夠一個(gè)字節(jié)的位,按一個(gè)字節(jié)回復(fù)。

大概的公式就是 位寄存器個(gè)數(shù)/8 得到字節(jié)個(gè)數(shù),然后再看是否整除,如果不整除,有余數(shù),則再補(bǔ)一個(gè)寄存器。

20/8=2,然后有余數(shù),余數(shù)是4。所以是三個(gè)字節(jié)。最后一個(gè)字節(jié),只取低4位有效。

4.[功能碼02]讀1X寄存器,地址10,讀16個(gè)寄存器

1.jpg

2.jpg

總結(jié)起來(lái),Modbus協(xié)議,也就常見(jiàn)8種功能碼。由于多寫(xiě)可以兼容單寫(xiě),甚至有的控制器,直接去掉單寫(xiě)命令,用多寫(xiě)實(shí)現(xiàn),這樣就只有6種功能碼了。

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

    關(guān)注

    6030

    文章

    44491

    瀏覽量

    632023
  • ModBus協(xié)議
    +關(guān)注

    關(guān)注

    3

    文章

    173

    瀏覽量

    33367
  • CRC校驗(yàn)
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    15174
  • RTU
    RTU
    +關(guān)注

    關(guān)注

    0

    文章

    403

    瀏覽量

    28598
  • PLC控制器
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    9111
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Modbus庫(kù)開(kāi)發(fā)筆記之十一:關(guān)于Modbus協(xié)議棧開(kāi)發(fā)的說(shuō)明

    /Modbus其次,Modbus協(xié)議國(guó)標(biāo),包括三個(gè)文件。我們這個(gè)協(xié)議棧就是按照國(guó)標(biāo)開(kāi)發(fā)的標(biāo)準(zhǔn)協(xié)議,但不完全,包括
    發(fā)表于 08-27 20:32

    modbus協(xié)議講解modbus-rtu以及modbus-tcp協(xié)議詳解

    modbus協(xié)議講解modbus-rtu以及modbus-tcp協(xié)議詳解,見(jiàn)附件。
    發(fā)表于 03-01 10:14

    什么是Modbus協(xié)議?如何寫(xiě)穩(wěn)定的Modbus代碼?

    什么是Modbus協(xié)議Modbus協(xié)議哪些分類(lèi)?使用Modbus時(shí)有哪些注意事項(xiàng)?如何寫(xiě)穩(wěn)定的Modbus代碼?
    發(fā)表于 07-02 06:54

    modbus協(xié)議筆記

    已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議的業(yè)界標(biāo)準(zhǔn),并且現(xiàn)在是工業(yè)電子設(shè)備之間常用的連接方式。Modbus作為目前工業(yè)領(lǐng)域應(yīng)用最廣泛的協(xié)議,與其他通信協(xié)議相比,
    發(fā)表于 07-02 07:17

    Modbus-RTU協(xié)議模式學(xué)習(xí)下載

    1.Modbus定義: 是一種串行通信協(xié)議,一開(kāi)始是為使用PLC(即可編程邏輯控制器)設(shè)備通信而發(fā)表,已成為工業(yè)上通信協(xié)議的標(biāo)準(zhǔn),是工業(yè)電子設(shè)備間常用連接方式。2.Modbus協(xié)議組成
    發(fā)表于 07-02 06:12

    Modbus協(xié)議是什么?Modbus協(xié)議主要有哪些應(yīng)用?

    請(qǐng)問(wèn)一下Modbus協(xié)議是什么?Modbus協(xié)議主要有哪些應(yīng)用?
    發(fā)表于 07-15 12:04

    Modbus協(xié)議的特點(diǎn)是什么

    Modbus協(xié)議的特點(diǎn)是什么?Modbus協(xié)議哪幾類(lèi)功能碼?
    發(fā)表于 09-26 08:13

    Modbus協(xié)議地址與協(xié)議層次

    Modbus協(xié)議地址是什么意思?Modbus協(xié)議層次何優(yōu)勢(shì)?
    發(fā)表于 09-28 06:27

    Modbus協(xié)議是什么

    Modbus協(xié)議是什么?MODBUS功能碼哪些?MODBUS協(xié)議哪幾種傳輸模式?
    發(fā)表于 09-29 07:06

    Modbus是什么?Modbus協(xié)議哪些優(yōu)點(diǎn)

    Modbus是什么?Modbus協(xié)議哪些優(yōu)點(diǎn)?Modbus協(xié)議包括哪些?
    發(fā)表于 09-30 08:40

    Modbus-RTU協(xié)議包括哪些

    Modbus-RTUModbus 一個(gè)工業(yè)上常用的通訊協(xié)議、一種通訊約定。Modbus協(xié)議包括RTU、ASCII、TCP。其中MODBUS-RTU
    發(fā)表于 02-16 07:43

    如何快速實(shí)現(xiàn)Modbus RTUModbus TCP協(xié)議轉(zhuǎn)換?

    Modbus協(xié)議是工業(yè)現(xiàn)場(chǎng)串口設(shè)備之間常用的連接方式,其中最常見(jiàn)的就是Modbus RTUModbus TCP兩種。許多工廠需要將現(xiàn)場(chǎng)各種不同型號(hào)設(shè)備的數(shù)據(jù)都能夠通過(guò)一個(gè)上位機(jī)軟件或
    發(fā)表于 08-18 18:36

    Modbus協(xié)議的理解

    系統(tǒng)的兼容,最好采用通用的通訊協(xié)議。   我們可以Modbus協(xié)議進(jìn)行修改,使之能使用在自己的系統(tǒng)中。Modbus協(xié)議包括ASCII、RTU、TCP等,并沒(méi)有規(guī)定物理層。此
    發(fā)表于 05-05 16:47

    Modbus協(xié)議網(wǎng)關(guān)是什么?Modbus協(xié)議網(wǎng)關(guān)的功能

    Modbus協(xié)議網(wǎng)關(guān)是一種專(zhuān)門(mén)用于工業(yè)自動(dòng)化環(huán)境中的網(wǎng)絡(luò)設(shè)備,其主要功能是實(shí)現(xiàn)不同通信協(xié)議之間的轉(zhuǎn)換,尤其是將基于Modbus協(xié)議的設(shè)備或系統(tǒng)與使用其他協(xié)議的設(shè)備、控制系統(tǒng)或信息系統(tǒng)連
    的頭像 發(fā)表于 04-11 15:51 ?682次閱讀

    Modbus RTU協(xié)議Modbus TCP/IP協(xié)議的區(qū)別

    Modbus RTUModbus TCP/IP的本質(zhì)都是Modbus協(xié)議,都是通過(guò)Modbus寄存器地址來(lái)交換數(shù)據(jù)的,那么它們之間
    的頭像 發(fā)表于 10-18 17:44 ?269次閱讀