第六章 Modbus 通訊方法及格式 通訊接頭 J11 腳位定義 : A(+) B(-) GND 參數定義 : 參數 P112 : 通訊位址 (1~254) 當系統使用 RS-485 串聯通訊介面控制或監控時, 每一台驅動器必須設定其通訊位址且每一個連結 網中每個位址均為 唯一 不可重覆 0 為廣播 參數 P113 : 傳輸速度 ( 0~3 ) 此參數用來設定電腦與變頻器之間傳輸速率 ( Baud rate ) 0 : 4800 位元 / 秒 1 : 9600 位元 / 秒 2 : 19200 位元 / 秒 3 : 38400 位元 / 秒 參數 P114: 傳輸格式 ASCII 模式 : 每個 8-bit 資料由兩個 ASCII 字元所組成 例如 : 一個 1-byte 資料 64H( 十六進位表示法 ), 以 ASCII 64 表示, 包含了 6 (36H) 及 4 (34H) 字元符號 0 1 2 3 4 5 6 7 ASCII 碼 30H 31H 32H 33H 34H 35H 36H 37H 字元符號 8 9 A B C D E F ASCII 碼 38H 39H 41H 42H 43H 44H 45H 46H 53
RTU 模式 : 每個 8-bit 資料由兩個 4-bit 之十六進位字元所組成 例如 :64H 1. 字元格式 0: 7,N,2 for ASCII:10 bits (1 start bit +7 data bits +2 stop bit) STOP STOP 0 1 2 3 4 5 6 1: 7,E,1 for ASCII:10 bits (1 start bit +7 data bits +1 Even bit+1 stop bit) EVEN STOP 0 1 2 3 4 5 6 PARITY 2: 7,O,1 for ASCII:10 bits (1 start bit +7 data bits+1 Odd bit +1 stop bit) ODD STOP 0 1 2 3 4 5 6 PARITY 3: 8,N,2 RTU :11 bits(1 start bit +8 data bits +2 stop bit) 0 1 2 3 4 5 6 7 STOP STOP 4: 8,E,1 RTU:11 bits (1 start bit +8 data bits +1 Even bit+1 stop bit) 0 1 2 3 4 5 6 7 54 EVEN PARITY 5: 8,O,1 RTU:11 bits (1 start bit +8 data bits+1 Odd bit +1 stop bit) 0 1 2 3 4 5 6 7 2 資料結構 ( 資料內容為 16 位元無號數格式 ) ASCII 模式 : STX 啟始字元 : (3AH) ADR 1 通訊位址 : ADR 0 CMD 1 命令碼 : CMD 0 8-bit 位址包含了 2 個 ASCII 碼 8-bit 命令包含了 2 個 ASCII 碼 DATA (n-1) 資料內容 :. n 8-bit 資料包含了 2n 個 ASCII 碼 DATA 0 n<=25, 最多 50 個 ASCII 碼 LRC CHK 1 偵誤值 : LRC CHK 0 8-bit 偵誤值包含了 2 個 ASCII 碼 ODD PARITY STOP STOP
END 1 結束字元 : END 0 EN= CR (0DH), END0= LF(0AH) RTU 模式 : ADR CMD 超過 10 ms 之靜止時段 通訊位址 :8-bit 位址 命令碼 :8-bit 命令 DATA (n-1) 資料內容 :. n 8-bit 資料, n<=25 DATA 0 CRC CHK Low CRC 偵誤值 : CRC CHK High END 16-bit 偵誤值由 2 個 8-bit 字元組成 超過 10 ms 之靜止時段 3 功能碼 (1) 03H: 讀取變頻器設定參數與顯示參數 (2) 06H: 寫入變頻器運轉參數與設定參數 (3) 08H: 通訊回路測試 (1) 03H: 讀取變頻器設定參數 A. PC 呼叫 :. 通訊位址 (0~FEh). 功能碼 (03h). 第 # 個設定參數 (H) (). 第 # 個設定參數 (L) (00~ADh). 資料筆數 (H) (). 資料筆數 (L) (00~0Ch).. B. 變頻器回應 :. 通訊位址 (0~FEh). 功能碼 (03h) 資料 BYTE 數 (00~18h). 設定參數內容 1(H). 設定參數內容 1(L) Dm-3. 設定參數內容 n(h) Dm-2. 設定參數內容 n(l) Dm-1. Dm. m = 5 + 2*n 電腦詢問變頻器 () 異常記錄 (P85~P87) 3 筆設定參數 電腦詢問 : 85 = 55h 03h 55h 03h 55
假設 : 03h P85=0= P86=2=02h P87=12=0Ch 02h D9 0Ch 0 1 (2) 03H: 讀取變頻器顯示參數 A. PC 呼叫 :. 通訊位址 (0~FEh). 功能碼 (03h). 第 # 個顯示參數 (H) (21h). 第 # 個顯示參數 (L) (00~10h). 資料筆數 (H) (). 資料筆數 (L) (1~n)h.. B. 變頻器回應 : n 12 m = 5 + 2*n 21: 錯誤碼 ( 與 P93 相同 ); 21: 運轉狀態 ; 2102h: 設定頻率 (0.01Hz); 2103h: 輸出頻率 (0.01Hz); 2104h: 輸出電流 (0.1A); 2105h: DC-BUS 電壓 (0.1V); 21: 輸出電壓 (0.1V); 2107h: 多段速指令目前執行段數 ; 2108h: 程式運轉該段速目前剩餘時間 (1 sec); 2109h: 計數值 ; 210Ah: 功率因數 (0.1); 210Bh: 輸出頻率 P90 的 Low Word (0.01Hz) 210Ch: 輸出頻率 P90 的 High Word; 210Dh: 變頻器溫度 (0.1 o C); 210Eh: PID 回授值 (0.01%); 210Fh: PID 命令值 (0.01%); 2110h: 數位輸出 / 輸入狀態 ; 2111h: U 相電流 (0.1A); 2112h: V 相電流 (0.1A); 2113h: W 相電流 (0.1A); 2114h: 變頻器機種 ; 21: Bit15~Bit12: 保留 ; Bit11: 參數鎖住 (1); Bit10: 運轉指令由通信界面控制 (1); Bit9: 主頻率由類比信號輸入 (1); Bit8: 主頻率由通信界面輸入 (1); Bit7~Bit5: 保留 ; Bit4~Bit0: Rev Fwd Jog Stop Run 4 3 2 1 0 2110h: Bit15~Bit8: 保留 ; Bit7~Bit0: Relay Do1 TB6 TB5 TB4 TB3 TB2 TB1 7 6 5 4 3 2 1 0 56. 通訊位址 (0~FEh). 功能碼 (03h). 資料 BYTE 數 (2*n)h. 顯示參數內容 1(H). 顯示參數內容 1(L) Dm-3. 顯示參數內容 n(h) Dm-2. 顯示參數內容 n(l) Dm-1. Dm.
電腦詢問變頻器 () 輸出頻率 輸出電流 DC-BUS 電壓 輸出電壓 (2103h~21) 4 筆顯示值 電腦詢問 03h 21h 03h 04h 假設 : 輸出頻率 :60.00 Hz => 60.00*100=6000=1770h 輸出電流 :5.0A =>5.0*10=50=32h DC-BUS 電壓 :310.0V =>310.0*10=3100=0C1Ch 輸出電壓 :220.0 V =>220.0*10=2200=0898h 03h 08h 17h 70h (3) 06H: 寫入變頻器運轉參數 A. PC 呼叫 :. 通訊位址 (00~FFh). 功能碼 (). 第 # 個運轉參數 (H) (20h). 第 # 個運轉參數 (L) (). 寫入參數內容 (H). 寫入參數內容 (L).. 32h 20 運轉參數設定 : Bit15~Bit8: 保留 ; Bit7: E.F. ON; Bit6: 異常復歸 ; Bit5,Bit4: 1 1 : 改變轉向 ; 1 0 : 反轉 ; 0 1 : 正轉 ; 0 0 : 無功能 ; b5 b4 0Ch D9 1Ch B. 變頻器回應 : 0 08h 1 98h 2. 通訊位址. 功能碼 (). 第 # 個運轉參數 (H) (20h). 第 # 個運轉參數 (L) (). 寫入參數內容 (H). 寫入參數內容 (L).. 3 Bit3,Bit2: 保留 ; Bit1,Bit0: 1 1 : 寸動運轉 ; 1 0 : 運轉 ; 0 1 : 停止 ; 0 0 : 無功能 ; b1 b0 電腦命令變頻器 () 寸動正轉 (000000000001 0011b = 0013h) 電腦詢問 20h 13h 57
20h 13h (4) 06H: 寫入變頻器設定參數 PC 呼叫 :. 通訊位址. 功能碼 (). 第 # 個設定參數 (). 第 # 個設定參數 (0~ADh). 寫入參數內容 (H). 寫入參數內容 (L).. 變頻器回應 :. 通訊位址. 功能碼 (). 第 # 個設定參數 (). 第 # 個設定參數 (0~ADh). 寫入參數內容 (H). 寫入參數內容 (L).. 電腦寫入 () 變頻器設定參數 P28( 第一段頻率 ):50.00HZ 電腦詢問 1Ch 13h 88h 50.00*100=5000=1388h( 十六進制 ) 1Ch 13h 88h (5) 08H: 迴路偵測 A. PC 呼叫 : : 通訊位址 (01~FEh) : 功能碼 (08h) : 測試資料內容 (1) (00~FFh) : 測試資料內容 (2) (00~FFh) : 測試資料內容 (3) (00~FFh) : 測試資料內容 (4) (00~FFh) : : B. 變頻器回應 : : 通訊位址 (01~FEh) : 功能碼 (08h) : 測試資料內容 (1) (00~FFh) : 測試資料內容 (2) (00~FFh) : 測試資料內容 (3) (00~FFh) : 測試資料內容 (4) (00~FFh) : : 電腦測試 () 變頻器通訊迴路, 測試資料 : 33h,56h,0Ah,BBh 電腦詢問 58
08h 33h 56h 0Ah BBh 08h 33h 56h 0Ah BBh CHK(check sum: 偵誤值 ) ASCII 模式 : ASCII 模式採用 LRC (Longitudinal Redundancy Check) 偵誤值 LRC 偵誤值乃是將 ADR1 至最後一個資料內容加總, 得到之結果以 256 為單位, 超出之部分去除 ( 例如得到之結果為十六進位之 128H 則只取 28H), 然後計算二次反補後得到之結果即為 LRC 偵誤值 例如 : 從位址為 01H 之交流馬達驅動器的 0401H 位址讀取 1 個字, 如圖 Fig1 01H+03H+04H+01H+00H+01H=0AH, 0AH 的二次反補為 F6H Fig1 Fig2 RTU 模式 : RTU 模式採用 CRC (Cyclical Redundancy Check) 偵誤值,CRC 偵誤值以下列步驟計算 : 1 CRC = 0FFFFH 2 CRC = ( CRC )XOR ( ) 3 判斷 CRC 的 bit0 是否為 1 是 :CRC = ( CRC >>1 )XOR ( 0A001H ) 否 :CRC = CRC>>1 註 :>> 表示右移 1 位, 高位元補 0 4 再重複步驟 3 七次 ( 即步驟 3 共執行八次 ) 5 載入下筆資料 6 重覆步驟 2~4 59
7 重覆步驟 5~6 直到所有資料都執行過例如, 從位址為 01H 之交流馬達驅動器的 2102H 位址讀取 2 個字, 從 ADR 至資料數之最後一位元組所計算出之 CRC 暫存器之最後內容為 F76FH, 則其命令訊息如下所示, 其中 6FH 於 F7H 之前傳送, 如 Fig2 所示 60