電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 32|回復(fù): 0
收起左側(cè)

Modbus應(yīng)用層

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
匿名  發(fā)表于 7 天前 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
概念:
ADU:應(yīng)用數(shù)據(jù)單元
PDU:協(xié)議數(shù)據(jù)單元
格式:
RS485-ADU最大長度256個(gè)字節(jié)
地址1字節(jié),每個(gè)子節(jié)點(diǎn)必須有唯一的地址 (1 到 247),這樣才能區(qū)別于其它節(jié)點(diǎn)被獨(dú)立的尋址。地址 0 是專門用于表示廣播數(shù)據(jù)的。
校驗(yàn)2字節(jié)
大端模式,高字節(jié)在先
比如0X1234,先發(fā)送0x12,然后發(fā)送0x34
數(shù)據(jù)類型:
modbus有三種PDU
1,請(qǐng)求
2,響應(yīng)
3,異常響應(yīng)
功能碼:
功能碼分為三種
1,公共功能碼
機(jī)構(gòu)認(rèn)證的,所有設(shè)備都遵守的
2,用戶定義功能碼
自己定義的
3,保留功能碼
保留著,以后擴(kuò)展公共功能碼。
異常功能碼=請(qǐng)求功能碼+0x80(注意區(qū)分異常功能碼和異常碼兩個(gè)名詞)
·  低編號(hào)(如 0x01 到 0x10):通常用于基礎(chǔ)的、通用的功能碼,例如讀寫線圈、寄存器等操作。
·  高編號(hào)(如 0x40 及以上):這些編號(hào)被設(shè)計(jì)為更多的擴(kuò)展功能,包括用戶定義功能碼。

分類

功能碼
備注


bit訪問
離散量輸入

02
離散量=單個(gè)ON或者OFF的點(diǎn)
輸入就是輸入的意思,比如從機(jī)的按鍵

線圈

01
線圈=單個(gè)ON或者OFF的輸出
比如從機(jī)控制繼電器
寫單個(gè)
05

寫多個(gè)
15




16bit訪問
輸入寄存器

04
輸入寄存器=1個(gè)16bit的數(shù)值
主從機(jī)只能讀,比如從機(jī)采集的溫度值


輸出寄存器
讀多個(gè)
03
輸出寄存器=1個(gè)16bit的數(shù)值
主機(jī)可以寫,比如控制電機(jī)速度值
寫單個(gè)
06

寫多個(gè)
16

讀寫多個(gè)
23

屏蔽寫
22
該功能碼用于通過利用 AND 屏蔽、OR 屏蔽以及寄存器內(nèi)容的組合來修改特定保持寄存器的內(nèi)容。使用這個(gè)功能設(shè)置或清除寄存器中的單個(gè)比特。
文件訪問
讀文件
20

寫文件
21

封裝接口
讀設(shè)備識(shí)別碼
43

疑問1:有了寫多個(gè)線圈功能碼15,為什么還要寫單個(gè)線圈的功能碼05?
答:簡單寫單個(gè)線圈是使用05,比15功能碼簡潔
主站可能需要頻繁地單獨(dú)控制線圈時(shí)使用05效率高
疑問2:有了讀多個(gè)輸出寄存器03和寫多個(gè)輸出寄存器16,為什么還要讀寫多個(gè)寄存器23?
答:23可以一次完成讀和寫,這在需要讀和寫的場合中效率更高
具體應(yīng)用:
讀線圈





讀保持寄存器







再多的內(nèi)容就不再舉例了,詳細(xì)內(nèi)容公眾號(hào)后臺(tái)回復(fù)“modbus協(xié)議”獲取協(xié)議規(guī)范文件。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號(hào)?立即注冊

x
回復(fù)

使用道具

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)閉

站長推薦上一條 /1 下一條


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表