日韩不卡精品久久_每日更新亚洲超清精品_黄色视频观看一区_色九月亚洲综合网_欧美中文国产字幕_欧美亚洲国产成人影院_漂亮被中出中文字幕色_菠萝蜜视频网在线www_污视频三级片在线观看_日韩欧美国产成人精品高清综合网

首頁(yè) - 關(guān)于我們 - 新聞活動(dòng) - 深入理解Modbus協(xié)議的數(shù)據(jù)模型和地址模型

深入理解Modbus協(xié)議的數(shù)據(jù)模型和地址模型

2020-9-10新聞

image.png

讀取溫濕度傳感器的寄存器地址用的是40001,這究竟是代表什么意思呢?今天這篇文章,我們來(lái)談?wù)凪odbus協(xié)議的數(shù)據(jù)模型和地址模型,這樣大家就能理解這個(gè)問(wèn)題。

1、Modbus協(xié)議的數(shù)據(jù)模型

數(shù)據(jù)模型是對(duì)可訪問(wèn)數(shù)據(jù)的一種抽象,Modbus協(xié)議的數(shù)據(jù)模型定義了四種可訪問(wèn)的數(shù)據(jù),分別是:

  • 離散量輸入(Discrete Input);

  • 線圈(Coils);

  • 輸入寄存器(Input registers);

  • 保持寄存器(Holding registers);

其中,離散量輸入和線圈只支持以位(bit)的方式進(jìn)行訪問(wèn),輸入寄存器和保持寄存器只支持以字(WORD)的方式進(jìn)行訪問(wèn);離散量輸入和輸入寄存器只支持以只讀的方式進(jìn)行訪問(wèn),而線圈和保持寄存器既可以讀也可以寫(xiě);

數(shù)據(jù)模型中成員的特點(diǎn)如下面的表格所示:



既然數(shù)據(jù)模型是一種抽象,在實(shí)際使用時(shí)必須將其映射到真實(shí)的物理存儲(chǔ)區(qū)才能被訪問(wèn)。

Modbus協(xié)議允許設(shè)備將四種數(shù)據(jù)分別映射到不同的存儲(chǔ)區(qū)塊中,各個(gè)區(qū)塊之間相互獨(dú)立,使用不同的功能碼可讀取到不同的數(shù)值,如下圖所示:


圖1:Modbus數(shù)據(jù)模型映射到不同的存儲(chǔ)區(qū)塊


Modbus協(xié)議也允許設(shè)備將四種數(shù)據(jù)映射到同一存儲(chǔ)區(qū)塊中,這樣通過(guò)不同的功能碼讀取數(shù)據(jù)可能會(huì)得到相同的數(shù)據(jù)(比如:輸入寄存器和保持寄存器為同一物理區(qū)塊),如下圖所示:


圖2:Modbus數(shù)據(jù)模型映射到同一區(qū)塊


數(shù)據(jù)模型中的每一種數(shù)據(jù)都最多允許有65536個(gè)元素(編號(hào)1~65536),元素的地址編號(hào)從0開(kāi)始,因此地址的范圍為:0~65535;

需要說(shuō)明的是:65536只是協(xié)議允許的最大元素范圍,但并不要求全部實(shí)現(xiàn)。Modbus協(xié)議允許設(shè)備根據(jù)自己的實(shí)際情況實(shí)現(xiàn)部分元素,甚至不要求實(shí)現(xiàn)模型中全部四種數(shù)據(jù);

2、Modbus協(xié)議的地址模型

為了簡(jiǎn)化數(shù)據(jù)模型與設(shè)備存儲(chǔ)區(qū)的對(duì)應(yīng)關(guān)系,引入了一種地址模型。該模型通過(guò)編號(hào)的方式對(duì)不同類(lèi)型數(shù)據(jù)進(jìn)行區(qū)分,各數(shù)據(jù)的地址編號(hào)請(qǐng)看下面的表格:



Modbus地址模型的編號(hào)從1開(kāi)始。

由于每一種數(shù)據(jù)都最大支持65536個(gè)元素,因此理論上,

對(duì)于線圈型數(shù)據(jù)來(lái)說(shuō),其地址范圍為:000001~065536;

類(lèi)似的,

離散量輸入,其地址范圍為:100001~165536;

輸入寄存器,其地址范圍為:300001~365536;

保持寄存器,其地址范圍為:400001~465536;

由于65536是比較大的數(shù)值,實(shí)際應(yīng)用一般不需要這么大的存儲(chǔ)區(qū),因此PLC廠家普遍采用的是10000以內(nèi)的地址范圍,即:

線圈地址范圍:00001~09999;

離散量輸入地址范圍:10001~19999;

輸入寄存器地址范圍:30001~39999;

保持寄存器地址范圍:40001~49999;

有了該地址模型,我們就可以從Modbus寄存器的地址判斷要訪問(wèn)的區(qū)塊的類(lèi)型。比如本文開(kāi)頭提到到地址40001就是保持存儲(chǔ)器的第一個(gè)值的地址,而10001就是離散量輸入的第一個(gè)值的地址;要注意的是,保持寄存器和輸入寄存器的每個(gè)值的大小為16bits(字),而線圈和離散量輸入每個(gè)值的大小為1bit(位);

各PLC廠家根據(jù)PLC的實(shí)際情況,將Modbus的地址模型映射到實(shí)際的存儲(chǔ)區(qū)。一般來(lái)說(shuō),線圈對(duì)應(yīng)過(guò)程輸出映像區(qū)(Q);離散量輸入對(duì)應(yīng)過(guò)程輸入映像區(qū)(I);輸入寄存器對(duì)應(yīng)模擬量輸入(AI);保持寄存器對(duì)應(yīng)數(shù)據(jù)塊或V存儲(chǔ)區(qū)或M存儲(chǔ)區(qū)。以西門(mén)子S7-200 SMART為例,其Modbus地址與存儲(chǔ)器地址的對(duì)應(yīng)關(guān)系如下表所示:



Modbus地址模型對(duì)于Modbus-RTU/ASCII和Modbus-TCP協(xié)議都是適用的。