跳至內容

Modbus

出自Taiwan Tongues 台語維基
於 2025年8月23日 (六) 00:11 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

Modbus是一種串行通信協定,是 Modicon 公司(這馬的施耐德電氣 Schneider Electric)佇一九七九年就有使用可程式化邏輯控制器(PLC)通信來發表。Modbus 已經成做工業領域通批協定事實上的業界標準,並且這馬是工業電子裝置之間捷用的連接方式。Modbus 比其他通信協定使用的閣較廣泛的主要原因有:

一 . 公開發表並且無著作權要求二 . 通過部署和維護三 . 對供應商來講,修改移動原生的位元或位元組無蓋濟限制

Modbus 允真濟个 ( 大約兩百四十个 ) 裝置連接佇仝一个網路頂懸進行通批,比一个例,一个由測量溫度佮溼度的裝置,而且共結果傳送予電腦。佇資料採集佮監視控制系統(SCADA)中,Modbus 通常用來連接監視電腦佮遠端終端控制系統(RTU)。

來協定版本

Modbus 協定目前存在用於序列埠、乙太網路佮其他支持網際網路協定的網路的版本。

大多數啦 Modbus 裝置通信通過序列埠頭 EIA 被四百八十五實體層進行。

對串行連接,存在兩个變種,𪜶咧數值資料表示無仝和協定細節上略有無仝。Modbus RTU 是一種收成的,採用二進位表示資料的方式,Modbus ASCII 是一種人類會當讀的,傷長的表示方式。這兩个變種攏用串行通訊(serial communication)方式。RTU 格式後續的命令/資料帶閣有迴箍傷餘校驗的校驗佮,而且 ASCII 格式採用縱向傷餘校驗的校驗佮。予人組態做 RTU 變種的節點袂佮設定做 ASCII 變種的節點通批,反之亦然。

對通過 TCP / IP(比如講乙太網路)的連接,儉佇咧幾个 Modbus / TCP 反種,這種方式無需要校驗佮計算。

對所有的這三種通信協定佇資料模型佮功能呼叫上攏是相仝的,干焦封裝方式是無仝的。

Modbus 有一个擴充版本 Modbus Plus(Modbus + 抑是講 MB +), 猶毋過此協定是 Modicon 專有的,和 Modbus 無仝。伊需要一个專門的協處理器來處理類似 HDLC 若高速權拐仔旋轉。伊使用一 Mbit / s 的雙絞線,並且逐个節點攏有轉換隔離裝置,是一種採用轉換/邊仔有發而毋是電壓/水平觸發的裝置。連接 Modbus Plus 到電腦需要特別的介面,通常是支援 ISA(SA 八十五), PCI 抑是講 PCMCIA 匯流排的枋卡。

通批佮裝置

Modbus 協定是一个 master / slave 架構的協定。有一个點是 master 節點,其他使用 Modbus 協定參與通信的節點是 slave 節點。彼每一个 slave 裝置攏有一个唯一的位址。咧串行佮 MB + 網路中,干焦予人指定做主節點的節點會當啟動一个命令(佇咧乙太網路頂頭,任何一个裝置攏會當傳送一个 Modbus 命令,但是通常嘛干焦一个主節點裝置啟動指令)。

一个 ModBus 命令包含著按算執行的裝置的 Modbus 位址。所有裝置攏會收著命令,但是干焦指定位置的裝置會執行佮回應指令(散址零例外,指定位址零的指令是廣播指令,所有收著指令的裝置攏會執行,毋過毋回應指令)。 所有的 Modbus 命令包括講檢查碼,確定到位的命令無去予人破壞。基本的 ModBus 命令會當指令一个 RTU 改變伊的暫存器的某一个值,控制抑是讀一个 I / O 埠頭,猶閣有指揮裝置回送一个抑是講濟个其暫存器內底的資料。

有真濟 modems 佮閘道器支援 Modbus 協定,因為乎 Modbus 協定足簡單而且容易複製。𪜶當中一寡為這个協定特別設計的。有使用有線、無線通信甚至簡訊佮 GPRS 的無仝實現。猶毋過設計者需要克服一寡包括高延遲佮時序的問題。

實現

差不多所有的實現攏是官方標準的某一種變體。無仝款的供應商裝置之間可能無法度正確的通信。一寡主要的變化有:

  • 資料類型
  • IEEE 標準的浮點數
  • 三十二位元整型數
  • 八位元資料
  • 混合資料類型
  • 整數內底的位域
  • multipliers to change data to / from integer . 十 , 一百 , 一千 , 兩百五十六 . . .
  • 協定擴充
  • 十六位元的對站位址
  • 三十二位元的資料大細(一个位址=倒轉去三十二位元資料)
  • 字交換資料

限制

  • Modbus 是佇一九七空年尾做可程式化邏輯控制器通批開發的,遮的有限的資料類型佇彼个時代是會當予 PLC 理解的,大型的二進位物件的資料是無支援的。
  • 對節點來講,無一个標準的方法揣著資料物件的描述資訊,比一个例,確定一个暫存器的資料敢是表示一个咱介於三十見面一百七十五度之間的溫度。
  • 因為 Modbus 是一个主/對協定,無法度要求裝置「報告異常」(構建佇咧乙太網路的 TCP / IP 協定之上,予人叫做是 open-mbus 除外)-主節點著愛迴箍的詢問逐家裝置,並且揣資料中的變化。佇咧頻寬可能較寶貴的應用中,這種方式佇咧應用中消磨頻闊佮網路時間,譬如講佇低速率的無線鏈路頂懸。
  • Modbus 佇一个資料鏈路頂頭干焦會當處理兩百四十七个位址,這種情形限制了會當連接著主控站點的裝置數量(閣一擺指出乙太網路 TCP / IP 除外)
  • Modbus 傳輸佇遠端通訊裝置之間緩衝資料的方式進行,有對通訊一定是連紲的限制,避免傳輸中的緩衝區漏洞的問題
  • Modbus 協定針對無經授權的命令抑是截取數據無安全性。

Modbus 通訊協定學理上的弱點分析

Modbus 當初咧設計的時陣,主要注重兩點,分別是簡單-予各項系統會當裝置的實現佮各項系統所需求的資源較低,以利降低成本,另外一則是通用-方便若整合各種裝置抑是平台,仝款所在,按呢嘛帶來一寡缺點,對資安的角度上去解析會當發現具有三个主要的弱點:

一 . 無保護機制-指令明碼傳輸 ( 透過第三方封包側錄軟體都會用得揣封包內容,無需要敨密 )。 二 . 無認證機制-符合規範就執行 ( 只要符合 Modbus 規範之封包傳輸就會當透過第三方控制軟體監控接受捀裝置 ) 三 . 有可能有實現上的問題 ( 針對無定義參考位置輸入指令值,可能造成接收端傳輸異常進半遂接收端裝置 )。

參考文獻

  • https : / / www . grb . gov . tw / search / planDetail ? id=八百一十七石六千六百空五

外部連結

  • 詳細協定說明
  • Modbus-IDA 徛點

開源軟體

  • 一个是因為 GNU / Linux C 開發的開源 Modbus 庫
  • 為微控制器開發的免費的 Modbus ASCII / RTU 和 TCP 軟體。
  • C 開發。新站點位置 http : / / www . freemodbus . org。商業支援版本佇咧 http : / / www . embedded-solutions . at。
  • NModbus 是一个有例的 C # 實現版本
  • Perl 語言開發的 Protocol : : Modbus
  • Perl 語言開發的 Modbus : : Client
  • Ruby 開發的 Modbus master。公共領域的範例代碼,會當真簡單的用其他的手稿語言重新開發。