首頁>科技>

隨著5G時代的來臨,物聯網開始加速盛行,慢慢地融入到我們的生活當中,萬物互聯互通將不再只是紙上談兵。

現在各大物聯網平臺層出不窮,看似離我們很遙遠,其實只要我們敢於去研究,敢於去發現,萬物互聯,近在咫尺之間。

今天給大家介紹一下,作為一個普通的.NET開發人員,如何不借助第三方的物聯網平臺,搭建一個簡單實用的物聯網平臺框架。

一、物聯網框架

此物聯網框架是在上位機框架的基礎上,結合物聯網通訊協議MQTT實現。上位機本身就整合有采集、歸檔及日誌等功能,只需要在這個基礎上,連線MQTT伺服器之後,並向指定的主題Topic中釋出相關的資料,相關的WEB、APP只需要訂閱相應的主題,即可獲取到資料。

整體軟體框架如下圖示所示:

從上圖可以看出,整體軟體基於MQTT協議搭建,依據此軟體框架搭建的MQTT物聯網拓撲圖如下圖所示:

二、框架實現

為了測試方便,這裡選擇西門子S7-1200 PLC作為下位機,採用西門子S7進行通訊,上位機先與PLC進行通訊,同時連線MQTT伺服器,並向指定主題釋出資料。

(1)首先建立一個新的Windows窗體應用,從NuGet上下載xktComm.dll:

(2)開發UI介面開發,按照功能設計如下圖所示:

(3)UI介面設計完成之後,進行程式碼的編寫,這裡使用開源的mqtt庫mqttnet,仍然通過NuGet下載安裝一下,這裡選擇版本為2.8.2,選擇不同的版本,使用上會有一些區別:

(4)先實現基本的MQTT連線伺服器及斷開連線:

(5)基於委託建立日誌處理物件及方法體:

(6)確定並建立通訊變數實體類及集合:

實際開發過程中,這裡是基於CMSPro實現的,本案例用於測試,以讀取以下四個變數為例(實際應用時變數資料及結構可能要比這複雜),如下圖所示:

按照這個結構,建立一個實體類,如下圖所示:

(7)Nuget新增Newtonsoft.Json,引入JSON轉換類,便於後續將物件轉換成JSON格式字串進行傳輸。

(8)基於xktComm.dll與西門子PLC之間建立連線:

(9)通過定時器定時向指定的主題釋出實時資料:

(10)在雲伺服器端開啟MQTT伺服器:

(12)連線成功後,可以觀察到MQTT伺服器中收到了來自MQTT客戶端發來的資訊:

三、框架應用

當資料已經上傳到MQTT伺服器後,那麼如果需要獲取這些資料,只需要開發一個MQTT,並訂閱那個主題,這樣,MQTT伺服器就會自動將相關的資訊推送到客戶端軟體中,可以先用MQTT.fx測試一下,MQTT.fx是一款基於Eclipse Paho,使用Java語言編寫的MQTT客戶端工具,支援通過Topic訂閱和釋出訊息。開啟MQTT.fx,輸入正確的伺服器地址、埠號、使用者及密碼,並訂閱主題thinger後,就可以實時收到伺服器傳送過來的資料了,如下圖所示:

與此同時,我們也可以通過開發相關的WEB網頁或者APP來獲取資料,下面是一個簡易APP的資料展示:

四、整體總結

最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 中東電子錢包火熱,執御生態JollyPay什麼時候上線?