全部產品
Search
文件中心

:Modbus驅動

更新時間:Jul 13, 2024

Link IoT Edge提供Modbus官方驅動,用於支援工業領域廣泛應用的Modbus通訊協定裝置。本文主要介紹Modbus驅動及其用法。

概覽

Modbus是常用的應用程式層資料通訊協定,阿里雲官方Modbus驅動(以下簡稱Modbus驅動)支援Modbus RTU和Modbus TCP兩種互動。

Modbus驅動可以直接連接Modbus從裝置,示意圖如下所示。Modbus驅動直接連接裝置
Modbus驅動也可以通過Modbus網關串連Modbus從裝置,示意圖如下所示。Modbus驅動通過網關連裝置

Modbus驅動支援的功能有讀取輸入狀態和輸入寄存器、讀取和寫入線圈狀態、保持寄存器。

Link IoT Edge提供C和Python語言Modbus驅動,同時根據CPU架構的不同,有多種C語言Modbus驅動。您可以直接從控制台部署Modbus驅動到網關,也可以從控制台下載Modbus驅動代碼進行修改,作為您的自訂驅動使用。

本文以樣本方式介紹Modbus官方驅動的使用步驟,具體操作如下文所示。

前提條件

請確保已建立邊緣執行個體並上線網關,具體操作請參見環境搭建

一、分配驅動

  1. 登入邊緣計算控制台
  2. 左側導覽列單擊邊緣執行個體,在已建立的邊緣執行個體右側單擊查看
  3. 執行個體詳情頁面裝置與驅動頁簽下,單擊全部驅動右側的+表徵圖 。
  4. 分配驅動面板中,選擇官方驅動,根據網關CPU架構選擇需要使用的Modbus驅動,單擊對應操作欄中的分配。然後單擊關閉
    說明
    • C語言Modbus驅動,需在v1.8.4及以上版本的Link IoT Edge中使用。
    • Python語言Modbus驅動,僅支援在Link IoT Edge專業版中使用。
    選驅動

二、配置驅動

  1. 單擊已指派的Modbus驅動,在裝置列表右側單擊驅動配置
  2. 在彈出面板中單擊添加通道
    通道是網關與具體物理裝置之間的串連介質。添加通道
  3. 根據介面提示設定參數,然後單擊確定
    參數描述
    通道名稱設定通道名稱,需在網關維度具有唯一性。支援中文漢字、英文字母、數字和底線(_),長度不超過1~30個字元,1個中文漢字算2個字元。
    傳輸模式

    支援RTUTCP兩種。

    當傳輸模式為RTU時,需設定以下參數:
    串口設定串口,如/dev/ttyUSB0/dev/ttyUSB1。支援英文字母、數字、正斜杠(/)和底線(_),長度限制1~64字元。
    傳輸速率表示每秒傳送的符號個數,從下拉式清單中選擇。
    資料位元表示一組資料實際包含的資料位元數,從下拉式清單中選擇。
    校正位從下拉式清單中選擇同位、或者無校正。
    停止位用於表示單個包的最後一位,從下拉式清單中選擇。
    當傳輸模式為TCP時,需設定以下參數:
    IP地址Modbus裝置IP地址,輸入焦點分十進位格式的地址。
    連接埠號碼Modbus裝置連接埠號碼,輸入1~65535範圍的整數。
  4. (可選)在裝置列表右側,單擊容器配置,根據如下參數說明,對當前驅動進行容器配置。配置完成後單擊儲存
    說明 僅在產品規格為專業版的邊緣執行個體中,允許設定容器配置
    參數描述
    是否使用宿主機host模式選擇是否隔離容器的網路。直接使用宿主機網路環境。
    • :表示不隔離容器的網路,直接使用宿主機網路環境。
    • :表示隔離容器的網路,需要設定網路連接埠映射
    網路連接埠映射是否使用宿主機host模式時出現的參數。函數的網路環境和宿主機的環境是完全隔離的。通過網路連接埠映射,將容器內函數的監聽連接埠映射到宿主機的某一個連接埠上,實現不同主機上的用戶端程式,能夠訪問該函數提供的服務。最多支援映射10條網路連接埠。

    例如,運行在宿主機容器內的fc-http-server函數,通過80連接埠對外界提供服務。此時,其它主機上的用戶端程式,無法通過訪問宿主機的80連接埠,訪問到fc-http-server函數。因此需要將fc-http-server函數所在的容器連接埠映射到宿主機的某一個連接埠上(例如將容器內的80連接埠映射到宿主機8080連接埠),允許其它主機上的用戶端程式通過訪問宿主機的IP地址:8080,訪問到容器內部的fc-http-server函數。

    是否啟動特權模式

    容器內的root使用者實際上只是宿主機的一個普通使用者。若在容器內部做修改系統時間、使用mount命令等需要root許可權的操作,則需要賦予容器privileged特權。

    說明 特權模式下,容器內部擁有宿主機的root許可權,而且宿主機的所有裝置會預設映射到容器內部,即無需配置裝置映射
    裝置映射是否啟動特權模式時出現的參數。裝置管理系統和宿主機的環境是完全隔離的。當一個函數需要訪問宿主機的裝置(例如串口)時,需要將裝置映射到運行函數的容器內部。最多可添加10個裝置映射。
    卷映射檔案系統和宿主機的環境是完全隔離的。當一個函數需要訪問宿主機的檔案時,需要將檔案對應到運行函數的容器內部。最多可添加10個卷映射。

三、驅動關聯子裝置

  1. 單擊裝置列表地區框下的分配子裝置,在Modbus驅動下為邊緣執行個體分配裝置。
    您可以分配已有的Modbus裝置,也可以根據下面的步驟,建立Modbus裝置。
    說明 分配已有的Modbus裝置時,該裝置所屬產品必須接入網關,且接入網關協議為Modbus。詳細說明請參見建立產品
  2. 在右側彈出的分配子裝置面板中,單擊添加子裝置
    添加子裝置按鈕
  3. 添加裝置對話方塊,單擊建立產品,建立Modbus裝置所屬產品。
    新增客廳燈產品
  4. 建立產品對話方塊設定參數後,單擊完成
    表 1. 參數說明
    參數描述
    產品名稱
    設定產品名稱,產品名稱在帳號內具有唯一性。支援中文、英文字母、數字、底線(_)、短劃線(-)、at符號(@)和英文圓括弧,長度限制4~30個字元,一個中文漢字算2個字元。
    接入網關協議
    此處必須選擇Modbus
    認證方式
    選擇適合您裝置的認證方式。詳細資料,請參見裝置安全認證
    產品描述添加對該產品的描述。可以為空白。
  5. 添加裝置對話方塊,產品自動分配已建立的產品,單擊產品下的前往配置,為產品添加自訂功能。
    說明 您也可以使用Modbus調試工具配置Modbus產品,但需要先完成添加裝置並分配到邊緣執行個體的操作,再使用調試工具。
    前往設定

    系統跳轉到物聯網平台控制台產品詳情頁面功能定義頁簽。單擊編輯草稿,在彈出頁面中單擊添加自訂功能

    添加功能
  6. 添加自訂功能對話方塊,根據實際情況設定屬性參數。具體操作請參見單個添加物模型
    在配置物模型屬性的過程中,單擊新增擴充描述設定如下擴充描述參數,將屬性對應到寄存器中。官方Modbus驅動會將所有的屬性彙總為Modbus資料請求,驅動收到Modbus資料之後再轉換為物模型資料。擴充描述

    參數說明如下所示,詳細的參數解釋請參見單個添加物模型中“擴充描述”的說明。

    名稱描述
    操作類型指操作Modbus的功能碼。
    說明 其中:
    • 線圈狀態:讀取時統一使用0x01功能碼。寫入時支援使用單個寫入功能碼0x05,或多個寫入功能碼0x0F
    • 保持寄存器:讀取時統一使用0x03功能碼,寫入時支援使用單個寫入功能碼0x06,或多個寫入功能碼0x10
      • 寫入時選擇0x06未經處理資料類型參數下只可選擇int16或者uint16。選擇其它資料類型時,上報屬性資料會報錯。
      • 寫入時選擇0x10未經處理資料類型參數下所有資料類型都可選。
    • 離散輸入:讀取時統一使用0x02功能碼,該類型不支援寫入。
    • 輸入寄存器:讀取時統一使用0x04功能碼,該類型不支援寫入。

    Modbus協議相關規範,請參見GB/T 19582.1-2008GB/T 19582.2-2008GB/T 19582.3-2008

    寄存器地址填寫十六進位,以0x開頭。

    根據您自己裝置的屬性地址設定寄存器地址。例如,要調試溫度屬性,您裝置的溫度屬性地址為1,則寄存器地址可設定為0x1。

    未經處理資料類型如採集的溫度值的資料類型為浮點型。
    取值範圍取值範圍指的是未經處理資料經過縮放因子處理之後的取值範圍,超出取值範圍的資料會被丟棄。
    交換寄存器內高低位元組是否把寄存器內16位元據的前後8個bits互換。此處設定為互換true
    交換寄存器順序是否把未經處理資料32位元據的bits互換。此處設定為不互換false
    縮放因子指縮放係數,如採集的值為100, 但真實的值為10,因此需要縮放10倍,故縮放因子填寫0.1即可。如放大10倍(即真實的值為1000),則放大因子為10。
    資料上報方式有兩種資料上報方式。
    • 按時上報:選擇按時上報後,根據步驟9中為子裝置設定的資料擷取間隔,採集資料並上報。
    • 變更上報:採集後的值發生變化後才會上報。
  7. 返回執行個體詳情頁面,添加Modbus裝置。
    Modbus產品添加裝置_專有雲
  8. 將建立的Modbus裝置分配到邊緣執行個體。
  9. 分配裝置到邊緣執行個體後,單擊裝置名稱對應操作欄中的裝置配置,通過關聯通道,關聯裝置與Modbus驅動。
    裝置配置
    表 2. 參數說明
    參數描述
    關聯通道選擇配置驅動步驟2中已建立的通道。
    從站號從站號是Modbus裝置標識資訊,在同一個通道中是唯一的。
    資料擷取間隔Modbus協議是半雙工協議,由網關主動請求資料,因此需要指定對資料點的採集間隔時間。單位為毫秒。
    說明 單個屬性點的採集耗時時間大概為60毫秒(ms),則採集間隔的計算方式為:
    採集耗時時間(60 ms) * 該通道的所有屬性點個數
    例如,當前Modbus匯流排通道上有10個裝置,且每個裝置有10個屬性點,即採集間隔時間應大於等於6000 ms(60 ms * 10 * 10 = 6000 ms),這樣才能保證每個屬性點能正常上報。

四、部署邊緣執行個體

  1. (可選)在部署執行個體前,可以使用Modbus調試工具,測試網關能否串連該Modbus裝置,同時也可以測試Modbus裝置所屬產品的物模型是否配置正確。
  2. 執行個體詳情頁面,單擊右上方部署,部署邊緣執行個體。

常見問題

Modbus官方驅動上報訊息到雲端時,是按照裝置維度上報,還是屬性維度上報?

答:Modbus官方驅動在每個採集周期內,按照裝置維度進行採集和上報資料。例如,1個Modbus裝置有100個屬性,資料擷取間隔為5秒,那麼Modbus驅動每5秒上報雲端1條訊息(因為是1個裝置)。