找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2176|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

MODBUS功能碼01與05的疑問

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:497468 發(fā)表于 2023-9-11 21:36 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
   最近搞了個(gè)MODBUS的控制器控制輸出繼電器,閱讀了01和05的功能碼后,有點(diǎn)搞不明白了, 01和05都是位控制的,為何05的地址是一個(gè)字節(jié)呢?
如用05強(qiáng)制一個(gè)地址,發(fā)送指令為:01 05 00 01 00 00 9C 0A  從機(jī)01的01所對(duì)應(yīng)的寄存器置0, 05發(fā)送置1為FF00 置0為0000,這個(gè)地址默認(rèn)有8個(gè)位,如果按位來算,那是用哪個(gè)位?還是說05指令對(duì)應(yīng)的就是一個(gè)地址代表一個(gè)線圈,和01的位不一樣?求解!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:497468 發(fā)表于 2023-9-12 09:06 | 只看該作者
昨晚又在網(wǎng)上查了資料,不知道我的理解對(duì)不, 正常01的地址包括16個(gè)位,如果用05來打開和關(guān)閉的話,05就是按位來算的,只是他以數(shù)量來計(jì),并不以寄存器地址來計(jì)算。 例 :我要打開第100個(gè)繼電器,那我的轉(zhuǎn)換成實(shí)際的寄存器值 ,100/16=6 余4 實(shí)際上要打開的地址在05寄存器的第4位?(應(yīng)該從00寄存器開始吧,) 如果 是這樣的話,那01和05控制的地方就相同了,不知道理解對(duì)不對(duì),請(qǐng)高手指點(diǎn)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:1010435 發(fā)表于 2023-9-12 09:52 | 只看該作者
01和05功能碼的前提不就是8位地址嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:1065084 發(fā)表于 2023-9-12 10:10 | 只看該作者
01不是讀線圈05不是寫線圈嗎?你就按照格式來就好了,不用管內(nèi)部機(jī)理的,內(nèi)部有數(shù)據(jù)轉(zhuǎn)換的。線圈也要占用一個(gè)地址的,難道16個(gè)線圈用一個(gè)地址嗎?
回復(fù)

使用道具 舉報(bào)

5#
ID:497468 發(fā)表于 2023-9-12 10:27 | 只看該作者
還我還是理解錯(cuò)了,以為是16位, 按現(xiàn)在的說的8位來算,假如我要打開第32個(gè)繼電器,是否是發(fā)送01 05 00 20 00 00 CC 00    實(shí)際的寄存器地址為 03寄存器的第8位呢? 相當(dāng)于說寄存器地址是從00的第0位開始,一直累加,這樣理解對(duì)嗎?
回復(fù)

使用道具 舉報(bào)

6#
ID:497468 發(fā)表于 2023-9-12 10:45 | 只看該作者
就這是我迷茫的地方,因?yàn)閰f(xié)議要自己寫,所以一開始先寫01的,把自己的繞進(jìn)去了,按樓上大俠 的意思,一個(gè)輸出繼電器就占用一個(gè)地址,比如說我用u8 out[100] 這個(gè)數(shù)組來存放繼電器狀態(tài),每一個(gè)地址對(duì)應(yīng)一個(gè)繼電器,我用05的時(shí)候就直接對(duì)相應(yīng)的地址操作就行了,但如果用01來讀的時(shí)候,我要把數(shù)組中8個(gè)位的狀態(tài)合并成一個(gè)字節(jié)再發(fā)出來,是這樣嗎?
回復(fù)

使用道具 舉報(bào)

7#
ID:94031 發(fā)表于 2023-9-12 11:13 | 只看該作者
這和你硬件連接有關(guān),如果你一個(gè)地址接了8個(gè)開關(guān)量你就讀寫8位,你接了16個(gè)開關(guān)量你就讀寫16位.
回復(fù)

使用道具 舉報(bào)

8#
ID:497468 發(fā)表于 2023-9-12 22:52 | 只看該作者
感謝各位的回貼,現(xiàn)在按照05執(zhí)行一個(gè)地址,01讀8個(gè)位,經(jīng)過測(cè)試,效果可以。再次感謝!
回復(fù)

使用道具 舉報(bào)

9#
ID:420836 發(fā)表于 2023-9-13 10:20 | 只看該作者
Modbus功能碼1可以讀取多個(gè)線圈的值。 Modbus功能碼5寫入單個(gè)線圈值,值0x0000表示OFF,值0xFF00表示ON
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表