在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

簡(jiǎn)單介紹Modbus RTU協(xié)議

小麥大叔 ? 來(lái)源:小麥大叔 ? 2024-05-09 09:13 ? 次閱讀

背景

介紹modbus rtu之前,我們可以了解到,Modbus是施耐德電氣公司,于1979年發(fā)明的,是全球第一個(gè)真正用于工業(yè)現(xiàn)場(chǎng)的總線協(xié)議。四十多年過(guò)去了,現(xiàn)在仍然被廣泛使用在各個(gè)工業(yè)控制領(lǐng)域。除了這個(gè)協(xié)議很穩(wěn)定的原因之外:

免費(fèi);

方便部署和維護(hù);

對(duì)供應(yīng)商來(lái)說(shuō),修改移動(dòng)本地的比特或字節(jié)沒(méi)有很多限制;

modbus 是OSI模型第七層上的應(yīng)用層報(bào)文傳輸協(xié)議,OSI定義了開(kāi)放系統(tǒng)的層次結(jié)構(gòu)、層次之間的相互關(guān)系以及各層所包括的可能的任務(wù),作為一個(gè)框架來(lái)協(xié)調(diào)和組織各層所提供的服務(wù)。

OSI參考模型并沒(méi)有提供一個(gè)可以實(shí)現(xiàn)的方法,而是描述了一些概念,用來(lái)協(xié)調(diào)進(jìn)程間通信標(biāo)準(zhǔn)的制定。即OSI參考模型并不是一個(gè)標(biāo)準(zhǔn),而是一個(gè)在制定標(biāo)準(zhǔn)時(shí)所使用的概念性框架。

modbus在OSI模型中,可以描述為下圖;

5716f730-0d58-11ef-a297-92fbcf53809c.png

modbus osi模型中的位置

EIA485/TIA485就是RS485,隨著技術(shù)不斷發(fā)展,485標(biāo)準(zhǔn)目前是電信行業(yè)協(xié)會(huì)(TIA)維護(hù),所以名稱為TIA-485,當(dāng)然工程師及應(yīng)用指南仍繼續(xù)用RS-485來(lái)稱呼也是沒(méi)問(wèn)題的;

下面我們來(lái)介紹一些串行鏈路協(xié)議。

Modbus 串行鏈路協(xié)議

Modbus串行鏈路協(xié)議是一個(gè)主從模式(主機(jī)和從機(jī)),半雙工的數(shù)據(jù)傳輸協(xié)議,485標(biāo)準(zhǔn)通常需要兩條線,在某一個(gè)確定時(shí)刻,有一個(gè)主機(jī)和從機(jī)進(jìn)行通訊。

主從模式:通常總線上有一個(gè)主機(jī)和多個(gè)從機(jī),每個(gè)從機(jī)有唯一的ID,主機(jī)通過(guò)ID進(jìn)行尋址從機(jī),然后進(jìn)行數(shù)據(jù)傳輸;

半雙工傳輸:相對(duì)應(yīng)半雙工的是全雙工,全雙工運(yùn)行發(fā)送數(shù)據(jù)接收數(shù)據(jù)同時(shí)發(fā)生,所以半雙工就不難理解了,同一時(shí)刻只能進(jìn)行發(fā)送數(shù)據(jù),或者只能接收數(shù)據(jù);

整體的結(jié)構(gòu)圖如下所示;

5756c9f0-0d58-11ef-a297-92fbcf53809c.png

一個(gè)485總線的主從模式

這里我們還要明確幾點(diǎn):

從機(jī)無(wú)法主動(dòng)向從機(jī)發(fā)送數(shù)據(jù),只有在主機(jī)發(fā)送數(shù)據(jù)給從機(jī)(發(fā)送請(qǐng)求),然后從機(jī)接收到主機(jī)發(fā)送的數(shù)據(jù)之后,再回傳數(shù)據(jù)給主機(jī);具體如下所示;

578eadf2-0d58-11ef-a297-92fbcf53809c.png

主從模式

正如前面所提到的,modbus是半雙工傳輸?shù)模粗鳈C(jī)發(fā)送數(shù)據(jù)的時(shí)候,是不能接收數(shù)據(jù)的,所以這里總共分為兩步來(lái)進(jìn)行。

主機(jī)發(fā)送數(shù)據(jù)的方式有兩種,一個(gè)是 1對(duì)1,一個(gè)是1對(duì)多,也就是我們常說(shuō)的廣播形式,所有從機(jī)都可以收到主機(jī)發(fā)送的數(shù)據(jù);

1對(duì)1 只需要發(fā)送數(shù)據(jù)給特定地址的從機(jī)即可,廣播只需要把發(fā)送地址設(shè)置為0即可,所以廣播地址為0;

這里我們已經(jīng)大致了解了主機(jī)和從機(jī)之間的數(shù)據(jù)傳輸?shù)那闆r,下面我們就再來(lái)介紹一下數(shù)據(jù)傳輸?shù)木唧w格式;

傳輸模式

57c55366-0d58-11ef-a297-92fbcf53809c.png

先來(lái)說(shuō)說(shuō)Modbus有兩種傳輸模式,RTU傳輸模式和ASCII傳輸模式;

RTU傳輸:Remote Terminal Unit模式在Modbus中消息由十六進(jìn)制組成,數(shù)據(jù)密度高,吞吐率高;

ASCII傳輸:消息由ASCII 字符發(fā)送效率不及RTU模式,無(wú)法使用RTU模式的定時(shí)管理時(shí),使用ASCII模式;

比如:0x12會(huì)被整合成兩個(gè)字符發(fā)送:0x31和0x32發(fā)送,

因?yàn)?0x31等于字符1;0x32等于字符2

下面我們會(huì)主要介紹modbus RTU。

幀格式

在講幀格式之前,首先我們想象一下,人與人之間的對(duì)話,最基本單元是漢字,然后相互交流就用漢字組成的句子,比如下面的對(duì)話;

老板問(wèn):中午吃什么?

小樟說(shuō):吃飯吧!

所以機(jī)器之間的通信也是類似的,我們可以把字節(jié)當(dāng)作最基本的數(shù)據(jù)單元,然后由字節(jié)組成句子,也就是通信幀;

但是現(xiàn)在情況出現(xiàn)了變化,對(duì)話的人里,除了小樟,還有一個(gè)小紅,這時(shí)候,為了明確和誰(shuí)說(shuō)話,就需要在對(duì)話前面加上名字:

老板:小樟,中午吃面嗎?

小樟:老板,吃飯去吧。

小紅,沒(méi)有叫他,語(yǔ)言柚子;

所以我們繼續(xù)回到modbus的數(shù)據(jù)幀格式,這里的協(xié)議定義了一個(gè)基礎(chǔ)通信層的簡(jiǎn)單協(xié)議數(shù)據(jù)單元(PDU),具體如下圖所示;

59137eaa-0d58-11ef-a297-92fbcf53809c.png

所以這里基本分為四個(gè)部分,地址域功能碼數(shù)據(jù)差錯(cuò)校驗(yàn)(CRC/LRC),統(tǒng)稱為ADU (Application Data Unit),基本上進(jìn)行傳輸?shù)臄?shù)據(jù)都要滿足這個(gè)格式,作為一個(gè)完整的幀,對(duì)照前面老板的對(duì)話內(nèi)容,我們這里可以簡(jiǎn)單的理解一下:

地址域:可以理解成 具體和誰(shuí)說(shuō)話

功能碼:可以理解成 具體動(dòng)作,比如 去做,來(lái)拿,去吃 等等;

數(shù)據(jù):可以理解成 具體內(nèi)容,比如 面,飯 等等,也可以是其他,這里配合上下文,所以是吃的東西;

差錯(cuò)校驗(yàn):可以理解成,說(shuō)出來(lái)的話必須可以讓人理解,不然別人聽(tīng)不懂啊;實(shí)際上在協(xié)議中通常使用CRC或LRC保證傳輸?shù)臄?shù)據(jù)沒(méi)有錯(cuò)誤;

下面我們?cè)偕钊敕治鲆幌拢?/p>

PDU

Modbus PDU(protocol data unit)格式被定義為一個(gè)功能代碼,后面跟著一組關(guān)聯(lián)的數(shù)據(jù)。

該數(shù)據(jù)的大小和內(nèi)容由功能代碼定義,整個(gè)PDU(功能代碼和數(shù)據(jù))的大小不能超過(guò)253個(gè)字節(jié)。

每個(gè)功能代碼都有一個(gè)特定的行為,從設(shè)備可以根據(jù)所需的應(yīng)用程序行為靈活地實(shí)現(xiàn)這些行為。

PDU規(guī)范定義了數(shù)據(jù)訪問(wèn)和操作的核心概念;但是,從設(shè)備可能會(huì)以規(guī)范中未明確定義的方式處理數(shù)據(jù)。

地址域

地址域占用一個(gè)字節(jié),所以一般來(lái)說(shuō)尋址范圍是0~255,一般在系統(tǒng)中用1~147,其他地址暫時(shí)保留,另外,同一個(gè)總線上的從機(jī),每個(gè)地址必須唯一。

其中0是廣播地址;

下面是Freemodbus的一個(gè)從機(jī)初始化代碼,0x02就是這個(gè)從機(jī)的地址,

eMBInit(MB_RTU,0x02,3,115200,MB_PAR_NONE);

功能碼

功能碼占一個(gè)字節(jié),所以范圍是 0~255,協(xié)議中規(guī)定了功能碼分為三類:公共功能碼,用戶自定義功能碼,保留功能碼。整體如下所示;

59483050-0d58-11ef-a297-92fbcf53809c.png

公共功能碼必須保證它的唯一性,這是由Modbus組織已經(jīng)規(guī)定好,并且具有一致性測(cè)試的功能碼,所以在一定程度上,它保證了協(xié)議的可復(fù)用性。

由上表可知,公共功能碼分為四種,分別是:

離散量輸入:只讀類型,單位:bit;

線圈:讀寫類型,單位:bit;

輸入寄存器:只讀類型,單位:字節(jié);

保持寄存器:讀寫類型,單位:字節(jié);

下面是移植Freemodbus協(xié)議,從機(jī)上需要對(duì)這四個(gè)公共功能碼處理的回調(diào)函數(shù):

//輸入寄存器量
eMBErrorCodeeMBRegInputCB(UCHAR*pucRegBuffer,USHORTusAddress,USHORTusNRegs)
{
eMBErrorCodeeStatus=MB_ENOERR;
returneStatus;
}
//保持寄存器量
eMBErrorCode
eMBRegHoldingCB(UCHAR*pucRegBuffer,USHORTusAddress,USHORTusNRegs,
eMBRegisterModeeMode)
{
eMBErrorCodeeStatus=MB_ENOERR;
returneStatus;
}

//線圈數(shù)量
eMBErrorCode
eMBRegCoilsCB(UCHAR*pucRegBuffer,USHORTusAddress,USHORTusNCoils,
eMBRegisterModeeMode)
{
eMBErrorCodeeStatus=MB_ENOERR;
returneStatus;
}

//離散輸入數(shù)量
eMBErrorCode
eMBRegDiscreteCB(UCHAR*pucRegBuffer,USHORTusAddress,USHORTusNDiscrete)
{
eMBErrorCodeeStatus=MB_ENOERR;
returneStatus;
}

底層如何傳輸

我們先看一下最底層modbus數(shù)據(jù)是如何發(fā)送的,沒(méi)錯(cuò),看到RS485和232,那我們自然想到了串口。

所以最根本的數(shù)據(jù)格式可以參考一下串口數(shù)據(jù)的定義,也就是我們說(shuō)的起始位,數(shù)據(jù)位,校驗(yàn)位,數(shù)據(jù)位;具體如下所示;

5996e36c-0d58-11ef-a297-92fbcf53809c.png

所以這里我們可以規(guī)定一下:

起始位+數(shù)據(jù)位+校驗(yàn)位(可選)+ 停止位 等于一個(gè)字符;因此這里可以通過(guò)串口的波特率去計(jì)算出單個(gè)字符所需要的時(shí)間。

然后我們?cè)倏匆幌拢琺odbus幀是如何發(fā)送的?

在RTU模式中,幀之間的間隔至少為3.5個(gè)字符的空閑時(shí)間間隔,以便于表示幀的開(kāi)始和幀的結(jié)束,所以如果想自己整一個(gè)modbus rtu就需要一個(gè)定時(shí)器去結(jié)算空閑時(shí)間的長(zhǎng)度。

59d1ea98-0d58-11ef-a297-92fbcf53809c.png

3.5字符時(shí)間

整個(gè)數(shù)據(jù)必須以連續(xù)的字符流進(jìn)行發(fā)送,如果兩個(gè)字符之間的長(zhǎng)度等于1.5個(gè)字符時(shí)間,則認(rèn)為幀消息不完整,則認(rèn)為設(shè)備不該接收該消息,具體如下所示;

5a1ec142-0d58-11ef-a297-92fbcf53809c.png

1.5字符時(shí)間

這里需要注意的是RTU需要定時(shí)器中斷的參與,所以,1.5字符時(shí)間和3.5字符時(shí)間的檢測(cè),在串口通訊速率很高的時(shí)候,需要高頻率得進(jìn)入中斷,這就會(huì)增加系統(tǒng)開(kāi)銷。

所以通常在波特率低于19200的時(shí)候,可以嚴(yán)格遵守1.5和3.5字符時(shí)間的規(guī)定。

如果波特率大于19200的時(shí)候,需要滿足兩個(gè)固定時(shí)間即可:

1.5字符時(shí)間:750 us;

3.5字符時(shí)間:1.75ms;

總結(jié)

本文簡(jiǎn)單介紹了modbus rtu協(xié)議,包括串行鏈路通信,幀格式以及硬件鏈路層的消息格式。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5396

    瀏覽量

    122476
  • RS-485
    +關(guān)注

    關(guān)注

    11

    文章

    696

    瀏覽量

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

    關(guān)注

    3

    文章

    180

    瀏覽量

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

    關(guān)注

    0

    文章

    84

    瀏覽量

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

    關(guān)注

    0

    文章

    427

    瀏覽量

    29071

原文標(biāo)題:一文搞懂 Modbus RTU 協(xié)議

文章出處:【微信號(hào):knifewheat,微信公眾號(hào):小麥大叔】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【新手上路】Labview與modbus RTU協(xié)議的問(wèn)題

    傳感器是modbus RTU協(xié)議 怎么用Labview采集信號(hào)?
    發(fā)表于 05-17 09:54

    有沒(méi)有懂modbus rtu協(xié)議的大神???

    最近在弄一個(gè)溫度傳感器,用的是RS232串口,modbus RTU協(xié)議有沒(méi)有懂點(diǎn)的請(qǐng)賜教!!! 不甚感謝!!!小弟QQ190104300
    發(fā)表于 05-17 21:04

    Modbus TCP轉(zhuǎn)Modbus RTU的實(shí)現(xiàn)

    使用ZLSN2040、NETCOM2040實(shí)現(xiàn)Modbus TCP到Modbus RTU的轉(zhuǎn)化。1.Modbus TCP與Modbus
    發(fā)表于 08-10 10:04

    基于Modbus RTU的串口調(diào)試軟件的實(shí)現(xiàn)

    摘 要:文中介紹Modbus RTU通訊協(xié)議的特點(diǎn),闡述了該協(xié)議在VC2005編程環(huán)境下串口調(diào)試軟件的具體實(shí)現(xiàn)方法。并編制了相關(guān)的程序,該
    發(fā)表于 12-18 19:18

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

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

    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 RTU通訊協(xié)議相關(guān)資料下載

    Modbus RTU通訊協(xié)議中OSI模型,數(shù)據(jù)鏈路層和應(yīng)用層是通訊關(guān)鍵部分。
    發(fā)表于 11-30 08:29

    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-RTU協(xié)議

    Modbus-RTUModbus 一個(gè)工業(yè)上常用的通訊協(xié)議、一種通訊約定。Modbus協(xié)議包括RTU、ASCII、TCP。其中MODBUS-RTU
    發(fā)表于 12-20 18:48 ?39次下載
    <b class='flag-5'>Modbus-RTU</b><b class='flag-5'>協(xié)議</b>

    MODBUS RTU傳輸模式介紹

    上期我們學(xué)習(xí)了,第一篇MODBUS協(xié)議基本介紹,今天我們來(lái)研究第二篇MODBUS RTU傳輸模式介紹
    的頭像 發(fā)表于 07-19 15:58 ?6408次閱讀
    <b class='flag-5'>MODBUS</b> <b class='flag-5'>RTU</b>傳輸模式<b class='flag-5'>介紹</b>

    MODBUS RTU詳細(xì)解釋

    Modbus 一個(gè)工業(yè)上常用的通訊協(xié)議、一種通訊約定。Modbus 協(xié)議包括 RTU、ASCII、TCP。其中
    發(fā)表于 01-12 16:39 ?10次下載

    Modbus-RTU通訊協(xié)議是什么?

    Modbus-RTU通訊協(xié)議是一種串行通訊協(xié)議,它可以用于連接不同類型的設(shè)備,以實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和控制。Modbus協(xié)議包括RTU、ASCII、
    的頭像 發(fā)表于 05-23 15:06 ?968次閱讀

    Profibus PA轉(zhuǎn)Modbus RTU協(xié)議網(wǎng)關(guān)

    捷米特JM-RTU-PA網(wǎng)關(guān)將Profibus PA和Modbus RTU專用通訊協(xié)議橋接的協(xié)議轉(zhuǎn)換設(shè)備。符合
    的頭像 發(fā)表于 09-25 11:47 ?512次閱讀
    Profibus PA轉(zhuǎn)<b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b><b class='flag-5'>協(xié)議</b>網(wǎng)關(guān)

    Modbus RTU協(xié)議說(shuō)明

    文章對(duì)Modbus RTU協(xié)議進(jìn)行了較為詳細(xì)的說(shuō)明,并用具體示例可以參考。
    的頭像 發(fā)表于 04-11 10:56 ?325次閱讀
    <b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b><b class='flag-5'>協(xié)議</b>說(shuō)明
    主站蜘蛛池模板: 亚洲国产成人久久精品影视 | 免费四虎永久在线精品 | 午夜视频在线观看视频 | 永久网站色视频在线观看免费 | 国产一区二区在线视频播放 | 欧美另类69xxxxxhd| 欧美黄色片免费 | 五月婷婷色网 | 手机看片1024福利 | 免费国产h视频在线观看 | 不卡一区二区在线观看 | 久久精品re | 成 人 色综合 | 黄色在线观看视频网站 | 天堂资源www天堂在线 | 最近观看免费高清视频 | 狠狠色噜噜狠狠狠狠狠色综合久久 | 免费观看黄a一级视频日本 免费观看黄色网页 | 色婷婷综合久久久久中文一区二区 | 色资源窝窝全色 | 亚洲第一成人在线 | 午夜爱爱毛片xxxx视频免费看 | 99久久香蕉国产综合影院 | 明星三级国产免费播放 | 午夜免费啪在线观看视频网站 | 国产大乳孕妇喷奶水在线观看 | 色五月婷婷成人网 | 最新bt合集 | 天天插天天狠 | 亚洲综合香蕉 | 亚洲精品色图 | 色片在线| 亚洲国产精品第一区二区 | 欧美 在线播放 | 欧美一区二区三区精品 | 4388x17亚洲最大成人网 | 操操插插| 日本a在线看 | 亚洲免费二区三区 | 欧美人与动欧交视频 | 操操干|