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

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

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

Modbus通訊協(xié)議是怎么回事?(下)

jf_78858299 ? 來源:我愛學(xué)PLC ? 作者:我愛學(xué)PLC ? 2023-02-13 10:55 ? 次閱讀

4

功能碼命令詳解:

在這些功能碼中較長使用的是1、2、3、4、5、6號功能碼,使用它們即可實(shí)現(xiàn)對下位機(jī)的數(shù)字量和模擬量的讀寫操作。

1、01號命令,讀可讀寫數(shù)字量寄存器(線圈狀態(tài)):

計(jì)算機(jī)發(fā)送命令:[設(shè)備地址] [命令號01] [起始寄存器地址高8位] [低8位] [讀取的寄存器數(shù)高8位] [低8位] [CRC校驗(yàn)的低8位] [CRC校驗(yàn)的高8位]

例:[11][01][00][13][00][25][CRC低][CRC高]

意義如下:

<1>設(shè)備地址:在一個(gè)485總線上可以掛接多個(gè)設(shè)備,此處的設(shè)備地址表示想和哪一個(gè)設(shè)備通訊。例子中為想和17號(十進(jìn)制的17是十六進(jìn)制的11)通訊。

<2>命令號01:讀取數(shù)字量的命令號固定為01。

<3>起始地址高8位、低8位:表示想讀取的開關(guān)量的起始地址(起始地址為0)。比如例子中的起始地址為19。

<4>寄存器數(shù)高8位、低8位:表示從起始地址開始讀多少個(gè)開關(guān)量。例子中為37個(gè)開關(guān)量。

<5>CRC校驗(yàn):是從開頭一直校驗(yàn)到此之前。

設(shè)備響應(yīng):[設(shè)備地址] [命令號01] [返回的字節(jié)個(gè)數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n] [CRC校驗(yàn)的高8位] [CRC校驗(yàn)的低8位]

例:[11][01][05][CD][6B][B2][0E][1B] [CRC高] [CRC低]

意義如下:

<1>設(shè)備地址和命令號和上面的相同。

<2>返回的字節(jié)個(gè)數(shù):表示數(shù)據(jù)的字節(jié)個(gè)數(shù),也就是數(shù)據(jù)1,2...n中的n的值。

<3>數(shù)據(jù)1...n:由于每一個(gè)數(shù)據(jù)是一個(gè)8位的數(shù),所以每一個(gè)數(shù)據(jù)表示8個(gè)開關(guān)量的值,每一位為0表示對應(yīng)的開關(guān)斷開,為1表示閉合。比如例子中,表示20號(索引號為19)開關(guān)閉合,21號斷開,22閉合,23閉合,24斷開,25斷開,26閉合,27閉合...如果詢問的開關(guān)量不是8的整倍數(shù),那么最后一個(gè)字節(jié)的高位部分無意義,置為0。

<4>CRC校驗(yàn)同上。

2、05號命令,寫數(shù)字量(線圈狀態(tài)):

計(jì)算機(jī)發(fā)送命令:[設(shè)備地址] [命令號05] [需下置的寄存器地址高8位] [低8位] [下置的數(shù)據(jù)高8位] [低8位] [CRC校驗(yàn)的低8位] [CRC校驗(yàn)的高8位]

例:[11][05][00][AC][FF][00][CRC高][CRC低]

意義如下:

<1>設(shè)備地址和上面的相同。

<2>命令號:寫數(shù)字量的命令號固定為05。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的開關(guān)的地址。

<4>下置的數(shù)據(jù)高8位,低8位:表明需要下置的開關(guān)量的狀態(tài)。例子中為把該開關(guān)閉合。注意,此處只可以是[FF][00]表示閉合[00][00]表示斷開,其他數(shù)值非法。

<5>注意此命令一條只能下置一個(gè)開關(guān)量的狀態(tài)。

設(shè)備響應(yīng):如果成功把計(jì)算機(jī)發(fā)送的命令原樣返回,否則不響應(yīng)。

3、03號命令,讀可讀寫模擬量寄存器(保持寄存器):

計(jì)算機(jī)發(fā)送命令:[設(shè)備地址] [命令號03] [起始寄存器地址高8位] [低8位] [讀取的寄存器數(shù)高8位] [低8位] [CRC校驗(yàn)的高8位] [CRC校驗(yàn)的低8位]

例:[11][03][00][6B][00][03] [CRC高][CRC低]

意義如下:

<1>設(shè)備地址和上面的相同。

<2>命令號:讀模擬量的命令號固定為03。

<3>起始地址高8位、低8位:表示想讀取的模擬量的起始地址(起始地址為0)。比如例子中的起始地址為107。

<4>寄存器數(shù)高8位、低8位:表示從起始地址開始讀多少個(gè)模擬量。例子中為3個(gè)模擬量。注意,在返回的信息中一個(gè)模擬量需要返回兩個(gè)字節(jié)。

設(shè)備響應(yīng):[設(shè)備地址] [命令號03] [返回的字節(jié)個(gè)數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n] [CRC校驗(yàn)的高8位] [CRC校驗(yàn)的低8位]

例:[11][03][06][02][2B][00][00][00][64] [CRC高] [CRC低]

意義如下:

<1>設(shè)備地址和命令號和上面的相同。

<2>返回的字節(jié)個(gè)數(shù):表示數(shù)據(jù)的字節(jié)個(gè)數(shù),也就是數(shù)據(jù)1,2...n中的n的值。例子中返回了3個(gè)模擬量的數(shù)據(jù),因?yàn)橐粋€(gè)模擬量需要2個(gè)字節(jié)所以共6個(gè)字節(jié)。

<3>數(shù)據(jù)1...n:其中[數(shù)據(jù)1][數(shù)據(jù)2]分別是第1個(gè)模擬量的高8位和低8位,[數(shù)據(jù)3][數(shù)據(jù)4]是第2個(gè)模擬量的高8位和低8位,以此類推。例子中返回的值分別是555,0,100。

<4>CRC校驗(yàn)同上。

4、06號命令,寫單個(gè)模擬量寄存器(保持寄存器):

計(jì)算機(jī)發(fā)送命令:[設(shè)備地址] [命令號06] [需下置的寄存器地址高8位] [低8位] [下置的數(shù)據(jù)高8位] [低8位] [CRC校驗(yàn)的高8位] [CRC校驗(yàn)的低8位]

例:[11][06][00][01][00][03] [CRC高] [CRC低]

意義如下:

<1>設(shè)備地址和上面的相同。

<2>命令號:寫模擬量的命令號固定為06。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的模擬量寄存器的地址。

<4>下置的數(shù)據(jù)高8位,低8位:表明需要下置的模擬量數(shù)據(jù)。比如例子中就把1號寄存器的值設(shè)為3。

<5>注意此命令一條只能下置一個(gè)模擬量的狀態(tài)。

設(shè)備響應(yīng):如果成功把計(jì)算機(jī)發(fā)送的命令原樣返回,否則不響應(yīng)。

5、16號命令,寫多個(gè)模擬量寄存器(保持寄存器):

計(jì)算機(jī)發(fā)送命令:[設(shè)備地址] [命令號16] [需下置的寄存器地址高8位] [低8位] [數(shù)據(jù)數(shù)量高8位] [數(shù)據(jù)數(shù)量低8位] [下置的數(shù)據(jù)高8位] [低8位][……][……] [CRC校驗(yàn)的高8位] [CRC校驗(yàn)的低8位]

例:[11][16][00][01][00][01][00][05] [CRC高] [CRC低]

意義如下:

<1>設(shè)備地址和上面的相同。

<2>命令號:寫模擬量的命令號固定為16。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的模擬量寄存器的地址。

<4>需下置的數(shù)據(jù)數(shù)量高8位,低8位:表明了需要下置的數(shù)據(jù)數(shù)量,這里為1。

<5>下置的數(shù)據(jù)高8位,低8位:表明需要下置的模擬量數(shù)據(jù)。比如例子中就把1號寄存器的值設(shè)為5。

設(shè)備響應(yīng):如果成功把計(jì)算機(jī)返回的如下命令,否則不響應(yīng)。

設(shè)備響應(yīng):[設(shè)備地址] [命令號16] [需下置的寄存器地址高8位] [低8位] [數(shù)據(jù)數(shù)量高8位] [數(shù)據(jù)數(shù)量低8位] [CRC校驗(yàn)的高8位] [CRC校驗(yàn)的低8位],如上例返回:

[11][16][00][01][00][01] [CRC高] [CRC低]

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

    關(guān)注

    38

    文章

    5512

    瀏覽量

    113114
  • MODBUS
    +關(guān)注

    關(guān)注

    28

    文章

    1718

    瀏覽量

    76423
  • 可編程序控制器
    +關(guān)注

    關(guān)注

    5

    文章

    66

    瀏覽量

    12445
  • 工業(yè)通信
    +關(guān)注

    關(guān)注

    0

    文章

    109

    瀏覽量

    15514
收藏 人收藏

    評論

    相關(guān)推薦

    ModBus通訊協(xié)議簡介

    ModBus通訊協(xié)議通訊協(xié)議又稱通信規(guī)程,是指通信雙方對數(shù)據(jù)傳送控制的一種約定。約定中包括對數(shù)據(jù)格式,同步方式,傳送速度,傳送步驟,檢糾錯(cuò)方
    發(fā)表于 08-23 09:19

    Modbus通訊協(xié)議的幾種實(shí)現(xiàn)方式

    RTU和TCP兩種協(xié)議中轉(zhuǎn)換,根據(jù)需要選擇不同協(xié)議。這是LabVIEW多態(tài)的一個(gè)非常好的示例。程序見下圖。   5.LabVIEW 采用TCP模塊實(shí)現(xiàn)Modbus通訊   在沒有DSC
    發(fā)表于 05-05 16:19

    使用agile_modbus主機(jī)協(xié)議棧出現(xiàn)丟包是怎么回事

    使用agile_modbus主機(jī)協(xié)議棧,接10個(gè)從機(jī),測試發(fā)現(xiàn)從機(jī)接的越多,丟包率越高。實(shí)際測試10個(gè)從機(jī),每個(gè)從機(jī)間隔2s讀一次,半個(gè)小時(shí)大概丟5幀報(bào)文。接7個(gè)從機(jī),每個(gè)從機(jī)間隔2s讀一次,半個(gè)小時(shí)100%的成功率,這是怎么回事
    發(fā)表于 09-03 14:38

    MODBUS通訊協(xié)議及編程

    ModBus通訊協(xié)議分為RTU協(xié)議和ASCII協(xié)議,下面就ModBus?RTU
    發(fā)表于 07-17 11:58 ?1.5w次閱讀

    Modbus_通訊協(xié)議詳解

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

    MODBUS通訊協(xié)議及編程

    MODBUS通訊協(xié)議及編程標(biāo)準(zhǔn)通訊協(xié)議格式,工業(yè)通信的標(biāo)準(zhǔn)格式。
    發(fā)表于 03-10 11:45 ?64次下載

    MODBUS通訊協(xié)議詳細(xì)介紹

    MODBUS通訊協(xié)議詳細(xì)介紹標(biāo)準(zhǔn)通訊協(xié)議格式,工業(yè)通信的標(biāo)準(zhǔn)格式。
    發(fā)表于 03-10 11:42 ?38次下載

    空調(diào)制冷不制熱是怎么回事

    空調(diào)在使用的時(shí)候制冷卻不制熱,是怎么回事呢?下面就和大家來分享一,希望可以幫助到大家。
    的頭像 發(fā)表于 03-11 09:24 ?1.1w次閱讀

    解讀Modbus通訊協(xié)議

    作為工控人,Modbus 通訊協(xié)議想必都不陌生,Modbus 通訊協(xié)議可以說是工業(yè)自動(dòng)化領(lǐng)域應(yīng)用
    的頭像 發(fā)表于 11-09 16:39 ?1287次閱讀

    Modbus通訊協(xié)議的詳細(xì)資料講解

    作為工控人,Modbus 通訊協(xié)議想必都不陌生,Modbus 通訊協(xié)議可以說是工業(yè)自動(dòng)化領(lǐng)域應(yīng)用
    發(fā)表于 11-27 02:01 ?54次下載
    <b class='flag-5'>Modbus</b><b class='flag-5'>通訊</b><b class='flag-5'>協(xié)議</b>的詳細(xì)資料講解

    線性科技是怎么回事?

    線性科技是怎么回事?
    發(fā)表于 04-21 14:47 ?3次下載
    線性科技是<b class='flag-5'>怎么回事</b>?

    所有這些干擾是怎么回事?

    所有這些干擾是怎么回事?
    發(fā)表于 11-04 09:52 ?2次下載
    所有這些干擾是<b class='flag-5'>怎么回事</b>?

    Modbus通訊協(xié)議怎么回事?(上)

    ModBus網(wǎng)絡(luò)是一個(gè)工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計(jì)算機(jī)通過公用線路或局部專用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件、亦包括軟件。它可應(yīng)用于各種數(shù)據(jù)采集和過程監(jiān)控。
    的頭像 發(fā)表于 02-13 10:53 ?428次閱讀
    <b class='flag-5'>Modbus</b><b class='flag-5'>通訊</b><b class='flag-5'>協(xié)議</b>是<b class='flag-5'>怎么回事</b>?(上)

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

    不少人在采購工業(yè)路由器的過程中都會(huì)看到modbus協(xié)議,那么modbus協(xié)議到底是什么呢?今天就跟大家分享一。Modbus協(xié)議作為當(dāng)今工業(yè)控制領(lǐng)域的通用
    的頭像 發(fā)表于 10-17 14:40 ?1118次閱讀
    <b class='flag-5'>Modbus</b><b class='flag-5'>通訊</b><b class='flag-5'>協(xié)議</b>是什么?

    PLC編程:MODBUS通訊程序的交叉引用怎么用

    他做的MODBUS通訊的程序,原本只需要從通訊中讀來1個(gè)字/位,然而卻發(fā)現(xiàn)交叉引用中提示占用了4個(gè)字節(jié), 即一個(gè)DWORD,問是怎么回事
    發(fā)表于 12-13 09:18 ?848次閱讀
    PLC編程:<b class='flag-5'>MODBUS</b><b class='flag-5'>通訊</b>程序的交叉引用怎么用