Modbus TCP 將 Modbus RTU 請求和響應數(shù)據(jù)包封裝在通過標準以太網(wǎng)傳輸?shù)?TCP 數(shù)據(jù)包中。單元號仍然包括在內(nèi),其解釋因應用而異——單元或從地址不是 TCP 中的主要尋址方式。這里最重要的地址是 IP 地址,例如 192.168.1.100。Modbus TCP 的標準端口是 502,但如果需要,通常可以重新分配端口號。
通常在 RTU 數(shù)據(jù)包末尾找到的校驗和字段從 TCP 數(shù)據(jù)包中省略。在 Modbus TCP 的情況下,校驗和和錯誤處理由以太網(wǎng)處理。
Modbus 的 TCP 版本遵循 OSI 網(wǎng)絡(luò)參考模型。Modbus TCP 定義了 OSI 模型中的表示層和應用層。
Modbus TCP 使主從的定義不那么明顯,因為以太網(wǎng)允許對等通信??蛻舳撕头?wù)器的定義是基于以太網(wǎng)的網(wǎng)絡(luò)中更為人所知的實體。在這種情況下,slave 成為服務(wù)器,master 成為客戶端。可以有多個客戶端從服務(wù)器獲取數(shù)據(jù)。在 Modbus 術(shù)語中,這意味著可以有多個主站和多個從站。與逐個設(shè)備地在物理設(shè)備上定義主設(shè)備和從設(shè)備不同,現(xiàn)在系統(tǒng)設(shè)計人員有責任在主設(shè)備和從設(shè)備功能之間創(chuàng)建邏輯關(guān)聯(lián)。Modbus RTU
什么是 Modbus ASCII?
Modbus ASCII 是一種較舊的實現(xiàn),它包含 RTU 數(shù)據(jù)包的所有元素,但完全用可打印的 ASCII 字符表示。Modbus ASCII 被認為已棄用,不再使用,并且不包含在正式的 Modbus 協(xié)議規(guī)范中。
Modbus 寄存器類型回顧
Modbus 設(shè)備中引用的寄存器類型包括:
? 線圈(離散輸出)
? 離散輸入(或狀態(tài)輸入)
? 輸入寄存器
? 保持寄存器
特定設(shè)備是否包括所有這些寄存器類型取決于制造商。發(fā)現(xiàn)所有 I/O 僅映射到保持寄存器是很常見的。線圈是 1 位寄存器,用于控制離散輸出,可以讀取或?qū)懭?。離散輸入是用作輸入的 1 位寄存器,只能讀取。輸入寄存器是用于輸入的 16 位寄存器,只能讀取。保持寄存器是最通用的 16 位寄存器,可讀取或?qū)懭?,可用于多種用途,包括輸入、輸出、配置數(shù)據(jù)或“保持”數(shù)據(jù)的任何要求。
當網(wǎng)關(guān)是主控時,或在直接模式下(Babel Buster SP-GW)運行時,Control Solutions 網(wǎng)關(guān)將支持所有寄存器類型。將非 Modbus 設(shè)備連接到 Modbus 網(wǎng)絡(luò)的控制解決方案網(wǎng)關(guān)在某些情況下將僅使用保持寄存器來表示非 Modbus 設(shè)備數(shù)據(jù)。
大多數(shù)控制解決方案 I/O 設(shè)備對所有類型的輸入和輸出都使用保持寄存器。在大多數(shù)情況下,相同的 I/O 也可以像其他寄存器類型一樣訪問,I/O 狀態(tài)或值被鏡像到多個寄存器中。
Modbus 功能代碼回顧
Modbus 協(xié)議定義了幾個訪問 Modbus 寄存器的功能碼。Modbus 定義了四種不同的數(shù)據(jù)塊,每個數(shù)據(jù)塊中的地址或寄存器編號重疊。因此,一個完整的定義在哪里可以找到一條數(shù)據(jù)需要地址(或寄存器號)和功能代碼(或寄存器類型)。
Modbus 設(shè)備最常識別的功能碼如下表所示。這只是可用代碼的一個子集 - 一些代碼具有通常不適用的特殊應用。
審查 Modbus 異常(錯誤)代碼
當 Modbus 從站識別到一個數(shù)據(jù)包,但確定請求中有錯誤時,它將返回異常代碼回復而不是數(shù)據(jù)回復。異?;貜陀蓮臋C地址或單元號、設(shè)置高位的功能代碼副本和異常代碼組成。例如功能碼為3,異常回復中的功能碼為0x83。異常代碼將是以下之一:
我從哪里開始與我的 Modbus 設(shè)備進行通信?
以下是您需要了解的前幾件事:
(1) 物理連接是什么?
Modbus RTU 使用 RS-485 或 RS-232。Modbus TCP 使用以太網(wǎng)。如果您正在尋找控制解決方案網(wǎng)關(guān),則需要選擇與您要連接的設(shè)備的電氣接口相匹配的型號。如果您選擇的是 Control Solutions I/O 設(shè)備,請選擇與您的網(wǎng)絡(luò)匹配的設(shè)備。
(2) 寄存器是如何映射的?
當使用網(wǎng)關(guān)將 Modbus 設(shè)備連接到非 Modbus 網(wǎng)絡(luò)時,您需要從設(shè)備制造商處獲取描述可用寄存器以及如何尋址它們的文檔。Modbus 協(xié)議不提供寄存器自動識別自己的方法。Control Solutions 無法為您確定此信息。您必須咨詢設(shè)備制造商。
使用 Control Solutions I/O 設(shè)備(例如 AddMe III)時,您可以在設(shè)備隨附的在線幫助文件或我們的網(wǎng)站上找到此信息。
(3) 什么是通訊參數(shù)?
Modbus RTU 要求您知道或定義波特率、字符格式(8 位無奇偶校驗等)和從站 ID(也稱為從站地址、單元編號、單元 ID)。其中任何一個不匹配都將導致無法通信。
Modbus TCP 要求您知道或定義網(wǎng)絡(luò)上的 IP 地址。在某些情況下,您還需要單位 ID??刂平鉀Q方案 Modbus TCP 設(shè)備可以使用單元 ID,也可以忽略它,具體取決于設(shè)備和應用程序。
點擊了解modbus RTU和modbusTCP的區(qū)別