南樺 電子報 177 出刊日期 | 2010.11.01

簡單介紹modbus通訊協定:

ModBus簡介:
Modbus 是一種串列通信協議,由 Modicon 公司於 1979 年,為使用可程式邏輯控制器 (PLC) 而發表的。
Modbus 是工業領域通信協議標準,為現在工業電子設備之間相當常用的連接方式。
Modbus 比其他通信協議使用的更廣泛的主要原因有:
1. 可公開發表且無版稅要求
2. 容易的工業網路部署
3. 對供應商來說,修改移動原生的位或位元組沒有很多限制
Modbus允許多個設備連接在同一個網路上進行通信,舉個例子,一個由測量溫度和濕度的裝置,
並且將結果發送給控制端。在數據採集與監視控制系統 (SCADA) 中,Modbus 通常用來連接監控電腦和 remote terminal unit (RTU)。

通信和設備:
Modbus 協議是一個 master/slave (主/從) 架構的協議。
有一個節點是 master (主站),其他使用 Modbus協議參與通信的節點是 slave (副站) 。
每一個 slave (副站) 設備都有一個唯一的地址。
在串列和 ModBus 網路中,只有被指定為主節點的節點可以啟動一個命令
(在乙太網上,任何一個設備都能發送一個Modbus命令,但是通常也只有一個主節點設備啟動指令)。
一個迴路只可以有一個主站,其他副站最多可以有 147(F7H) 個。
一個 ModBus 命令包含了打算執行的設備的 Modbus 地址。
所有設備都會收到命令,但只有指定位置的設備會執行及回應指令
(地址 0 例外,指定地址 0 的指令是廣播指令,所有收到指令的設備都會執行,不過不回應指令)。
所有的 Modbus 命令包含了檢查碼,以確定到達的命令沒有被破壞。
基本的 ModBus 命令能指令一個 RTU 改變它的暫存器的某個值,控制或者讀取一個 I/O 埠,以及指揮設備回送一個或者多個其暫存器中的數據。

ModBus傳送與接收的通訊碼:
要了解通訊架構,首先要了解所謂傳送與接收架構
FUN(H)
送碼
回傳碼
01
Field Name
(Hex)
Slave Address
11
Function
01
Starting Address Hi
00
Starting Address Lo
13
No. of Points Hi
00
No. of Points Lo
25
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
01
Byte Count
05
Data (Coils 27–20)
CD
Data (Coils 35–28)
6B
Data (Coils 43–36)
B2
Data (Coils 51–44)
0E
Data (Coils 56–52)
1B
Error Check (LRC or CRC)
02
Field Name
(Hex)
Slave Address
11
Function
02
Starting Address Hi
00
Starting Address Lo
C4
No. of Points Hi
00
No. of Points Lo
16
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
02
Byte Count
03
Data (Inputs 10204–10197)
AC
Data (Inputs 10212–10205)
DB
Data (Inputs 10218–10213)
35
Error Check (LRC or CRC)
03
Field Name
(Hex)
Slave Address
11
Function
03
Starting Address Hi
00
Starting Address Lo
6B
No. of Points Hi
00
No. of Points Lo
03
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
03
Byte Count
06
Data Hi (Register 40108)
02
Data Lo (Register 40108)
2B
Data Hi (Register 40109)
00
Data Lo (Register 40109)
00
Data Hi (Register 40110)
00
Data Lo (Register 40110)
64
Error Check (LRC or CRC)
04
Field Name
(Hex)
Slave Address
11
Function
04
Starting Address Hi
00
Starting Address Lo
08
No. of Points Hi
00
No. of Points Lo
01
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
04
Byte Count
02
Data Hi (Register 30009)
00
Data Lo (Register 30009)
0A
Error Check (LRC or CRC)
05
Field Name
(Hex)
Slave Address
11
Function
05
Starting Address Hi
00
Starting Address Lo
AC
Force Data Hi
FF
Force Data Lo
00
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
05
Coil Address Hi
00
Coil Address Lo
AC
Force Data Hi
FF
Force Data Lo
00
Error Check (LRC or CRC)
06
Field Name
(Hex)
Slave Address
11
Function
06
Register Address Hi
00
Register Address Lo
01
Preset Data Hi
00
Preset Data Lo
03
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
06
Register Address Hi
00
Register Address Lo
01
Preset Data Hi
00
Preset Data Lo
03
Error Check (LRC or CRC)
07
Field Name
(Hex)
Slave Address
11
Function
07
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
07
Coil Data
6D
Error Check (LRC or CRC)
0B
Field Name
(Hex)
Slave Address
11
Function
0B
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
0B
Status Hi
FF
Status Lo
FF
Event Count Hi
01
Event Count Lo
08
Error Check (LRC or CRC)
0C
Field Name
(Hex)
Slave Address
11
Function
0C
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
0C
Byte Count
08
Status Hi
00
Status Lo
00
Event Count Hi
01
Event Count Lo
08
Message Count Hi
01
Message Count Lo
21
Event 0
20
Event 1
00
Error Check (LRC or CRC)
0F
Field Name
(Hex)
Slave Address
11
Function
0F
Coil Address Hi
00
Coil Address Lo
13
Quantity of Coils Hi
00
Quantity of Coils Lo
0A
Byte Count
02
Force Data Hi (Coils 27-20)
CD
Force Data Lo (Coils 29-28)
01
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
0F
Coil Address Hi
00
Coil Address Lo
13
Quantity of Coils Hi
00
Quantity of Coils Lo
0A
Error Check (LRC or CRC)
10
Field Name
(Hex)
Slave Address
11
Function
10
Starting Address Hi
00
Starting Address Lo
01
No. of Registers Hi
00
No. of Registers Lo
02
Byte Count
04
Data Hi
00
Data Lo
0A
Data Hi
01
Data Lo
02
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
10
Starting Address Hi
00
Starting Address Lo
01
No. of Registers Hi
00
No. of Registers Lo
02
Error Check (LRC or CRC)
11
Field Name
(Hex)
Slave Address
11
Function
11
Error Check (LRC or CRC)
Field Name (Contents)
Slave Address Echo of Slave Address
Function 11
Byte Count Device Specific
Slave ID Device Specific
Run Indicator Status 00 = OFF, FF = ON
Additional Data Device Specific
...  
Error Check (LRC or CRC)
14
Field Name
(Hex)
Slave Address
11
Function
14
Byte Count
0E
SlavSub–Req 1, Reference Type
06
Sub–Req 1, File Number Hi
00
Sub–Req 1, File Number Lo
04
Sub–Req 1, Starting Addr Hi
00
Sub–Req 1, Starting Addr Lo
01
Sub–Req 1, Register Count Hi
00
Sub–Req 1, Register Count Lo
02
Sub–Req 2, Reference Type
06
Sub–Req 2, File Number Hi
00
Sub–Req 2, File Number Lo
03
Sub–Req 2, Starting Addr Hi
00
Sub–Req 2, Starting Addr Lo
09
Sub–Req 2, Register Count Hi
00
Sub–Req 2, Register Count Lo
02
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
14
Byte Count
0C
Sub–Res 1, Byte Count
05
Sub–Res 1, Reference Type
06
Sub–Res 1, Register Data Hi
0D
Sub–Res 1, Register Data Lo
FE
Sub–Res 1, Register Data Hi
00
Sub–Res 1, Register Data Lo
20
Sub–Res 2, Byte Count
05
Sub–Res 2, Reference Type
06
Sub–Res 2, Register Data Hi
33
Sub–Res 2, Register Data Lo
CD
Sub–Res 2, Register Data Hi
00
Sub–Res 2, Register Data Lo
40
Error Check (LRC or CRC)
15
Field Name
(Hex)
Slave Address
11
Function
15
Byte Count
0D
SlavSub–Req 1, Reference Type
06
Sub–Req 1, File Number Hi
00
Sub–Req 1, File Number Lo
04
Sub–Req 1, Starting Addr Hi
00
Sub–Req 1, Starting Addr Lo
07
Sub–Req 1, Register Count Hi
00
Sub–Req 1, Register Count Lo
03
Sub–Req 1, Register Data Hi
06
Sub–Req 1, Register Data Lo
AF
Sub–Req 1, Register Data Hi
04
Sub–Req 1, Register Data Lo
BE
Sub–Req 1, Register Data Hi
10
Sub–Req 1, Register Data Lo
0D
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
15
Byte Count
0D
SlavSub–Req 1, Reference Type
06
Sub–Req 1, File Number Hi
00
Sub–Req 1, File Number Lo
04
Sub–Req 1, Starting Addr Hi
00
Sub–Req 1, Starting Addr Lo
07
Sub–Req 1, Register Count Hi
00
Sub–Req 1, Register Count Lo
03
Sub–Req 1, Register Data Hi
06
Sub–Req 1, Register Data Lo
AF
Sub–Req 1, Register Data Hi
04
Sub–Req 1, Register Data Lo
BE
Sub–Req 1, Register Data Hi
10
Sub–Req 1, Register Data Lo
0D
Error Check (LRC or CRC)
16
Field Name
(Hex)
Slave Address
11
Function
16
Reference Address Hi
00
Reference Address Lo
04
And_Mask Hi
00
And_Mask Lo
F2
Or_Mask Hi
00
Or_Mask Lo
25
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
16
Reference Address Hi
00
Reference Address Lo
04
And_Mask Hi
00
And_Mask Lo
F2
Or_Mask Hi
00
Or_Mask Lo
25
Error Check (LRC or CRC)
17
Field Name
(Hex)
Slave Address
11
Function
17
Read Reference Address Hi
00
Read Reference Address Lo
04
Quantity to Read Hi
00
Quantity to Read Lo
06
Write Reference Address Hi
00
Write Reference Address Lo
0F
Quantity to Write Hi
00
SQuantity to Write Lo
03
Byte Count
06
Write Data 1Hi
00
Write Data 1 Lo
FF
Write Data 2 Hi
00
Write Data 2 Lo
FF
Write Data 3Lo
00
Write Data 3 Hi
FF
Error Check (LRC or CRC)
Field Name
(Hex)
Slave Address
11
Function
17
Byte Count
0C
Read Data 1 Hi
00
Read Data 1 Lo
FE
Read Data 2 Hi
0A
Read Data 2 Lo
CD
Read Data 3 Hi
00
Read Data 3 Lo
01
Read Data 4 Hi
00
Read Data 4 Lo
03
Read Data 5 Hi
00
Read Data 5 Lo
0D
Read Data 6 Hi
00
Read Data 6 Lo
FF
Error Check (LRC or CRC)
18
Field Name
(Hex)
Slave Address
11
Function
18
FIFO Pointer Address Hi
04
FIFO Pointer Address Lo
DE
Error Check (LRC or CRC)
Field Name (Hex)
Slave Address 11
Function 18
Byte Count Hi 00
Byte Count Lo 08
FIFO Count Hi 00
FIFO Count Lo 03
FIFO Data Reg 1 Hi 01
FIFO Data Reg 1 Lo B8
FIFO Data Reg 2 Hi 12
FIFO Data Reg 2 Lo 84
FIFO Data Reg 3 Hi 13
FIFO Data Reg 3 Lo 22
Error Check (LRC or CRC)

結論:
1. 一個迴路中,只有一個 Master,其他為 Slave。
2. 所有的Slave站號,不可以重複。
3. 所有的通訊格式要一樣,例如:9600 bps、8、none、1。
4. ModBus 有分 ModBus ASCII、ModBus RTU、ModBus TCP;在此介紹 ModBus RTU。
5. 所有傳送、接收的資料均為 16 進制。
6. 若要多站互連,請使用 RS-485 架構;若為RS-232架構,只可以一對一。
7. RS-485 架構互連時,若距離太遠 (大於800公尺),須加 RS-485 Repeater,且頭尾需加終端電阻。

詳細的 ModBus 資料請參考 ModBus 手冊下載

RS-485 Repeater 資料下載


  • 欲訂閱或取消南樺電子報 http://cht.nahua.com.tw/epaper/
  • 關於電子報發送有任何疑問,請連絡 epaper@nahua.com.tw
  • 電子報版權所有,轉載必究,欲轉載請聯絡 mail@nahua.com.tw