What is Modbus and How does it Work?
什麼是 Modbus,它是如何運作的?
Schneider Electric
問題:
本文檔介紹了 modbus 的工作原理,以及正確安裝所需的操作。
產品線:
所有產品線
環境:
所有序列號
原因:
安裝
解決:
什麼是 Modbus?
Modbus 是由 Modicon 開發的串行通信協議,由 Modicon® 於 1979 年發布,用於其可程式邏輯控制器 (PLC)。簡單來說,它是一種用於在電子設備之間,透過串行線路傳輸資訊的方法。請求資訊的設備稱為 Modbus 主設備,提供資訊的設備稱為 Modbus 從設備。在標準的 Modbus 網路,有一個主站和最多 247 子站,每一個獨特的從機地址,從 1 到 247 中號也可以寫資訊的子站。
官方 Modbus 規範可在 http://www.modbus.org/ 找到
這有什麼用途?
Modbus 是一種開放協議,這意味著製造商可以免費將其內置到他們的設備中,而無需支付版稅。它已成為工業中的標準通信協議,現在是連接工業電子設備最常用的手段。它被許多行業的許多製造商廣泛使用。Modbus 通常用於將來自儀表和控制設備的信號,傳輸回主控制器或數據收集系統,例如測量溫度和濕度,並將結果傳送到電腦的系統。Modbus 通常用於將監控電腦與監控和數據採集 (SCADA) 系統中,遠端的終端單元 (RTU) 連接起來。
它是如何工作的?
Modbus 透過設備之間的串行線路傳輸。最簡單的設置是一根串行電纜,連接兩個設備上的串行端口,一個主設備和一個從設備。
數據以一系列,稱為位的 1 和 0 的形式發送。每個位都作為電壓發送。零作為正電壓發送,一個作為負電壓發送。這些位的發送速度非常快。典型的傳輸速度為 9600 波特(每秒位數)。
什麼是十六進制?
在對問題進行故障排除時,查看正在傳輸的實際原始數據會很有幫助。長串的 1 和 0 難以閱讀,因此這些位被組合起來,並以十六進制顯示。每個 4 位塊由從 0 到 F 的十六個字符之一表示。
每個 8 位塊(稱為一個字節)由 00 到 FF 的 256 個字符對之一表示。
數據如何儲存在標準 Modbus 中?
資訊以四個不同的表儲存在從設備中。兩個表儲存開/關離散值(線圈),和兩個儲存數值(寄存器)。線圈和寄存器各有一個只讀表和讀寫表。每個表有 9999 個值。每個線圈或觸點為 1 位,並分配了一個介於 0000 和 270E 之間的數據地址。每個寄存器為 1 個字 = 16 位 = 2 個字節,並且數據地址在 0000 和 270E 之間。
線圈/寄存器編號可以被認為是位置名稱,因為它們不會出現在實際消息中。數據地址用於消息中。例如,第一個保持寄存器,編號為 40001,具有數據地址 0000 。這兩個值之間的差異是 offset。每個表都有不同的偏移量。1、10001、30001 和 40001。
從站 ID 是什麼?
網路中的每個從站都分配了一個從 1 到 247 的唯一單元地址。當主站請求數據時,它發送的第一個字節是從站地址。這樣每個從機在第一個字節之後,就知道是否忽略該消息。
什麼是功能碼?
主機發送的第二個字節是功能碼。這個數字告訴從站訪問哪個表,以及是讀取還是寫入該表。
什麼是 CRC?
CRC 代表循環冗餘校驗。它是添加到每個 modbus 消息末尾的兩個字節,用於錯誤檢測。消息中的每個字節都用於計算 CRC。接收設備還會計算 CRC,並將其與來自發送設備的 CRC 進行比較。即使消息中的一位被錯誤接收,CRC 也會不同並導致錯誤。.
Modbus 命令和響應的格式是什麼?
什麼是數據類型?
對於示例 FC03 顯示,寄存器 40108 包含 AE41 ,其轉換為 16 位 1010 1110 0100 0001 大!但是這是什麼意思?嗯,這可能意味著一些事情。寄存器 40108 可以定義為以下 16 位數據類型中的任何一種:
甲 16 位無符號整數(0 到 65535 之間的整數)寄存器 40108 包含 AE41 = 44609(十六進制到十進制的轉換)
甲 16 位帶符號整數(-32768 到 32767 之間的整數) AE41 = -20,927 (十六進制到十進制的轉換即包裹物,如果其超過 32767 然後減去 65536)
甲兩種字符的 ASCII 字符串(2 鍵入的字母)AE41 =®甲
甲開/關值的離散(在此工作方式相同的 16 位整數 0 或 1 的值的十六進制數據將是 0000 或 0001 )註冊 40108 也可與結合
40109 形成任何這些 32 位數據的類型:
甲 32 位無符號整數(0 和 4294967295 之間的數字)40108,40109 = AE41 5652 = 2923517522
一個 32 位有符號整數(介於 -2,147,483,648 和 2,147,483,647 之間的數字)AE41 5652 = -1,371,449,774
一個 32 位雙精度 IEEE 浮點數。這是一個數學公式,允許任何實數(帶小數點的數字)用 32 位表示,精度約為 7 位。AE41 5652 = -4.395978 E-11 這是一個電子表格 IEEE 浮點計算器,用於 4 個字節或 2 個字的輸入。要下載副本,請右鍵單擊並選擇目標另存為...
一個四字符的 ASCII 字符串(4 個輸入字母)AE41 5652 = ® AVR 可以組合更多的寄存器,來形成更長的 ASCII 字符串。每個寄存器用於儲存兩個 ASCII 字符(兩個字節)。
什麼是字節和字排序?
Modbus 規範並未準確定義數據,在寄存器中的存儲方式。因此,一些製造商在他們的設備中實現了 modbus,先儲存和傳輸高字節,然後是低字節。(AE前41 )。或者,其他人首先儲存和傳輸低字節(AE之前的41 )。類似地,當寄存器組合表示 32 位數據類型時,一些設備將高 16 位(高位字)儲存在第一個寄存器中,將剩餘的低位字儲存在第二個寄存器中(AE41之前5652 ),而其他設備則相反(5652之前)AE41 )字節或字的發送順序無關緊要,只要接收設備知道期望它的方式即可。例如,如果將數字 29,235,175,522 作為 32 位無符號整數發送,則可以按這四種方式中的任何一種進行排列。
AE41 5652 高字節在前 高字在前
5652 AE41 高字節先低字先
41AE 5256 低字節先高字先行
5256 41AE 低字節先低字先
什麼是 Modbus 映射?
modbus 映射只是單個從設備的列表,它定義了- 數據是什麼(例如壓力或溫度讀數)
- 數據儲存在哪裡(哪些表和數據地址)
- 數據的儲存方式(數據類型、字節和字序)
某些設備使用製造商定義的固定映射構建。而其他設備允許操作員配置或編程自定義地圖以滿足他們的需求。
Modbus ASCII 和 Modbus RTU 有什麼區別?
Modbus RTU 和 Modbus ASCII 使用相同的協議。唯一的區別是透過線路傳輸的字節,使用 RTU 顯示為二進制,使用 Modbus RTU 顯示為可讀 ASCII。關於 RTU 需要注意的重要一點,是 RTU 消息沒有 Start_of_text 指示。通信中的接收方,使用「靜默」時間來確定新消息的開始。ASCII 確實有一個文本開始標記。二進制消息比 ASCII 短,因此理論上傳輸/接收速度更快。您可能很高興在 HMI/SCADA 中看到大約 100 毫秒的更新率,並且可以選擇任一通信。
總結:
- 使用 RTU 是可能的
- 使用 ASCII 以防 RTU 在 WinNT 上出現超時問題,或者在使用慢速通信媒介(如 300 bps 或撥號調製解調器)時,大多數 Modbus OPC 伺服器都支持 ASCII 以及 RTU 通信。
什麼是擴展寄存器地址?
由於類比輸出保持寄存器的範圍是 40001 到 49999,這意味著不能超過 9999 個寄存器。儘管這對於大多數應用來說通常已經足夠了,但在某些情況下,更多的寄存器將是有益的。寄存器 40001 到 49999 對應於數據地址 0000 到 270E 。如果我們利用剩餘的數據地址 270F 到 FFFF ,則可以使用六倍以上的寄存器,總共 65536 個。這將對應於從 40001 到105536 的寄存器編號。許多 modbus 軟體驅動程式(用於 Master PC)是用 40001 到 49999 編寫的限制,並且不能訪問從設備中的擴展寄存器。並且許多從設備不支持使用擴展寄存器的映射。但另一方面,一些從設備確實支持這些寄存器,並且一些主軟件可以訪問它,尤其是在編寫自定義軟體的情況下。
2 字節從機尋址如何工作?
由於通常使用單個字節來定義從機地址,並且網路上的每個從機都需要唯一的地址,因此網路上的從機數量限制為 256。modbus 規範中定義的限制甚至更低,為 247。要得到超出此限制,可以對協議進行修改以使用兩個字節作為地址。主站和從站都需要支持這種修改。兩字節尋址將網路中從站數量的限制擴展到 65535。默認情況下,Simply Modbus 軟體使用 1 字節尋址。當輸入大於 255 的地址時,軟體自動切換到 2 字節尋址,並停留在此模式適用於所有地址,直到手動關閉 2 字節尋址。
如何發送事件和歷史數據?
安然 Modbus 包括用於移動事件和歷史數據的命令。
什麼是安然 Modbus?
Enron Modbus 是對 Enron Corporation 開發的標準 Modicon modbus 通信協議的修改。
有關詳細資訊,請參閱安然 Modbus 。
沒有留言:
張貼留言