Leave Your Message
新聞類別
專題新聞

主控 Modbus 通訊可將工業設備資料傳輸效率提高 50%。

2025-12-24

RS485 它不是通訊協議,而是一種介面標準。它有兩個同級標準:RS232 和 RS422。 

1.jpg

RS485介面的正確接線方式是手拉手菊花鏈連接。如果通訊距離較長(例如超過100公尺),則應在網路的起始端和終止端並聯一個120Ω的電阻,以減少兩端的訊號反射。通常情況下,如果距離超過100米,應考慮增加終端電阻;如果距離超過1000米,則應考慮增加RS485匯流排中繼器。

2.jpg

一條RS485總線上可以連接多少個RS485設備?具體數量取決於RS485轉換器的負載能力。通常,RS485晶片的負載能力分為三個等級,分別可支援32個、128個和256個設備。我們常用的RS485轉換器的負載能力一般為32個設備。

ModbusRTU 是應用層的通訊協議,而 RS485 是物理層的介面標準。我們通常所說的 ModbusRTU 通訊是指基於 RS485 的通訊。然而,ModbusRTU 協定也可以基於 RS232/RS422,甚至是乙太網路 TCP/UDP。同時,RS485 並非 ModbusRTU 的專屬接口,任何協定都可以透過 RS485 傳輸。一個主站能否與多個從站通訊取決於協定層是否設計了設備位址。實現一個主站與多個從站通訊需要兩個條件:物理層和應用層的支持,兩者都不可或缺。例如,如果實體層使用 RS232,即使應用層使用 ModbusRTU 協議,也無法實現一個主站與多個從站通訊(RS232 採用單發送單接收模式)。

3.jpg

通訊速度主要受兩個因素影響:資料量和硬體層速度。資料量指的是需要傳輸的資料量,而硬體層速度則與通訊設備和網路基礎設施密切相關。硬體層速度與波特率和通訊距離均有關,因為主從輪詢機制不可避免地會導致通訊效率下降。

通訊協議分為三種類型:標準協議,例如 Modbus 協議;品牌協議,例如西門子 S7 協議、三菱 MC 協議;以及自訂協議。 ModbusRTU 的通用訊息格式如下:

4.jpg

[1] 從屬位址:此訊息發送給誰或從誰發送。

[2] 功能代碼:做什麼,讀/寫/線圈/暫存器。

5.jpg

[3] 資料部分:提供與函數程式碼對應的參數。

[4] 驗證部分:確保訊息的正確性和完整性。

讀取輸出線圈

6.jpg

【1】從設備位址:0x01 表示從從設備 1 讀取資料。

[2] 功能碼:0x01 表示正在讀取的資料來自輸出線圈儲存區。

[3] 起始位址:十六進位 0x00 0x13 對應十進位 19,表示讀取從線圈 19 開始。與此 19 對應的 Modbus 位址為 00020。 (註:Modbus 位址遵循「偏移量 + 1」的編號規則。十六進位 0x13(十進位 19)是線圈的「實際偏移位址」。Modbus 位址需要透過將偏移量加 1 來取得,即 19+1=20,對應於線圈位址 00020(線圈位址通常以 000xx)。

  1. 位址類型區分:在 Modbus 中,線圈(離散輸出)的位址範圍預設從「00001」(而不是 0)開始。這裡,「00001」對應於實際的偏移位址 0(十六進位 0x00)。
  2. 轉換邏輯:實際偏移位址(十進位 N)→ Modbus 線圈位址 = N + 1。這裡,N=19 (0x13),所以 19+1=20,格式化為 5 位數 00020。 )[4] 線圈數:十六進位 0x00 0x1B 對應於十進位 27,表示讀取的線圈數為 27。

[5] CRC 校驗:0x8D 0x4C 表示對所有前面的資料執行 CRC 校驗的結果。

主站發送此訊息以讀取1號從站輸出線圈儲存區的狀態值,此儲存區的Modbus位址範圍為00020至00046,共包含27個線圈。 1號從站收到此訊息並瞭解主站意圖後,將回覆如下訊息:

7.jpg

[1] 從設備位址:0x01 表示從設備 1 回應的訊息。

[2] 功能碼:0x01 表示回應是針對 0x01 功能碼訊息的。

[3] 位元組計數:0x04 表示傳回的資料由 4 個位元組組成。

[4] 位元組 1 至位元組 4:傳回的具體資料分別為 0xCD、0x6B、0xB2 和 0x05。這四個位元組對應於 32 個線圈值,其中前 27 個線圈值對應於 00020 至 00046 的值。

[5] CRC校驗:0x00 0x02 表示對所有先前資料執行CRC校驗的結果。主站收到回應訊息後,取得所需資料。具體對應關係如下:

0xCD=1100 1101 對應 00027-00020

0x6B=0110 1011 對應 00035-00028

0xB2=1011 0010 對應 00043-00036

0x05=0000 0101 對應 00051-00044

【說明:要將位元組 0xCD (11001101) 轉換為 Modbus 位址,核心是先明確 Modbus 位址類型(位元位址/暫存器位址),然後根據「位元組到位址對應規則」進行轉換-Modbus 沒有通用的「位元組到位址」標準,關鍵在於裝置定義的「起始參考 + 位址」。 】

最常見的場景:轉換為 Modbus 位元位址(離散輸入/線圈,1 位元 = 1 個位址)

在 Modbus 中,1 位元組等於 8 位元二進制數,每一位對應一個「位元位址」(例如離散輸入 1xxx 區、線圈 0xxx 區)。轉換分 3 個步驟完成:

  1. 確定位元組的“基底位址”

假設設備定義:此位元組的起始位址參考為 N(請參閱設備手冊,例如常用參考 20、100 等),1 個位元組佔用 8 個連續位元位址。

  1. 按位分配位址

位元組 0xCD=11001101 由 8 位元(第 0 位元到第 7 位元)組成,對應的位址為:

位0→N、位1→N+1、位2→N+2、位3→N+3、位4→N+4、位5→N+5、位6→N+6、位7→N+7

例如:如果 N=20,則 8 位元位址為 20~27(即,您之前看到的“00020-00027”,按照註釋約定,以相反的順序寫成 27-20)。

  1. 補充地址區域前綴

離散輸入(唯讀)以 1→10020~10027 為前綴;線圈(可讀寫)以 0→00020~00027 為前綴(設備通常省略前綴,直接寫入 00020~00027)。 】(註:原文似乎是一個不完整的句子,因此翻譯也不完整或僅是佔位符。如果原文不完整,翻譯也無法完成。)

目前,Modbus 通訊互動已完成。