RM新时代网站-首页

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

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

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

Modbus功能碼詳解

瑞薩MCU小百科 ? 來(lái)源:瑞薩MCU小百科 ? 2024-10-29 14:35 ? 次閱讀

10.5Modbus功能碼詳解

本節(jié)大部分內(nèi)容參考《Modbus軟件開(kāi)發(fā)實(shí)戰(zhàn)指南》。

10.5.1

功能碼概要

Modbus標(biāo)準(zhǔn)在協(xié)議中規(guī)定了以下3類Modbus功能碼。

公共功能碼:

①被明確定義的功能碼

②保證唯一性

③由Modbus協(xié)會(huì)確認(rèn),并提供公開(kāi)的文檔

④可進(jìn)行一致性測(cè)試

⑤包括協(xié)議定義的功能碼和保留將來(lái)使用的功能碼

用戶自定義功能碼:

①有兩個(gè)用戶自定義功能碼區(qū)域,分別是65~72和100~110。

②用戶自定義,無(wú)法保證唯一性。

保留功能碼:

保留功能碼因?yàn)闅v史遺留原因,某些公司的傳統(tǒng)產(chǎn)品現(xiàn)行使用的功能碼不作為公共使用。

10.5.2

0x01)讀取線圈

1. 功能說(shuō)明

01功能碼用于讀取從設(shè)備的線圈或離散量輸出的狀態(tài),即各Do(DiscreteOutput,離散輸出)的ON/OFF狀態(tài)。消息幀中指定了需要讀取的線圈起始地址和線圈數(shù)目。需要注意的是,在Modbus協(xié)議規(guī)定的PDU中,所有線圈或寄存器地址都必須從0開(kāi)始計(jì)算。

2. 查詢報(bào)文

如下表所示,查詢幀的消息中定義了從設(shè)備地址為3,并讀取從設(shè)備的Modbus地址0001900055(線圈地址 0002000056)共計(jì)37個(gè)狀態(tài)值。起始線圈地址為0x13(即十進(jìn)制00019),因?yàn)榫€圈地址是從0開(kāi)始計(jì)數(shù)的。

功能碼01查詢報(bào)文示例:

字段 例(Hex) ASCII模式字符型 RTU模式8位(Hex)
幀頭 “:”
從設(shè)備地址 0x03 “0”,“3” 0x03
功能碼 0x01 “0”,“1” 0x01
起始地址
(高位)
0x00 “0”,“0” 0x00
起始地址
(低位)
0x13 “1”,“3” 0x13
寄存器數(shù)
(高位)
0x00 “0”,“0” 0x00
寄存器數(shù)
(低位)
0x25 “2”,“5” 0x25
差錯(cuò)校驗(yàn) LRC(2字符) CRC(2字節(jié))
幀尾 CR/LF
合計(jì)字節(jié)數(shù) 17 8

Modbus協(xié)議規(guī)定,起始地址由2字節(jié)構(gòu)成,取值范圍為0x0000~0xFFFF。

線圈數(shù)量由2字節(jié)構(gòu)成,取值范圍為0x0001~0x07D0(即+進(jìn)制1~2000)另外,注意觀察ASCII模式和RTU模式的區(qū)別,ASCII模式直接按每4位拆分成對(duì)應(yīng)的字符表示。

3. 響應(yīng)報(bào)文

在響應(yīng)報(bào)文的數(shù)據(jù)字段中,每個(gè)線圈占用1位(bit),狀態(tài)被表示為1=ON和O=OFF兩種類型。第1個(gè)數(shù)據(jù)字節(jié)的LSB(最低有效位)標(biāo)識(shí)查詢報(bào)文中的起始地址線圈的狀態(tài)值,其他線圈以此類推,一直到這個(gè)字節(jié)的MSB(最高有效位)為止,并在后續(xù)字節(jié)中按照同樣的方式(由低到高)排列。

例如,下表中線圈20~27的狀態(tài)值分別是ON-ON-OFF OFF-ON-OFF-ON-OFF表示為二進(jìn)制則為01010011(0x53),注意觀察對(duì)應(yīng)的順序。1字節(jié)可以表示8個(gè)線圈的狀態(tài)如果最后的數(shù)據(jù)字節(jié)中不能填滿8個(gè)線圈的狀態(tài),則用0填充。對(duì)應(yīng)于查詢報(bào)文中需要讀取37個(gè)線圈的狀態(tài),共需要5字節(jié)保存狀態(tài)值。

功能碼01響應(yīng)報(bào)文示例:

字段 例(Hex) ASCII模式字符型 RTU模式8位(Hex)
幀頭 “:”
從設(shè)備地址 0x03 “0”,“3” 0x03
功能碼 0x01 “0”,“1” 0x01
數(shù)據(jù)域字節(jié)數(shù) 0x05 “0”,“5” 0x05
數(shù)據(jù)1 0x53 “5”,“3” 0x53
數(shù)據(jù)2 0x6B “6”,“B” 0x6B
數(shù)據(jù)3 0x01 “0”,“1” 0x01
數(shù)據(jù)4 0xF4 “F”,“B” 0xF4
數(shù)據(jù)5 0x1B “1”,“B” 0x1B
差錯(cuò)校驗(yàn) LRC(2字符) CRC(2字節(jié))
幀尾 CR/LF
合計(jì)字節(jié)數(shù) 21 10

10.5.3

(0x02)讀取離散量輸入值

1. 功能說(shuō)明

02功能碼用于讀取從設(shè)備的離散輸入,即DI(Discrete Input)的ON/OFF狀態(tài)。消息頓中指定了需要讀取的離散輸入寄存器的起始地址和數(shù)目,可以讀取1~2000個(gè)連續(xù)的離散量輸入狀態(tài)如果從設(shè)備接受主設(shè)備的請(qǐng)求則回復(fù)功能碼02,并返回離散量且輸入各變量的當(dāng)前狀態(tài)。如果返回的離散輸入數(shù)量的個(gè)數(shù)不是8的整數(shù)倍,將用0填充最后的數(shù)據(jù)字節(jié)的剩余位。

2. 查詢報(bào)文

如下表所示,查詢頓的消息中定義了從設(shè)備的地址為3,并讀取從設(shè)備的離散輸入寄存器中地址10101~10120(Modbus地址表示為十進(jìn)制100~119)共計(jì)20個(gè)離散輸入狀態(tài)值。從下表中可以發(fā)現(xiàn),起始地址為0x64(即十進(jìn)制100),因?yàn)橄DU中的Modbus地址從0開(kāi)始計(jì)數(shù)。

功能碼02查詢報(bào)文示例:

字段 例(Hex) ASCII模式字符型 RTU模式8位(Hex)
幀頭 “:”
從設(shè)備地址 0x03 “0”,“3” 0x03
功能碼 0x02 “0”,“2” 0x02
起始地址
(高位)
0x00 “0”,“0” 0x00
起始地址
(低位)
0x64 “6”,“4” 0x64
寄存器數(shù)
(高位)
0x00 “0”,“0” 0x00
寄存器數(shù)
(低位)
0x14 “1”,“4” 0x14
差錯(cuò)校驗(yàn) LRC(2字符) CRC(2字節(jié))
幀尾 CR/LF
合計(jì)字節(jié)數(shù) 17 8

與5.4.2節(jié)中的功能碼(01(0x01)讀取線圈/離散量輸出狀態(tài)(ReadCoil status/DOs))一樣,本功能碼的起始地址由2字節(jié)構(gòu)成,取值范圍為0x0000~0xFFFF;離散量數(shù)量由2字節(jié)構(gòu)成,取值范圍為0x0001~0x07D0(即十進(jìn)制1~2000),最多一次性可讀取2000人離散輸入狀態(tài)值。

3. 響應(yīng)報(bào)文

響應(yīng)報(bào)文的各項(xiàng)構(gòu)成和意義與5.4.2章節(jié)的功能碼(01(0x01)讀取線圈/離散量輸出狀態(tài)(Re-ad Coil Status/DOs))一樣,如下表所示:

功能碼02響應(yīng)報(bào)文示例

字段 例(Hex) ASCII模式字符型 RTU模式8位(Hex)
幀頭 “:”
從設(shè)備地址 0x03 “0”,“3” 0x03
功能碼 0x02 “0”,“2” 0x02
數(shù)據(jù)域字節(jié)數(shù) 0x03 “0”,“3” 0x03
數(shù)據(jù)1 0x53 “5”,“3” 0x53
數(shù)據(jù)2 0x6B “6”,“B” 0x6B
數(shù)據(jù)3 0x01 “0”,“1” 0x01
差錯(cuò)校驗(yàn) LRC(2字符) CRC(2字節(jié))
幀尾 CR/LF
合計(jì)字節(jié)數(shù) 21 10

需要技術(shù)支持?

如您在使用瑞薩MCU/MPU產(chǎn)品中有任何問(wèn)題,可識(shí)別下方二維碼或復(fù)制網(wǎng)址到瀏覽器中打開(kāi),進(jìn)入瑞薩技術(shù)論壇尋找答案或獲取在線技術(shù)支持。

聲明:本文內(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)投訴
  • MODBUS
    +關(guān)注

    關(guān)注

    28

    文章

    1799

    瀏覽量

    76947
  • 設(shè)備
    +關(guān)注

    關(guān)注

    2

    文章

    4502

    瀏覽量

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

    關(guān)注

    3

    文章

    177

    瀏覽量

    33416
  • 功能碼
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    2117

原文標(biāo)題:Moubus功能碼詳解 - RZ MPU工業(yè)控制教程連載(30)

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    modbus入門教程 Modbus協(xié)議節(jié)點(diǎn)講解之【EsDA應(yīng)用】Modbus應(yīng)用詳解

    。 ?? Modbus簡(jiǎn)介 Modbus是一種串行通信協(xié)議,由于其公開(kāi)、免費(fèi)、易于部署和維護(hù)的優(yōu)點(diǎn),被廣泛應(yīng)用于工業(yè)電子領(lǐng)域,并且已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議的業(yè)界標(biāo)準(zhǔn)。 以往我們?cè)谑褂?b class='flag-5'>Modbus協(xié)議進(jìn)行應(yīng)用開(kāi)發(fā)時(shí),通常需要自己實(shí)
    的頭像 發(fā)表于 07-18 11:55 ?2516次閱讀
    <b class='flag-5'>modbus</b>入門教程 <b class='flag-5'>Modbus</b>協(xié)議節(jié)點(diǎn)講解之【EsDA應(yīng)用】<b class='flag-5'>Modbus</b>應(yīng)用<b class='flag-5'>詳解</b>

    臺(tái)達(dá)PLC通信支持modbus協(xié)議的4號(hào)功能嗎?

    使用modbus協(xié)議的4號(hào)功能采集PH值,系統(tǒng)部署如下圖:本來(lái)這是個(gè)很簡(jiǎn)單的項(xiàng)目,可是在PLC的通訊編程中出現(xiàn)了問(wèn)題,DW-MC1無(wú)線監(jiān)控器采樣modbus協(xié)議的4號(hào)
    發(fā)表于 05-22 11:18

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

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

    Modbus詳解(全書(shū)+PDF)

    Modbus詳解,有需要的看看
    發(fā)表于 11-01 15:47

    Modbus功能的回調(diào)函數(shù)如何編寫呢

    FreeModbus從站設(shè)計(jì)(10)-Modbus功能的回調(diào)函數(shù)如何編寫關(guān)鍵詞:FreeModbus CubeMX HAL庫(kù) 串口 功能
    發(fā)表于 02-16 07:31

    modbus功能錯(cuò)誤會(huì)返回什么錯(cuò)誤信息?

    modbus在通信的過(guò)程中功能錯(cuò)誤會(huì)返回什么錯(cuò)誤碼
    發(fā)表于 10-13 07:48

    modbus功能怎么用?

    modbus功能怎么用
    發(fā)表于 11-06 06:37

    Modbus通信協(xié)議詳解

    關(guān)于Modbus通信協(xié)議的詳解和應(yīng)用分析
    發(fā)表于 10-12 16:54 ?150次下載
    <b class='flag-5'>Modbus</b>通信協(xié)議<b class='flag-5'>詳解</b>

    Modbus_通訊協(xié)議詳解

    Modbus_通訊協(xié)議詳解,Modbus_通訊協(xié)議詳解
    發(fā)表于 12-08 14:13 ?0次下載

    modbus協(xié)議功能及格式

    modbus協(xié)議功能及格式
    發(fā)表于 10-28 15:56 ?43次下載

    基于Modbus功能細(xì)粒度過(guò)濾算法的研究

    針對(duì)防火墻粗粒度過(guò)濾Modbus/TCP導(dǎo)致工控系統(tǒng)存在安全威脅的問(wèn)題,研究基于Modbus功能的細(xì)粒度過(guò)濾算法。基于Modbus TCP
    發(fā)表于 01-16 15:32 ?0次下載
    基于<b class='flag-5'>Modbus</b><b class='flag-5'>功能</b><b class='flag-5'>碼</b>細(xì)粒度過(guò)濾算法的研究

    單片機(jī)程序中,Modbus功能的回調(diào)函數(shù)如何編寫--FreeModbus從站設(shè)計(jì)(10)

    FreeModbus從站設(shè)計(jì)(10)-Modbus功能的回調(diào)函數(shù)如何編寫關(guān)鍵詞:FreeModbus CubeMX HAL庫(kù) 串口 功能
    發(fā)表于 12-20 18:49 ?9次下載
    單片機(jī)程序中,<b class='flag-5'>Modbus</b><b class='flag-5'>功能</b><b class='flag-5'>碼</b>的回調(diào)函數(shù)如何編寫--FreeModbus從站設(shè)計(jì)(10)

    【EsDA應(yīng)用】Modbus應(yīng)用詳解

    。 ?? Modbus簡(jiǎn)介 Modbus是一種串行通信協(xié)議,由于其公開(kāi)、免費(fèi)、易于部署和維護(hù)的優(yōu)點(diǎn),被廣泛應(yīng)用于工業(yè)電子領(lǐng)域,并且已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議的業(yè)界標(biāo)準(zhǔn)。 (圖片源自網(wǎng)絡(luò),侵刪) 以往我們?cè)谑褂?b class='flag-5'>Modbus協(xié)議進(jìn)行應(yīng)
    的頭像 發(fā)表于 03-10 21:50 ?924次閱讀

    Modbus功能/異常功能/錯(cuò)誤代碼

    在大家通讀Modbus協(xié)議時(shí),總是會(huì)碰到一些容易混淆的名詞,從而導(dǎo)致對(duì)于協(xié)議的解讀出現(xiàn)問(wèn)題,在本文中,我們對(duì)于Modbus協(xié)議中可能會(huì)給大家造成困惑的名詞作相關(guān)的解釋。 1.功能
    的頭像 發(fā)表于 06-25 09:20 ?1.4w次閱讀

    modbus協(xié)議功能分類 modbus協(xié)議功能是什么,有什么作用

    Modbus協(xié)議是一種用于工業(yè)領(lǐng)域常見(jiàn)的通信協(xié)議,它基于主從結(jié)構(gòu),用于在不同設(shè)備之間實(shí)現(xiàn)數(shù)據(jù)交換。Modbus協(xié)議的功能是決定數(shù)據(jù)交換類型和操作的重要部分。下面將詳細(xì)介紹
    的頭像 發(fā)表于 01-31 14:47 ?7032次閱讀
    RM新时代网站-首页