本帖最後由 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 數據框的例子
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 的, 每個製造商都可有不同的定義。 |