- MQTT的協議網路
採用機器專家協議的OPC UA、NVL,利用機器之間的雙向交換改善機器互動。
以前通常都需要在控制器之外加上一個協議轉換閘道器,然後透過閘道器來和雲平臺連線,現在用了M262之後,就可以直接和雲平臺連結,少了閘道器。這樣就輕鬆打通了IT和OT之間的通道,實現遠端監測,分析和預防性維護等IIoT的熱點應用,與雲平臺連線的網路示意圖 如圖1-1所示。
圖1-1 與雲平臺連線的網路示意圖
- M262的MQTT的雲應用的網路
M262可以連線到第3方雲平臺【阿里雲】進行物聯網的通訊,並且不需要閘道器進行中轉,將網線連線到路由器進行連線,M262的MQTT雲應用的網路架構如圖1-2所示。
圖1-2 M262的MQTT雲應用的網路架構
- 阿里雲物聯網的開發流程
透過M262連線到阿里雲,建議採用以下流程做阿里雲的開發:
- 註冊阿里雲的賬號、密碼,完成手機的繫結和賬號的實名。開通物聯網,物聯網開通連結如下。 https://www.aliyun.com/product/iot?spm=a2c4g.11186623.2.17.115a437bAljkTi建立產品
建立產品是物聯網使用的第一步,產品是裝置的集合,通常是一組具有相同功能定義的裝置集合。例如產品指同一個型號的產品,裝置就是該型號下的某個裝置。
- 定義物模型
選擇裝置端確定哪些資料要上雲。
- 瞭解topic的定義和使用建立裝置
裝置端的開發包括M262的PLC網路設定、程式設計、程式的下載,M262上雲的除錯等內容。
- 監控運維時,除檢視實時監控資料、資料統計說明以外,真實裝置和虛擬裝置除錯也將在監控運維中進行。裝置管理
裝置管理包含了雲端開發、裝置分組、檔案管理、子裝置管理、服務端訂閱、資料解析等內容。
- 物聯網資料分析
資料分析是阿里云為物聯網開發者提供的裝置智慧分析服務,全鏈路覆蓋了裝置資料生成、管理(儲存)、清洗、分析及視覺化等環節。有效降低資料分析門檻,資料分析能夠助力物聯網的開發工作。
阿里雲物聯網裝置的開發流程如圖1-3所示。
圖1-3 阿里雲的開發流程圖
- M262上阿里雲的操作
根據MQTT的物聯網協議,為M262與阿里雲的資訊交換建立產品,並建立裝置等等操作,並詳細說明具體的詳細流程。
- 建立產品
建立產品是物聯網使用的第一步,產品是裝置的集合,通常是一組具有相同功能定義的裝置集合。例如產品指同一個型號的產品,裝置就是該型號下的某個裝置。
阿里雲的控制檯連結:https://iot.console.aliyun.com/lk/summary
在【裝置管理】下的【產品】選擇建立產品,如圖1-4所示。
圖1-4 建立產品
【所屬分類】選擇自定義裝置,【節點型別】選擇裝置,【是否接入閘道器】選擇否,【ID2認證】選擇為否,如圖1-5所示。
圖1-5 建立新產品
- 建立裝置
產品指某一類裝置,建立完產品後,需要為裝置建立身份。讀者可以建立單個裝置,也可以批次建立裝置,這裡選擇建立一個新裝置,如圖1-6所示。
圖1-6 建立新裝置
DeviceName是裝置名稱,裝置名稱在產品內必須是唯一的。裝置名稱長度為4~32個字元,可以包含英文字母、數字和特殊字元,包括連線號(-)、下劃線(_)、at符號(@)、點號(.)和英文冒號(:),設定的畫面如圖1-7所示。
圖1-7 新增裝置名稱
裝置建立成功後,將自動彈出檢視裝置證書對話方塊,裝置證書由裝置 ProductKey、DeviceName、和 DeviceSecret組成,是裝置與物聯網平臺進行通訊的重要身份認證,是後續M262建立使用者名稱和密碼的依據,必須妥善保管,可以在裝置列表中,單擊裝置對應的檢視按鈕,進入裝置詳情頁的【裝置資訊】下,檢視裝置資訊,如圖1-8所示。
圖1-8 檢視裝置資訊
- 為裝置建立物模型
物模型,簡稱TSL,即Thing Specification Language,是一個JSON格式的檔案。它是物理空間中的實體,如感測器、車載裝置、樓宇、工廠等在雲端的數字化表示,從屬性、服務和事件3個維度,分別描述了該實體是什麼,能做什麼,可以對外提供哪些資訊。使用者定義了這3個維度,即完成了產品功能的定義。
新增單個的物模型,即單個新增屬性、事件和服務,在這裡選擇M262中需要上傳到雲的內容。需要在左側的導航欄選擇【裝置管理】 > 【產品】。然後在在【產品】管理頁面產品列表中,單擊產品所對應的檢視操作按鈕。再單擊功能定義,先選擇【標準功能】的新增功能,再選擇【自定義功能】的新增功能,如圖1-9 所示。
圖1-9 新增功能的介面
在【編輯標準功能】頁面下的【屬性】下新增【環境溫度】,設定取值範圍為0~150,如圖1-10所示。
圖1-10 新增標準功能
新增擴充套件功能包括電機的實際轉速和實際電流,如圖1-11所示。
圖1-11 新增的擴充套件功能
在名稱為【阿里雲和M262MQTT專案】的【裝置樹】中將Ethernet 2設定為DHCP,並使用網線將PLC接入路由器的網口中,這樣PLC就可以連線到網際網路了。
M262使用MQTT的通訊協議有專門的功能塊庫MQTThandling,需要在庫管理器中呼叫這些庫,另外阿里雲通訊的資料格式採用的是JSON,因此也要新增FileFormatUtility工具庫,另外還要新增乙太網TCPUDP庫,SysMem和SysSem庫如圖1-12所示。
圖1-12 專案需要新增的庫
- 阿里雲的密碼設定
阿里雲的使用者名稱和密碼需要由密碼小工具來生成,下載連結:https://files.alicdn.com/tpsservice/88413c66e471bec826257781969d1bc7.zip?spm=a2c4g.11186623.2.21.348c7908rCF2mR&file=88413c66e471bec826257781969d1bc7.zip
解壓縮後,使用密碼工具生成密碼,根據裝置ProductKey、DeviceName、和 DeviceSecret計算密碼,需注意clientId直接輸入數字,不要將1|securemode=2,signmethod=hmacsha1|整體填入,如圖1-13所示。
圖1-13 設成密碼畫面
阿里雲相關的組態設定如下。
使用者名稱UserName,由裝置名DeviceName、符號(&)和產品ProductKey組成。
固定格式:${YourDeviceName}&${YourPrductKey}。
完整示例如:device&alxxxxxxxxxx。
阿里雲的服務地址是域名,但MQTT功能塊只支援IP地址,所以需要先進行域名解析;
阿里雲的域名格式:
${YourProductKey}.iot-as-mqtt.${region}.aliyuncs.com
在M262程式中呼叫FB_DNSClient塊進行解析,首先在GVL全域性變數中輸入閘道器的地址192.168.1.1和阿里雲伺服器的域名,如圖1-14所示。
圖1-14 在全域性變數中全域性變數和域名設定
Dns解析出來的伺服器地址為106.15.100.2,如圖1-15所示。
圖1-15 Dns分析的伺服器的IP地址
ClientID 即mqttClientId,用於MQTT的底層協議報文。
格式固定:${clientId}|securemode=3,signmethod=hmacsha1|。
完整示例:12345|securemode=3,signmethod=hmacsha1|。
其中,
- ${clientId}為裝置的ID資訊。可取任意值,長度在64字元以內。建議使用裝置的MAC地址或SN碼。
- securemode為安全模式,TCP直連模式設定為securemode=3,TLS直連為securemode=2。
- signmethod為演算法型別,支援hmacmd5和hmacsha1。
在Action ACT_connect中的ConnectionSetting的結構體中設定ClientID,連線保持時間,IP地址採用功能塊Dns解析的地址,介面固定為1883,然後設定阿里雲的使用者名稱和密碼。
在庫MqttHandling中的GPC的屬性變數ClientID最大長度中要進行修改,防止因clientId比較長導致ClientID不能被正常識別導致連不上伺服器。
物聯網平臺中,服務端和裝置端透過 Topic 來實現訊息通訊。Topic是針對裝置的概念,Topic類是針對產品的概念。產品的Topic類會自動對映到產品下的所有裝置中,生成用於訊息通訊的具體裝置Topic。
阿里雲採用的是Json格式的檔案資料,在Action Act_addString中採用Json相關的功能塊生成傳遞給雲的Json格式的字串,因為字串很長,回到主程式中,將傳送的最大資料設定到最大。
在Act_Subscribe中設定訂閱的Topic,在阿里雲上的Topic,設定釋出資訊。這樣就把裝置端和阿里雲的資料通路打通了,讀者還可以在此基礎上加入阿里雲與伺服器的連線和對手機資訊的推送,這都屬於IT工程師的工作範疇,這裡就不再說明了。
M262不僅可以透過MQTT和HTTP協議、JSON和TLS加密可以連線到其他施耐德電氣平臺或第3方雲平臺,還可以利用M262的API對IT功能的優勢加以充分利用,例如電子郵件收發,日曆、事件管理、社交網路互動和天氣資訊等。
