> For the complete documentation index, see [llms.txt](https://jen-hsuan-hsieh.gitbook.io/protocol/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jen-hsuan-hsieh.gitbook.io/protocol/chapter1/1.1.modbus.md).

# 1.1.modbus

* Introduction
  * 主從架構 (master-slave)
* 資料存取方式和資料模式
  * 可透過 Modbus 存取的資料會存放在四種資料組間或位址範圍： **Coil、離散輸入、保存暫存器、輸入暫存器**
  * 資料組間定義了其中資料的類型和存取權限。&#x20;
  * **附屬裝置**可直接存取此資料，同時這些資料則是存放於這些本端裝置內。 Modbus 可存取的資料通常是裝置主要記憶體的子資料集。&#x20;
  * **主要裝置**必須透過不同的函式代碼，才能提出這些資料的存取需求。

    ![](https://3840825399-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4M0G8PXRnA3yHgZCAL%2F-M4M0Gn8DmjJ2aT88bjY%2F-M4M0HYMsRFMerAqrn62%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202017-03-04%20%E4%B8%8B%E5%8D%887.55.09.png?generation=1586302892190064\&alt=media)
* 資料類型與前置詞&#x20;
  * 資料項目的命名方式 (參考自: <http://www.ni.com/white-paper/52134/zht/>)
    * 為了簡化記憶體區塊位置的討論，我們會介紹一個編號機制，可以在資料位址加上前置詞。
    * 4,014、40,014 或 400,014 -> 第一個位數是表示資料區塊種類(保存暫存器), 14是指暫存器 14&#x20;
    * 也就是說，參考 4001 可能是指保存暫存器 1 或 Coil 4001。 因此，建議所有的全新實作採用 6 位元、0 開頭的位址設定機制，並且在說明文件中明確標示。 所以**保存暫存器 1 會是 400,001，Coil 4001 則是 004,001**
    * 離散輸入
    * 輸入暫存器
    * 保存暫存器: holding register

      ![](https://3840825399-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M4M0G8PXRnA3yHgZCAL%2F-M4M0Gn8DmjJ2aT88bjY%2F-M4M0HYON-CFQbj27U7V%2F%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7%202017-03-04%20%E4%B8%8B%E5%8D%887.37.20.png?generation=1586302892295325\&alt=media)
