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

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

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

Modbus應(yīng)用層

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
匿名  發(fā)表于 2024-10-15 18:42:00 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
概念:
ADU:應(yīng)用數(shù)據(jù)單元
PDU:協(xié)議數(shù)據(jù)單元
格式:
RS485-ADU最大長度256個字節(jié)
地址1字節(jié),每個子節(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,請求
2,響應(yīng)
3,異常響應(yīng)
功能碼:
功能碼分為三種
1,公共功能碼
機(jī)構(gòu)認(rèn)證的,所有設(shè)備都遵守的
2,用戶定義功能碼
自己定義的
3,保留功能碼
保留著,以后擴(kuò)展公共功能碼。
異常功能碼=請求功能碼+0x80(注意區(qū)分異常功能碼和異常碼兩個名詞)
·  低編號(如 0x01 到 0x10):通常用于基礎(chǔ)的、通用的功能碼,例如讀寫線圈、寄存器等操作。
·  高編號(如 0x40 及以上):這些編號被設(shè)計(jì)為更多的擴(kuò)展功能,包括用戶定義功能碼。

分類

功能碼
備注


bit訪問
離散量輸入

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

線圈

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

寫多個
15




16bit訪問
輸入寄存器

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


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

寫多個
16

讀寫多個
23

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

寫文件
21

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

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





讀保持寄存器







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

本帖子中包含更多資源

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

x
回復(fù)

使用道具

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

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

本版積分規(guī)則


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