【必學技能】自己動手——基於C#實現手機APP遠程訪問西門子PLC(附源碼)


掃一掃

關注我們

對於文中涉及的MQTT服務器及MQTT客戶端的源碼,大家可以點擊上方公眾號,關注后發送關鍵詞:MQTT通信源碼

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

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

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

一、物聯網框架

此物聯網框架是在上位機框架的基礎上,結合物聯網通信協議MQTT實現。上位機本身就集成有采集、歸檔及日志等功能,只需要在這個基礎上,連接MQTT服務器之后,並向指定的主題Topic中發布相關的數據,相關的WEBAPP只需要訂閱相應的主題,即可獲取到數據。

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

圖表 1 整體軟件框架實現

 

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

圖表 2 MQTT物聯網平台拓撲圖

 

二、框架實現

為了測試方便,這里選擇西門子S7-1200 PLC作為下位機,采用西門子S7進行通信,上位機先與PLC進行通信,同時連接MQTT服務器,並向指定主題發布數據。

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

圖表 3 xktComm下載

 

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

圖表 4 MQTT客戶端UI界面

 

3UI界面設計完成之后,進行代碼的編寫,這里使用開源的mqttmqttnet,仍然通過NuGet下載安裝一下,這里選擇版本為2.8.2,選擇不同的版本,使用上會有一些區別:

圖表 5 MQTTnet下載

 

4)先實現基本的MQTT連接服務器及斷開連接:

(5)基於委托創建日志處理對象及方法體:

  

 

(6)確定並創建通信變量實體類及集合:

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

 

表格 1通信變量列表

 

 

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

 

 

 

 

    (7)Nuget添加Newtonsoft.Json,引入JSON轉換類,便於后續將對象轉換成JSON格式字符串進行傳輸。

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

 

 

    (9)通過定時器定時向指定的主題發布實時數據:

 

 

 

 

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

 

 

圖表 6 MQTT服務器開啟

 

 

 

    (11)運行MQTT客戶端,連接服務器,並點擊開始定時:

 

 

圖表 7 運行MQTT客戶端

 

 

 

    (12)連接成功后,可以觀察到MQTT服務器中收到了來自MQTT客戶端發來的信息:

 

 

圖表 8 MQTT服務器接收消息

 

 

 

框架應用

 

    當數據已經上傳到MQTT服務器后,那么如果需要獲取這些數據,只需要開發一個MQTT,並訂閱那個主題,這樣,MQTT服務器就會自動將相關的信息推送到客戶端軟件中,可以先用MQTT.fx測試一下,MQTT.fx是一款基於Eclipse Paho,使用Java語言編寫的MQTT客戶端工具,支持通過Topic訂閱和發布消息。打開MQTT.fx,輸入正確的服務器地址、端口號、用戶及密碼,並訂閱主題thinger后,就可以實時收到服務器發送過來的數據了,如下圖所示:

 

 

圖表 9 MQTT.fx應用

 

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

 

 

圖表 10 TIA博途數據

 

 

圖表 11 APP數據展示

 

 

 

整體總結

 

    本文主要是基於MQTT協議實現了本地PLC控制器數據上傳的過程。基於阿里雲服務器,你可以在任意地方訪問到本地PLC的實時數據,實現數據的遠程上傳。本文主要針對的是電氣和工控人員,物聯網必然是未來發展的趨勢,建議所有的PLC工程師及電氣工程師,都應該掌握一門編程語言,也許現在用不到,但未來總會用得到。

 

    對於文中涉及的MQTT服務器及MQTT客戶端的源碼,大家可以點擊上方公眾號,關注后發送關鍵詞:MQTT通信源碼

 

 

 

 

 

 

 

 

WinForm通用自動更新AutoUpdater項目實戰

 

 上位機開發之西門子PLC-S7通信實踐

 

 基於GDI+技術開發工業儀表盤控件

 

 上位機C#通過OPCUA和西門子PLC通信

 

 基於S7-PLCSIM Advanced搭建S7通信仿真環境

 

 基於C#實現本地數據上傳至雲服務器

 

 OPCUA+MQTT構建物聯網通用框架

 

 上位機開發之三菱Q系列PLC通信實踐

 

 深度剖析西門子PLC的開放式TCP通信

 

 上位機開發之單片機通信實踐

 

 

 

歡迎關注抖音

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM