基于C#實現手機APP遠程訪問西門子PLC(附源碼)
隨著5G時代的來臨,物聯網開始加速盛行,慢慢地融入到我們的生活當中,萬物互聯互通將不再只是紙上談兵。
現在各大物聯網平臺層出不窮,看似離我們很遙遠,其實只要我們敢于去研究,敢于去發(fā)現,萬物互聯,近在咫尺之間。

今天給大家介紹一下,作為一個普通的.NET開發(fā)人員,如何不借助第三方的物聯網平臺,搭建一個簡單實用的物聯網平臺框架。
一
物聯網框架
此物聯網框架是在上位機框架的基礎上,結合物聯網通信協議MQTT實現。上位機本身就集成有采集、歸檔及日志等功能,只需要在這個基礎上,連接MQTT服務器之后,并向指定的主題Topic中發(fā)布相關的數據,相關的WEB、APP只需要訂閱相應的主題,即可獲取到數據。
整體軟件框架如下圖示所示:

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

圖表2MQTT物聯網平臺拓撲圖
二
框架實現
為了測試方便,這里選擇西門子S7-1200 PLC作為下位機,采用西門子S7進行通信,上位機先與PLC進行通信,同時連接MQTT服務器,并向指定主題發(fā)布數據。
(1)首先創(chuàng)建一個新的Windows窗體應用,從NuGet上下載xktComm.dll:

圖表 3 xktComm下載
(2)開發(fā)UI界面開發(fā),按照功能設計如下圖所示:

圖表 4 MQTT客戶端UI界面
(3)UI界面設計完成之后,進行代碼的編寫,這里使用開源的mqtt庫mqttnet,仍然通過NuGet下載安裝一下,這里選擇版本為2.8.2,選擇不同的版本,使用上會有一些區(qū)別:

圖表 5 MQTTnet下載
(4)先實現基本的MQTT連接服務器及斷開連接:

(5)基于委托創(chuàng)建日志處理對象及方法體:

(6)確定并創(chuàng)建通信變量實體類及集合:
表格 1通信變量列表
|
序號 |
變量名稱 |
變量地址 |
變量類型 |
|
1 |
出口壓力 |
DB100.DBD0 |
Float |
|
2 |
入口壓力 |
DB100.DBD4 |
Float |
|
3 |
出口溫度 |
DB100.DBD8 |
Float |
|
4 |
入口溫度 |
DB100.DBD12 |
Float |
按照這個結構,創(chuàng)建一個實體類,如下圖所示:


(7)Nuget添加Newtonsoft.Json,引入JSON轉換類,便于后續(xù)將對象轉換成JSON格式字符串進行傳輸。
(8)基于xktComm.dll與西門子PLC之間建立連接:

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

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

圖表 6 MQTT服務器開啟
(11)運行MQTT客戶端,連接服務器,并點擊開始定時:

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

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

圖表 9 MQTT.fx應用
與此同時,我們也可以通過開發(fā)相關的WEB網頁或者APP來獲取數據,下面是一個簡易APP的數據展示:

圖表 10 TIA博途數據

圖表 11 APP數據展示
四
整體總結
本文主要是基于MQTT協議實現了本地PLC控制器數據上傳的過程。基于阿里云服務器,你可以在任意地方訪問到本地PLC的實時數據,實現數據的遠程上傳。本文主要針對的是電氣和工控人員,物聯網必然是未來發(fā)展的趨勢,建議所有的PLC工程師及電氣工程師,都應該掌握一門編程語言,也許現在用不到,但未來總會用得到。
-
神器:5秒鐘搞定贗電容k1擬合、繪圖、計算電容貢獻率 2020-06-25
-
化工設計之工程圖紙(這篇文章給你講全了) 2020-07-03
-
工具:贗電容k1Tool-v2.6解決擬合交叉問題 2020-06-25
-
斷續(xù)焊焊接符號 2021-10-14
-
板式塔設計核心:負荷性能圖(水力學圖) 2020-07-03
-
應急管理部已明確:臨時性登高作業(yè)屬于特種作業(yè)!需要取證 2021-10-18
-
PDMS12.1sp4安裝教程 2020-07-03
-
話說LED燈的利用系數 2020-07-04
-
一張圖講清楚斷路器的工作原理 2020-07-10
-
引起管道振動的主要原因及消振措施 2020-12-06
