什么是 Modbus?
Modbus 是由Modicon 于 1979 年發(fā)布的 Modicon 開發(fā)的串行通信協(xié)議,用于其可編程邏輯控制器 (PLC)。簡單來說,它是一種用于在電子設(shè)備之間通過串行線路傳輸信息的方法。請求信息的設(shè)備稱為 Modbus 主設(shè)備,提供信息的設(shè)備稱為 Modbus 從設(shè)備。再標準的 Modbus 網(wǎng)絡(luò)中,有一個主站和多達 247 個從站,每個從站都有一個從 1 到 247 的唯一從站地址。主站也可以將信息寫入從站。
Modbus有什么用途?
Modbus 是一種開放協(xié)議,這意味著制造商可以免費將其構(gòu)建到他們的設(shè)備中,而無需支付版稅。它已成為工業(yè)中的標準通信協(xié)議,是目前最常用的工業(yè)電子設(shè)備連接方式。它被許多行業(yè)的許多制造商廣泛使用。Modbus 通常用于將來自儀表和控制設(shè)備的信號傳輸回主控制器或數(shù)據(jù)收集系統(tǒng),例如測量溫度和濕度并將結(jié)果傳送到計算機的系統(tǒng)。Modbus 通常用于將監(jiān)控計算機與監(jiān)控和數(shù)據(jù)采集 (SCADA) 系統(tǒng)中的遠程終端單元 (RTU) 連接起來。
Modbus是如何工作的?
Modbus 通過設(shè)備之間的串行線路傳輸。最簡單的設(shè)置是用一根串行電纜連接兩個設(shè)備(主設(shè)備和從設(shè)備)上的串行端口。
數(shù)據(jù)以一系列 1 和 0 的形式發(fā)送,稱為位。每個位都作為電壓發(fā)送。零作為正電壓發(fā)送,一個作為負電壓發(fā)送。這些位發(fā)送得非常快。典型的傳輸速度為 9600 波特(比特/秒)。
什么是十六進制?
在解決問題時,查看正在傳輸?shù)膶嶋H原始數(shù)據(jù)會很有幫助。長的 1 和 0 字符串難以閱讀,因此這些位被組合并以十六進制顯示。每個 4 位塊由0到F的 16 個字符之一表示。
每個 8 位塊(稱為一個字節(jié))由從00到FF的 256 個字符對之一表示。
數(shù)據(jù)如何存儲在標準 Modbus 中?
信息以四個不同的表存儲在從設(shè)備中。兩個表存儲開/關(guān)離散值(線圈)和兩個存儲數(shù)值(寄存器)。線圈和寄存器各有一個只讀表和讀寫表。每個表有 9999 個值。每個線圈或觸點都是 1 位,并分配了一個介于0000和270E之間的數(shù)據(jù)地址。每個寄存器為 1 個字 = 16 位 = 2 個字節(jié),并且數(shù)據(jù)地址介于0000和270E之間。
線圈/寄存器編號可以被認為是位置名稱,因為它們不會出現(xiàn)在實際消息中。數(shù)據(jù)地址用于消息中。例如,第一個保持寄存器,編號 40001,具有數(shù)據(jù)地址0000 。這兩個值之間的差異是偏移量。每個表都有不同的偏移量。1、10001、30001 和 40001。
從站 ID 是什么?
網(wǎng)絡(luò)中的每個從機都分配有一個從 1 到 247 的唯一單元地址。當主機請求數(shù)據(jù)時,它發(fā)送的第一個字節(jié)是從機地址。這樣每個從機在第一個字節(jié)之后就知道是否忽略該消息。
什么是Modbus功能碼?
主機發(fā)送的第二個字節(jié)是功能碼。這個數(shù)字告訴從機要訪問哪個表以及是讀取還是寫入表。
什么是 Modbus 從零與從一的尋址?
在討論基于偏移的 Modbus 尋址時,最后一個重要的細節(jié)是設(shè)備是否支持基于零或一的尋址。最初,從零開始的尋址是 Modbus 的預期實現(xiàn)方式。但是,隨著時間的推移和 Modbus 作為一種開放協(xié)議被如此廣泛地采用,某些設(shè)備制造商采用了一種稱為 one-based 尋址的概念。
從零開始的尋址涉及從零開始的內(nèi)存類型的第一個偏移量。因此,例如,如果您請求保持寄存器 400001,則實際的 Modbus 協(xié)議請求將為偏移量 0 的 FC 3。而 400002 將請求偏移量 1 的 FC 3,依此類推。
正如您可以想象的那樣,這可能會令人困惑。因此,一些制造商采用了一種稱為基于一的尋址的實現(xiàn)方式。對于從 1 開始的尋址,偏移量與實際地址請求對齊。例如,如果您請求保持寄存器 1,則該請求仍然使用 FC 3,但用于偏移量 1。而 400002 將請求 FC 3 用于偏移量。