ModBus通信規約

ModBus通信規約

ModBus通信規約指的是對MODBUS規約的模式和通信速率的一種定義。

通訊參數和傳輸特性

MODBUS規約模式:RTU模式。

傳輸速率:2400 bps,4800bps,9600bps,19200bps。

串列口通訊數據格式:1 個起始位,8 個數據位, 無校驗位,1個停止位。

通訊介質:推薦採用0.5mm的雙絞線,不帶禁止層。(原因是如果使用禁止雙絞線,但現場接地處理不好反而影響通訊質量)。

應答時間:小於4.5個byte傳輸時間(幀間隔最小時間) + 10ms。

通訊連線方式

RS-485網路的匹配電阻選取:雙絞線網路兩端的匹配電阻選取,以現場通信正常為準,一般地1.2km時取120Ω,600m時取220Ω,300m時取330Ω,如通信誤碼率較大,觀察通信時的波形,匹配電阻做適當改變

通訊連線方式 通訊連線方式

支持的MODBUS功能碼

功能碼02H: 讀取開關量輸入(讀實遙信和虛遙信)。

功能碼03H: 讀取保持暫存器(讀事件記錄等)

功能碼04H: 讀取輸入暫存器(讀遠動遙測)

功能碼05H: 強制單點繼電器輸出(遠方復歸、單步的遙控跳閘、遙控合閘)。

功能碼06H: 向保持暫存器寫單個字(遙控跳閘、遙控合閘的選擇和執行操作)

功能碼10H: 向保持暫存器(記憶體區)寫多個16位的字(通訊對時)。

異常回響報文格式

由於軟體編程錯誤,對協定理解錯誤或通訊干擾等原因,MODBUS通信子站接收到主站的報文後,可以採用異常回響報文給予回答,異常回響報文格式舉例如下:

FC 05H 主站=>子站:遠方復歸

報文 內容含義 備註
1位元組 MODBUS地址 01H 舉例
1位元組 功能碼 05H
1位元組 線圈地址高位元組 01H
1位元組 線圈地址低位元組 07H
1位元組 強制線圈數值高位元組 FFH
1位元組 強制線圈數值低位元組 00H
1位元組 CRC高位元組 3CH
1位元組 CRC低位元組 07H

異常回響報文 子站=>主站

報文 內容含義 備註
1位元組 MODBUS地址 01H 舉例
1位元組 功能碼 85H
1位元組 異常代碼 02H
1位元組 CRC高位元組 C3H
1位元組 CRC低位元組 51H

子站通過校驗,發現主站報文有問題,將回響報文將主站的功能碼最高位(D7)置

1,如例子中的02H,異常回響報文中有固定的一個位元組作為“異常代碼”,表示異常原因。

異常代碼 含義
01 非法功能碼。子站無法處理主站報文中的功能碼。
02 非法數據地址。子站無法處理主站報文中的數據地址。
03 非法數據內容。主站報文中的數據不能滿足子站的要求格式。
04 子站設備錯誤。
05 確認幀。
06 子站忙。

時間格式

本規約中使用到的對時報文的時間格式,事件記錄中的時間格式,參見下面說明。七個八位位組的二進制時間

2 毫秒 2
2 毫秒 2
IV (RES1)0 2 分 2
0(SU) (RES2) 0 0 2 時 2
2 星期 2 2 日 2
(RES3) 0 0 0 0 2 月 2
(RES4) 0 2 年 2

讀全遙信

主站傳送:

從機地址 功能碼 開始地址H 開始地址L 遙信點數H 遙信點數L CRC碼H CRC碼L
01 02 00 00 00 20 79 D2

子站回響

地址 功能碼 位元組數 遙信數值(LSB-MSB) CRC碼H CRC碼L
01 02 04 01 本位元組的LSB對應遙信點號1 02 00 00 本位元組的MSB對應遙信點號32 5B DE

注意:

1)MMP-5000D供有32個遙信(實遙信和虛遙信),因此主站從開始地址0讀0x20個遙信點。

2)本例應答報文中:數值01的D0位為1代表MMP-5000D的“遠方控制”為1;數值02中的D1位為1代表MMP-5000D的跳位信號為1。

3)子站回響中的LSB,MSB指D0位和D7位,通訊點號依次採用升序的方式,比如第一個位元組的D0位為遙信點號1…它的D7位為遙信點號8;第二個節字的D0位就為遙信點號9,它的D7位為遙信點號16,依次類推。

讀全遙測

主站傳送:

從機地址 功能碼 開始地址H 開始地址L 遙測點數H 遙測點數L CRC碼H CRC碼L
01 04 00 00 00 0F B0 0E

子站回響

地址 功能碼 位元組數 設備狀態字 H L 第一個遙測值 H L 第N個遙測值 CRC碼H CRC碼L
01 04 1E 00 01 6A A0 B6 1B
    “設備狀態字”的D0為1,表示請求讀全遙信 MMP-5000D的“頻率”遙測值    

注意:

1)遙測報文第一個測點為“設備狀態字”,不用入庫,第二個開始才是“頻率”,以後依次後推。

2)遠動遙測值的數據格式採用帶品質描述的被測值(MEA)定義

BIT0 = 溢出位(OV)

BIT1 = 差錯位(ER)

BIT2 = 測試位(TEST),該位置1表示本遙測量為綜自功能

BIT15~BIT3 = 被測值(MVAL),範圍-4096 ~4095

3)“設備狀態字”占用兩個位元組,它的低位元組的D0位為1表示有實遙信和虛遙信變位,要求主站使用“讀全遙信”報文來讀取,一旦執行了“讀全遙信”,則“設備狀態字的D0位變為0;“設備狀態字”的D1位為1:表示保護裝置有事件記錄,要求主站使用連續執行“讀單個事件記錄”來讀取事件記錄,子站沒有新的事件記錄時,D1位自動變為0。通訊管理機可以根據需要選擇是否使用“設備狀態字”。

4)如果不需要使用“設備狀態字”,可以將報文中的開始地址設為0x0001,則第一個讀到的遙測值就是“頻率”。

5)遙測值計算方法:

電壓4095對應1.2倍的額定值1.2*100 = 120V電流4095對應1.2倍的額定值1.2*5 = 6A功率4095對應1.2倍的額定值(1.2*57.77*1.2*5)*3 = 1248W頻率4095對應1.2倍的額定值1.2*50 = 60Hz功率因素4095對應1倍的額定值1.000本例中:6AA0為第一個遙測值(頻率),它被放大8倍,滿量程值為4095,對應60Hz(50Hz的1.2倍)。

因此頻率如下計算:0x6AA0/8/4095*60.0Hz = 49.993Hz

例:========MMP-5000D讀全遙測========

TX:01 04 00 00 00 0F B0 0E

RX:01 04 1E 00 01 6A A0 00 00 00 00 00 00 36 C0 40 58 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 C0 B6 1B

讀電度值

主站傳送:

從機地址 功能碼 電度對象起始地址H 電度對象起始地址L 電度對象數目H 電度對象數目L CRC碼H CRC碼L
01 03 00 00 00 01 85 B2

子站回響:

地址 功能碼 位元組數 正向有功電度 LSB MSB 反向有功電度 LSB MSB 正向無功電度 LSB MSB 反向無功電度 LSB MSB CRC碼H CRC碼L
01 03 10 E8 03 00 00 B6 07 00 00 B8 0B 00 00 A0 0F 00 00 B6 1B
    正向有功電度值為: 0x000003E8(1000W/1kW) 反向有功電度 0x000007D0(2000W/2kW) 正向無功電度 0x00000BB8(3000Var/3kVar) 反向無功電度 0x00000FA0(4000Var/4kvar)   

注意:

每個電度值由4個位元組組成一個32位字,它的單位是W(瓦特)或Var(乏)報文中先收到的是電度的低位位元組,後收到的是高位位元組。例:========MMP-5000D讀電度值========

TX:01 03 02 00 00 01 85 B2

RX:01 03 10 E8 03 00 00 D0 07 00 00 B8 0B 00 00 A0 0F 00 00 93 CD

廣播對時

主站傳送:

從機地址 功能碼 開始地址H 開始地址L 暫存器數H 暫存器數L 位元組總數 毫秒L 毫秒H
00 10 04 80 00 04 08 98 B7
分鐘 小時 月份 年份 保留 CRC碼H CRC碼L
16 12 17 01 07 00 87 78

說明:

1.對時時間為07年1月23日18時22分47秒000毫秒

2.廣播對時的從機地址設為00

廣播信號復歸

方式一:採用功能碼05H向單個線圈264寫ON信號(0xFF00),產生遠方信號復歸功能。

主站傳送:

從機地址 功能碼 線圈地址H 線圈地址L 強制線圈數值H 強制線圈數值L CRC碼H CRC碼L
00 05 01 07 FF 00 3D D6

方式二:採用功能碼06H向單個保持暫存器0x0000寫數值0x0000,產生遠方復歸功能。

主站傳送:

從機地址 功能碼 暫存器地址H 暫存器地址L 設定數值H 設定數值L CRC碼H CRC碼L
00 06 00 00 00 00 89 CA

說明:

1)如果需要點對點復歸,只要將從機地址從廣播地址00改為相應設備地址即可。

2)兩種方式通訊管理機可以任意選擇。

遙控跳閘的選擇命令

採用功能碼06H向單個保持暫存器0x0101寫數值0xFFFF,產生遙控跳閘的選擇功能。

主站傳送:

從機地址 功能碼 暫存器地址H 暫存器地址L 暫存器數值H 暫存器數據L CRC碼H CRC碼L
01 06 01 01 FF FF D8 46

子站回響:

子站地址 功能碼 暫存器地址H 暫存器地址L 暫存器數值H 暫存器數據L CRC碼H CRC碼L
01 06 01 01 FF FF D8 46

遙控跳閘的執行命令

採用功能碼06H向單個保持暫存器0x0011寫數值0xFFFF,產生遙控跳閘的執行。

主站傳送:

從機地址 功能碼 暫存器地址H 暫存器地址L 暫存器數值H 暫存器數據L CRC碼H CRC碼L
01 06 00 11 FF FF D8 7F

子站回響:

子站地址 功能碼 暫存器地址H 暫存器地址L 暫存器數值H 暫存器數據L CRC碼H CRC碼L
01 06 00 11 FF FF D8 7F

遙控合閘的選擇命令

採用功能碼06H向單個保持暫存器0x0100寫數值0xFFFF,產生遙控合閘的選擇功能。

主站傳送:

從機地址 功能碼 暫存器地址H 暫存器地址L 暫存器數值H 暫存器數據L CRC碼H CRC碼L
01 06 01 00 FF FF 89 86

子站回響:

子站地址 功能碼 暫存器地址H 暫存器地址L 暫存器數值H 暫存器數據L CRC碼H CRC碼L
01 06 01 00 FF FF 89 86

遙控合閘的執行命令

採用功能碼06H向單個保持暫存器0x0010寫數值0xFFFF,產生遙控合閘的執行。

主站傳送:

從機地址 功能碼 暫存器地址H 暫存器地址L 暫存器數值H 暫存器數值L CRC碼H CRC碼L
01 06 00 10 FF FF 89 BF

子站回響:

子站地址 功能碼 暫存器地址H 暫存器地址L 暫存器數值H 暫存器數據L CRC碼H CRC碼L
01 06 00 10 FF FF 89 BF

單報文直接遙控跳閘

採用功能碼05H向線圈0x0001寫數值0xFF00,產生單報文直接遙控跳閘。慎用本命令!

主站傳送:

從機地址 功能碼 線圈地址H 線圈地址L 強制線圈數值H 強制線圈數值L CRC碼H CRC碼L
01 05 00 01 FF 00 DD FA

子站回響:

從機地址 功能碼 線圈地址H 線圈地址L 強制線圈數值H 強制線圈數值L CRC碼H CRC碼L
01 05 00 01 FF 00 DD FA

單報文直接遙控合閘

採用功能碼05H向線圈0x0000寫數值0xFF00,產生單報文直接遙控合閘。慎用本命令!

主站傳送:

從機地址 功能碼 線圈地址H 線圈地址L 強制線圈數值H 強制線圈數值L CRC碼H CRC碼L
01 05 00 00 FF 00 8C 3A

子站回響:

從機地址 功能碼 線圈地址H 線圈地址L 強制線圈數值H 強制線圈數值L CRC碼H CRC碼L
01 05 00 00 FF 00 8C 3A

讀單個事件記錄

採用功能碼03H向保持暫存器地址0x0001,讀一個字,產生讀一個事件記錄的作用。

主站傳送:

從機地址 功能碼 事件記錄地址H 事件記錄地址L 事件記錄個數H 事件記錄個數L CRC碼H CRC碼L
01 03 00 01 00 01 D5 CA

子站回響:

從機地址 功能碼 位元組數 事件條目數H 事件條目數L 事件代碼H (事件組號) 事件代碼L (事件代碼) 動作值 02:合; 01:分
01 03 0C 00 01 04 09 02
毫秒L 毫秒H 分鐘 小時 月份 年份 CRC碼H CRC碼L
A5 4D 19 12 17 01 07 2F EB

相關詞條

相關搜尋

熱門詞條

聯絡我們