[教學] modbus address question

mostdbus address

IMG_20150523_004038.JPG
2015-5-23 00:43


有冇人知,在modbus 入面, device address 和 modbus address,其实係指乜? device address 唔係8bit 咩?

我睇唔明依段。

Within a Modbus device, the holding registers, inputs and outputs are assigned a number between 1 and 10000. One would expect, that the same addresses are used in the Modbus messages to read or set values. Unfortunately this is not the case. In the Modbus messages addresses are used with a value between 0 and 9999. If you want to read the value of output (coil) 18 for example, you have to specify the value 17 in the Modbus query message. More confusing is even, that for input and holding registers an offset must be substracted from the device address to get the proper address to put in the Modbus message structure. This leads to common mistakes and should be taken care of when designing applications with Modbus. The following table shows the address ranges for coils, inputs and holding registers and the way the address in the Modbus message is calculated given the actual address of the item in the slave device.

TOP

是什麼東西的modbus?

TOP

回覆 3# mbass

在这里看到的。
[url]http://www.lammertbies.nl/comm/info/modbus.html [/url]

TOP

本帖最後由 Charcoal99 於 2015-5-24 17:20 編輯

1. device 及 address 這個詞有多層義意, 內文中每當提到Modbus 總線上所掛上的device address 時,
前面都會加上 slave 這一字, 以表明它所指的是Modbus 總線上Master-Slave 主從關係架構內的
slave device address, 這個 address 在Modbus通訊框內只有8-bit, 0 是 Master, 1-247 是slave device.

2. 內文所指的其他Address, 請看Function 01 數據框的例子
Function01.jpg
2015-5-24 13:40

byte 1 為 8-bit 的 slave device address, byte 3,4 為 16-bit 的 modbus function block address

3. 要解釋這 "Within a Modbus device" 內所指的不同的Address, 要先看Modbus Specification 內的
Modbus Addressing Model.

每一個Modbus Device, 都包含有一至多個通訊數據項, 稱為Modbus Node. 在每一個標準認可的
Modbus Device, 都要在它的規格書中標示它的地址映射圖 Modbus address map
(一般是以Register Number 或Bit Number 形式出現),
亦即是上圖最左方的灰色的位址空間, 它一般呈分段連續架構 (Blocked continuous)
每個Node address 都是唯一的, 由於實際使用者是非編程人員, 所以地址空間為自然數(非零正整數),
即以1為起點。而每個區段則以功能劃分, 每個區段又有它獨立的地址空間, 即 Discrete Input 的 1到7,
並不等同 Coils 的 1到7.
註 : (下圖引自非官方extended版本) 標準版本上限數設定為9999


而在Modbus 的通訊框中, PDU  data 內所使用的Address 是從 Modbus data model 中提取出來的,
由於這是編程人員的範疇, 所以地址便由 0 開始。

Modbus 編程人員及 Building Network 編程員要熟知這兩種 Address 的分別。

你所看的表中, 第一列Device address 便是 Device application 及規格裡中所表示的Device node address,
而第二列的 Modbus address 便是Modbus data model 中的功能區段地址, 一般是Node Address 減去
功能區段起始地址, 如果Holding register 的區段起始地址是40001, 它便是 node address - 40001  了。

Block starting address 是Vendor Specific 的, 每個製造商都可有不同的定義。

TOP