RS485 與 Modbus RTU 設定
規格
鮑率 Baud
9600, 19200, 38400, 57600
接線
二線式
同一網絡中最多節點數
256
接線
RS485 二線式配線圖
黑色線:RS485 (B-)、綠色線:RS485 (A+)
本功能必需在DC 電源的棕藍色有供電的情形下,才能工作。為維持圖面易讀性,本圖省略DC供電圖,詳情形見DC 電源配線圖。
請注意RS485的配線請勿和電源配線接錯,若因誤接導致線路或產品受損,請聯繫 LORRIC 原廠安排機器更換,相關維修費用需由使用者承擔。

配線建議
一般建議使用帶屏敝 24awg 雙絞線,以串接方式連線每台設備,不要使用環狀或放射狀線路。
連線長時,請在 master 及線路最遠端使用終端電阻,終端電阻業界常使用 120Ω,實際數值請參照線材規格計算。
若通訊訊號不穩定,可於總線上的適當位置(通常靠近主站)加裝偏壓電阻,以提升訊號穩定性。。
隨貨6蕊線,如果使用在 RS485 通訊,請修剪線材長度,盡量使用最短必要線長,以降低雜訊干擾。並將隔離網與主要通訊線屏敝相連後接地。
在訊號干擾多的地方,軟體可能需要多次詢問才能得到回應,請在通訊程式內建立多次詢問機制,以區別訊號干擾與設備異常離線兩種情形。
參數設定
請參考參數頁面
設定步驟如下:
完成參數設定步驟:語言設定,管路設定A02 (管規), A04(管路外徑) , A06 (管路厚度), A08 (管路材質) 設定。
執行Z03 (自動上機初始化)。
請先以本頁的接線指示將線接好
本機使用 Modbus RTU 協定,通訊參數設定如下:
請設定 E04 指定本機的 Modbus ID,請確認同一個線路上沒有相同的地址。
請設定 E05 指定通訊的速度 Baud,本機支援 9600, 19200, 38400 及 57600。
請回到主畫面。必需在主畫面下,RS485 才會工作。
請參考 Modbus RTU Protocol 測試要讀寫的記憶體。
通訊格式
bit order: lsb first
byte order: big endian
Data bits:8
Parity: None
Stop bits: 1
Floating point number follows IEEE754-1985. The float32 below stands for 32bits Single precision floating point number.
名詞定義
Register: 2 Byte 或 16bit 長,是 Modbus RTU 的記憶體通訊的單位長度。
Byte: 8 bit長
記憶體定義及功能
modbus 可操作的記憶體分為兩大類,唯讀型及讀寫型。
唯讀型主要是流量計狀態相關的記憶體,例如即時流量。這部分也是最常使用的記憶體。唯讀型的記憶體只能使用指 04 來讀取。
讀寫型主要是流量計設定參數記憶體,寫入操作一次只能改變一個參數,如果目標參數的記憶體長度是 1個 register,使用指令 06,如果目標參數的記憶體長度是 2 register,使用 30。
唯讀型記憶體讀取指令(04)及記憶體列表
指令範例
Byte #
Node ID
範例內容01~FF
1
Slave Address
01
2
Function Code
02
3
讀取數據的起始地址
00
4
讀取數據的起始地址
00
5
讀取registers總數
00
6
讀取registers總數
02
7
CRC
71
8
CRC
CB
控制端發訊範例說明
這個範例會讀取即時流量
slave address: 01(本流量計地址)
function code: 04(讀取指令)
讀取數據的啟始地址: 00 00(要讀取的數據的啟始地址)
讀取registers 總數: 00 02 (需要從 00 00 開始讀兩個 register 的記憶體)
CRC: 71 CB(依 CRC 算法計算出的糾錯碼)
Byte #
Node ID
範例內容01~FF
1
Slave Address
01
2
Function Code
04
3
回覆的Byte數
04
4
Data Byte #1
00
5
Data Byte #2
00
6
Data Byte #3
00
7
Data Byte #4
00
8
CRC
FB
9
CRC
84
流量計回覆範例說明
slave address: 01(本流量計地址)
function code: 04(讀取指令)
回覆的Byte數: 04(2個register=4byte)
Data Byte: 00 00 00 00(假設目前即時流量為 0)
CRC: FB 84(依 CRC 算法計算出的糾錯碼)
Modbus RTU 讀取 Float32 數據範例
以累積流量 20000.5 升 為例,解釋如何發送指令,並將回傳數據解讀為十進位制。
主站發送讀取指令 (TX 訊框)
根據設備規格,累積流量採 Float32 格式,佔用 2 個暫存器 (4 Bytes) 。主站需發送 Modbus 功能碼 04(讀取輸入暫存器),以讀取從位址 0000 開始的 2 個暫存器數據。
Slave Address = 01
Function Code = 04
起始暫存器位址 = 00 00
讀取數量 = 00 02 (2 個暫存器)
CRC 校驗碼 = 71 CB
從站回覆數據 (RX 訊框)
從站收到讀取請求後,將內部儲存的 20000.5 升(Float32)數據,依 Big Endian 順序,封裝為 4 個位元組回傳。
Slave Address = 01
Function Code = 04
回傳位元數 = 04 (4 Bytes)
數據位元組 = 45 9C 40 00
CRC 校驗碼 = E2 56
數據解析與轉換 (轉回十進制)
步驟 A:排列數據
由於設定為 大端模式 (Big Endian),資料的最高位元組放在最前面,因此 4 個位元組的順序就是收到的順序:
459C4000 ₁₆
步驟 B:拆解 Float32 結構 (SEM: S-符號位, E-指數位, M-尾數位)
將 459C4000 ₁₆ 轉換為32位二進位制

部分
二進制數值
位元數
說明
S (符號位)
0
1 bit
0=正數
E (指數位)
10001011
8 bits
139₁₀。 實際指數:
139 - 127 (Float 32 偏移量) = 12
M (尾數位)
001110001...
23 bits
有效數字 1.M
步驟 C:計算數值
根據 IEEE 754 公式:

• 指數位:E = 10001011 轉換為10 進位制
在 IEEE 754 Float32 標準中,指數位採用偏移表示法表示正指數和負指數,標準規定的偏移量 (Bias) 是 127,因此實際指數是 139 - 127 = 12
• 尾數部分:M=0011100100000000000000
有效數字 1.M:1.001110001 (後面的零可以忽略)
• 得根據 IEEE754 浮點數數值表示為
將小數點向右移動 12 位:

• 將這個二進制數轉換回十進制:
得請求累積流量,RX 回覆數據: 01 04 04 45 9C 40 00 E2 56 值為 20000.5 升
Modbus 不同格式間的轉換器
Last updated