•   
    •   
      •   
      •   
      •   
    •   
      •   
      •   
        •   
        •   
        •   
      •   
      •   
      •   
    •   
      •   
      •   
  •   
  •   
  •   

1.線上手冊:

1.1.關於 ICDT MQMO:

ICDT MQMO 為 元米科技 專為 MQTT xHMI Server 服務開發之免費 MQTT Client 端軟體,以提供取自 MODBUS RTU / MODBUS TCP 設備的數值發布到伺服器,或自伺服器訂閱資訊,以下達數值至 MODBUS RTU / MODBUS TCP 設備。由於是針對 MQTT xHMI Server 服務應用開發,為求 MQTT 端的設置能符合 MQTT xHMI Server 服務,並簡化設定參數,可能不適用於其他 MQTT Broker。然而對於 要將 MODBUS 設備快速連結至 MQTT xHMI Server 的使用者而言,MQMO 不失為最簡易的工具程式。

1.1.1.硬體需求:

■ CPU 建議為 2 GHz Dual-Core雙核以上產品
■ 2GB 以上 RAM
■ 64 GB 以上硬碟

1.1.2.軟體需求:

■ Windows 10 以上作業系統
■ Microsoft .NET Framework 4.8 或以上版本

1.1.3.關於 MQTT xHMI Server:

ICDT MQTT xHMI Server 方案是元米科技多客戶端的雲端物聯網伺服主機方案,產品定位為以有限的頻寬及伺服器效能盡可能提供多客戶端設備連線,以達到雲端網頁控制,趨勢記錄,警報監視,程序控制等功能。
伺服器具備 MQTT Broker 服務,提供 TCP 與 webscoket 方式連線,並且限定發佈或訂閱 已編輯 Tag 的監控點(內容限定為數值模式),並提供基於 HTTP 協議的 WEB 圖控功能( HTTPS選配),使用者可自行採用 xHMI 圖控專案工具軟體(基於 Windows 作業系統) 進行專案編輯並上傳
客戶端類比或數位監控點提供每點最多 10000 筆的歷史記錄(最快每分鐘紀錄一筆),以及警報監視功能(支援 Line Notify 或 Telegram bot 通知),並支援 DDC 可程式雲端運算功能(最快每秒運算一次)
伺服器主機可選擇使用 WINDOWS 10 x64 PC 或 Linux x64 (Ubuntu) PC 或 Linux ARM 控制器(Raspberry PI 4B 8G),甚至 Linux x64 雲端主機等
伺服器程式核心為 .NET 5.0 ,並使用 Microsoft.AspNetCore、Microsoft.Data.Sqlite、MQTTnet、MQTTnet.AspNetCore 等套件。採獨立佈署封裝,可直接執行,不須額外安裝環境
伺服器支援 MQTT TCP、 Webscoket、TLS Broker,HTTP 與 HTTPS Web Server,可採用 Subdomain name 或 Basic access authentication 方式辨識 客戶端帳戶以提供對應專案資料
客戶端網頁專案編輯與 DDC 程式編輯採用 基於 Windows 10 的 xHMI 專案編輯軟體
客戶端網頁瀏覽器可以是 Chrome、Firefox、Microsoft Edge 、Safari、Opera 等主流瀏覽器或 IOS、Android 手機平板瀏覽器,不須額外安裝套件
客戶端 MQTT 發佈(Publisher)、訂閱(Subscriber) 設備可以是 PC、樹莓派(Raspberry PI)、Arduino(例如 ESP8266、ESP32) 等 MQTT 客戶端設備
MQTT xHMI 伺服器方案目前提供客戶端免費試用服務,可免費提供 64 點的資料連線,

細節請參考 MQTT xHMI Server 雲端圖控免費方案計畫 http://www.icdt.com.tw/main/index.php/2013-07-09-05-19-03/292-icdtmqttxhmiserver

申請免費之 MQTT xHMI 客戶端,請加入 FB 討論群 https://www.facebook.com/groups/869131560365231

1.2.編輯模式:

新安裝程式未完成編輯前會自動進入編輯模式。
執行模式按下 Edit 編輯鍵可進入編輯模式。完成編輯後按下離開可回到執行模式。編輯模式可以改變頁面大小,執行模式則無法改變頁面大小。
完成編輯後,專案安裝路徑會出現 config.txt 檔案,為專案編輯資料檔。如將前述之專案編輯資料檔案屬性設定為"唯讀",則 Edit 編輯鍵 將消失無法,無法進入編輯模式。
編輯模式時應於 Broker 處輸入 MQTT 伺服器(Server)網址或 IP,預設為 icdt.com.tw,Port 為 MQTT 伺服器服務埠,預設為 1883。使用者帳號密碼依照申請的客戶端帳號(例如 xhmidemo)及密碼輸入即可。要顯示輸入的密碼文字,只要按下使用者圖示按鈕即可。
針對 MQTT xHMI server 的應用,連線時會採用 TCP 方式連接,並訂閱使用者名稱下的全部內容 (例如 xhmidemo/#)

1.2.1.增、刪與複製頁面:

MQMO 可以自行依照點的屬性分成不同的頁面。
按下 Add page 鍵可增加新的頁面
按下 Del page 鍵可刪除目前選定的頁面
按下 Edit page 鍵可重新編輯頁面名稱
按下 Copy page 鍵可複製目前選定的頁面成為新的頁面
拖曳頁面名稱文字處可改變頁面的前後順序
標準的 MQTT xHMI 服務為 64 點免費,因此一個頁面應該足夠儲存整個專案點數


1.2.2.各種元件:

MQMO 具備 Register、Coil、Label(標籤)、Split(分隔線)、Blank(空白)等多種元件,以提供使用者於編輯模式字行增減元件。
編輯新增元件可以利用右鍵的彈出選單或是直接以按鍵操作選擇的元件。也可以直接利用拖曳方式改變元件順序。

1.2.2.1.Register:

Register 元件可以選擇使用 Holding Register (40001~49999/400001~465536) 或 Input Register (30001~39999/300001~365536),其中 Holding Register 可以自定是否自 MQTT 訂閱, Input Register 則僅能發布到 MQTT (唯讀)。
Register 元件可以設定的參數有:

★ Tag Name(標籤名稱):設定連結 MQTT xHMI 專案的物件標籤名稱,必須與 xHMI 專案編輯器一致,此標籤名稱同時決定 MQTT 通訊 Topic 內容,例如 xhmidemo 專案的 temp_OA 標籤,則發布與訂閱的內容即為 xhmidemo/temp_OA

★TCP 連接:連接 MODBUS TCP Server 設備時,輸入連接的 IP (或 Domain) 與 Port 號(預設 502)



★RTU 連接:連接 MODBUS RTU Slave 設備時,輸入連接的電腦通訊埠,速率、停止位元、同位元等設定,相關設定參數必須與連接的 Slave 一致



★UID/Slave:設定連接設備的站號數值範圍 0~255

★Holding Reg / Input Reg:設定連接暫存器的類別,Holding Register (40001~49999/400001~465536) 或 Input Register (30001~39999/300001~365536)

★Publish Only:自 MODBUS 端讀取,內容改變時(或未改變達 1 分鐘)發布至 MQTT Server。Input Reg 只能選擇此項

★Subscribe Only:收到 MQTT 發布內容時寫出到 MODBUS 設備,不會自 MODBUS 讀取數值

★Subscribe & Publish :自 MODBUS 端讀取,內容改變時(或未改變達 1 分鐘)發布至 MQTT Server ;收到 MQTT 發布內容時寫出到 MODBUS 設備


★Address:暫存器地址,數值範圍 0~66535 對應常用 5 位/ 6 位編碼方式 Holding Register 40001~49999/400001~465536 或 Input Register 30001~39999/300001~365536

★Mode:具備 4種不同的數值模式,可依照實際格式選擇
● Unsigned:將單一指定地址暫存器以無符號整數方式對應至 0~65535
● Signed:將單一指定地址暫存器以有符號整數方式對應至 -32768~32767
● Float:將指定地址連續兩個暫存器以浮點數方式解碼

★倍率:為 Register 數值的顯示倍率,例如 0.1 則 Register 數值會被乘以 0.1。倍率設定同時會影響小數點顯示位數,例如倍率設定為 1.000 則顯示至小數點後三位)

1.2.2.2.Coil:

Coil 元件可以選擇使用 Coil(00001~09999/000001~065536) 或 Input (10001~19999/1000001~165536),其中 Coil
可以自定是否自 MQTT 訂閱, Input 則僅能發布到 MQTT (唯讀)。

★ Tag Name(標籤名稱):設定連結 MQTT xHMI 專案的物件標籤名稱,必須與 xHMI 專案編輯器一致,此標籤名稱同時決定 MQTT 通訊 Topic 內容,例如 xhmidemo 專案的 fan_OA 標籤,則發布與訂閱的內容即為 xhmidemo/fan_OA

★TCP 連接:連接 MODBUS TCP Server 設備時,輸入連接的 IP (或 Domain) 與 Port 號(預設 502)



★RTU 連接:連接 MODBUS RTU Slave 設備時,輸入連接的電腦通訊埠,速率、停止位元、同位元等設定,相關設定參數必須與連接的 Slave 一致



★UID/Slave:設定連接設備的站號數值範圍 0~255

★Coil / Input :設定連接點的類別,Coil(00001~09999/000001~065536) 或 Input (10001~19999/1000001~165536)

★Publish Only:自 MODBUS 端讀取,內容改變時(或未改變達 1 分鐘)發布至 MQTT Server。Input 只能選擇此項

★Subscribe Only:收到 MQTT 發布內容時寫出到 MODBUS 設備,不會自 MODBUS 讀取數值

★Subscribe & Publish :自 MODBUS 端讀取,內容改變時(或未改變達 1 分鐘)發布至 MQTT Server ;收到 MQTT 發布內容時寫出到 MODBUS 設備


★Address:暫存器地址,數值範圍 0~66535 對應常用 5 位/ 6 位編碼方式 Coil 00001~09999/000001~065536 或 Input 10001~19999/100001~165536

★On Text/Image:當 Coil/Input 狀態為 ON 時,對應的文字或圖片,如果輸入文字為圖片檔名,且該圖片儲存於安裝路徑中,則以圖片顯示,否則以文字顯示

★Off Text/Image:當 Coil/Input 狀態為 OFF 時,對應的文字或圖片,如果輸入文字為圖片檔名,且該圖片儲存於安裝路徑中,則以圖片顯示,否則以文字顯示

1.2.2.3.Label(標籤)、Split(分隔線)、Blank(空白):

Label(標籤):顯示文字標籤,可重新編輯文字內容
Split(分隔線):顯示分隔線
Blank(空白):用於填滿剩下空間
注意:匯出匯入功能僅適用於 Register 與 Coil,Label 與 Split 等無效

1.2.3.以彈出選單編輯元件:

於頁面空白處或移動至現有元件上方空白處按下右鍵會彈出選單



按下 Add 可以選擇要增加的元件類型
按下 Cut 可以將選擇的元件複製後刪除
按下 Copy 可以將選擇的元件複製
按下 Paste 可以貼上先前複製的元件
按下 Edit 可以編輯選擇的元件
按下 Export 可以將該頁匯出成 CSV 檔案,由 Excel 進行編輯。必須注意匯出匯入功能僅適用於 Register 與 Coil,Label 與 Split 等無效



按下 Import 可以匯入編輯好的 CSV 檔案。必須注意匯入動作會刪除現有頁面元件,如果 CSV 編輯內容有誤,將不會產生該行元件。匯出匯入時應先關閉編輯中的 Excel 檔案,以免發生錯誤


1.2.4.以按鍵編輯元件:

移動游標至需要編輯的元件上,元件顏色變深表示該元件已經被選擇,此時按下以下各按鍵可以進行快速操作:

★ Enter :編輯元件,適用於 Register、Coil、Label
★ Insert / + :增加將同類型元件,適用於全部類型
★ Ctrl-C:複製元件
★ Ctrl-V:貼上元件
★ Delete:刪除選擇的元件

1.2.5.離開編輯模式:

關閉編輯視窗或按下 Exit 鍵離開編輯模式以回到執行模式,此時如果有變更未儲存會加以提示儲存,否則所有變更將無效。
儲存時會在專案安裝路徑增加 config.txt 或 configs.txt 專案編輯資料檔。
如將前述之專案編輯資料檔案屬性設定為"唯讀",則執行模式 Edit 編輯鍵 將消失無法,無法進入編輯模式。

1.3.執行模式:

MQMO 執行模式按下 Play 可直接連結 MQTT xHMI Server,並依照編輯資料掃描 MODBUS 點與訂閱發布 MOQTT 資訊。如果需要除錯,可以開啟 Debug Console 視窗,以顯示通訊資訊。但必須留意, Console 視窗只有程式未運行前開始時才可以開啟,且關閉 Console 後程式也會關閉



執行過程中下方會出現提示訊息。正常讀取時會每秒鐘抽樣顯示傳送(TX)與接收(RX)封包內容,如果接收的內容為異常代碼(Exception Codes),會以紅色顯示,並將代碼內容顯示於文字處。如果讀取過程中連線異常會發出聲響在 10 秒後重新嘗試讀取。



按下 Edit 鍵可進入編輯模式,但如果將專案編輯資料檔案(config.txt)屬性設定為"唯讀",則 Edit 編輯鍵 將消失無法,無法進入編輯模式。

1.3.1.MQTT Client 端的動作:

執行時,MQMO 會依照 編輯時的使用者帳號密碼 以 TCP 協議向指定 Broker 伺服器登錄(MQTT xHMI server ),並訂閱使用者名稱下的全部內容 (例如 xhmidemo/#),Client ID 以帳號作為名稱開始(例如 xhmidemo12345678)以利 識別。
完成 MQTT xHMI server 登錄後會針對該頁所有勾選 MQTT to MODBUS 的元件發送詢問資訊 (例如 Topic "xhmidemo/temp_OA", payload "?"),使 MQTT xHMI server 發布目前的數值。
MQMO 收到 MQTT xHMI server 發布內容後會所有勾選 MQTT to MODBUS 的元件比對,Topic 符合者(例如專案為 xhmidemo 且 Tag Name 為 temp_OA,則 Topic 必須為 "xhmidemo/temp_OA") 寫出至對應的 MODBUS 點中

必須注意未勾選 MQTT to MODBUS 的元件就算收到符合 Topic 規則的資訊, 也不會寫出至 MODBUS 設備中

1.3.2.MODBUS 端的動作:

執行時,MQMO 每 5 秒一週期(每個 MODBUS 封包一個點)掃描未勾選 MQTT to MODBUS 的元件,如果有未回應則會暫停讀取,稍後再試。完成讀取後會比對數值是否改變,將有改變的點依照相同編碼規則的 Topic 發布到 MQTT xHMI Server ,如果資料將未改變,則仍將在 60 秒後發布

必須注意所有勾選 MQTT to MODBUS 的元件不會自 MODBUS 端讀取數值,因此就算 MODBUS 端數值改變,仍舊不會反映在MQMO 執行介面上

2.版權宣告:

本程式版權屬 元米科技有限公司(Intelligent Control Design & Technology Co., Ltd) 所有,未經授權不得重製或銷售本程式。
本程式僅供與本公司相關產品測試與驗證,未經授權用於商業用途本公司將不負損害賠償責任。

3.關於 ICDT (元米科技有限公司):

元米科技有限公司(Intelligent Control Design & Technology Co., Ltd) 成立於 2013 年 6 月。本工作室累積了超過十年的自動控制工程經驗與十年自動控制產品開發經驗,專注於 MODBUS、BACnet 等通訊協定產品開發。使用以低成本的 8 位元MCU 核心或 32 位元的高效能核心為客戶打照專屬的可程式控制系統。

元米科技有限公司以成熟的、低成本的整合方為客戶打造高價值、持續服務的可程式控制方案,人性化的操作介面,讓您自有品牌不再是夢想,更多的資訊請造訪網站: http://www.icdt.com.tw

4.關於本手冊:

本手冊適用於 ICDT MQMO 程式。
手冊版本 V1.01 版
完稿日期 2021/11/17
關於本程式有任何問題,請 E-mail 至 eric.icdt@msa.hinet.net 或至 元米科技 FB 專頁https://www.facebook.com/www.icdt.com.tw/ 留言詢問