首頁(yè) > 技術(shù)發(fā)展 > 基于C#實(shí)現手機APP遠程訪(fǎng)問(wèn)西門(mén)子PLC(附源碼)

基于C#實(shí)現手機APP遠程訪(fǎng)問(wèn)西門(mén)子PLC(附源碼)

時(shí)間:2020-06-25 來(lái)源:方正智芯 瀏覽:

隨著(zhù)5G時(shí)代的來(lái)臨,物聯(lián)網(wǎng)開(kāi)始加速盛行,慢慢地融入到我們的生活當中,萬(wàn)物互聯(lián)互通將不再只是紙上談兵。

現在各大物聯(lián)網(wǎng)平臺層出不窮,看似離我們很遙遠,其實(shí)只要我們敢于去研究,敢于去發(fā)現,萬(wàn)物互聯(lián),近在咫尺之間。

今天給大家介紹一下,作為一個(gè)普通的.NET開(kāi)發(fā)人員,如何不借助第三方的物聯(lián)網(wǎng)平臺,搭建一個(gè)簡(jiǎn)單實(shí)用的物聯(lián)網(wǎng)平臺框架。

 

物聯(lián)網(wǎng)框架

此物聯(lián)網(wǎng)框架是在上位機框架的基礎上,結合物聯(lián)網(wǎng)通信協(xié)議MQTT實(shí)現。上位機本身就集成有采集、歸檔及日志等功能,只需要在這個(gè)基礎上,連接MQTT服務(wù)器之后,并向指定的主題Topic中發(fā)布相關(guān)的數據,相關(guān)的WEB、APP只需要訂閱相應的主題,即可獲取到數據。

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

圖表 1整體軟件框架實(shí)現

從上圖可以看出,整體軟件基于MQTT協(xié)議搭建,依據此軟件框架搭建的MQTT物聯(lián)網(wǎng)拓撲圖如下圖所示:

圖表2MQTT物聯(lián)網(wǎng)平臺拓撲圖

 

框架實(shí)現

為了測試方便,這里選擇西門(mén)子S7-1200 PLC作為下位機,采用西門(mén)子S7進(jìn)行通信,上位機先與PLC進(jìn)行通信,同時(shí)連接MQTT服務(wù)器,并向指定主題發(fā)布數據。

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

圖表 3 xktComm下載

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

圖表 4 MQTT客戶(hù)端UI界面

3UI界面設計完成之后,進(jìn)行代碼的編寫(xiě),這里使用開(kāi)源的mqttmqttnet,仍然通過(guò)NuGet下載安裝一下,這里選擇版本為2.8.2,選擇不同的版本,使用上會(huì )有一些區別:

圖表 5 MQTTnet下載

4)先實(shí)現基本的MQTT連接服務(wù)器及斷開(kāi)連接:

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

6)確定并創(chuàng )建通信變量實(shí)體類(lèi)及集合:

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

表格 1通信變量列表

序號

變量名稱(chēng)

變量地址

變量類(lèi)型

1

出口壓力

DB100.DBD0

Float

2

入口壓力

DB100.DBD4

Float

3

出口溫度

DB100.DBD8

Float

4

入口溫度

DB100.DBD12

Float

按照這個(gè)結構,創(chuàng )建一個(gè)實(shí)體類(lèi),如下圖所示:

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

(8)基于xktComm.dll與西門(mén)子PLC之間建立連接:

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

(10)在云服務(wù)器端開(kāi)啟MQTT服務(wù)器:

圖表 6 MQTT服務(wù)器開(kāi)啟

(11)運行MQTT客戶(hù)端,連接服務(wù)器,并點(diǎn)擊開(kāi)始定時(shí):

圖表 7運行MQTT客戶(hù)端

(12)連接成功后,可以觀(guān)察到MQTT服務(wù)器中收到了來(lái)自MQTT客戶(hù)端發(fā)來(lái)的信息:

圖表 8 MQTT服務(wù)器接收消息

 

框架應用

當數據已經(jīng)上傳到MQTT服務(wù)器后,那么如果需要獲取這些數據,只需要開(kāi)發(fā)一個(gè)MQTT,并訂閱那個(gè)主題,這樣,MQTT服務(wù)器就會(huì )自動(dòng)將相關(guān)的信息推送到客戶(hù)端軟件中,可以先用MQTT.fx測試一下,MQTT.fx是一款基于Eclipse Paho,使用Java語(yǔ)言編寫(xiě)的MQTT客戶(hù)端工具,支持通過(guò)Topic訂閱和發(fā)布消息。打開(kāi)MQTT.fx,輸入正確的服務(wù)器地址、端口號、用戶(hù)及密碼,并訂閱主題thinger后,就可以實(shí)時(shí)收到服務(wù)器發(fā)送過(guò)來(lái)的數據了,如下圖所示:

圖表 9 MQTT.fx應用

與此同時(shí),我們也可以通過(guò)開(kāi)發(fā)相關(guān)的WEB網(wǎng)頁(yè)或者APP來(lái)獲取數據,下面是一個(gè)簡(jiǎn)易APP的數據展示:

圖表 10 TIA博途數據

圖表 11 APP數據展示

 

整體總結

本文主要是基于MQTT協(xié)議實(shí)現了本地PLC控制器數據上傳的過(guò)程?;诎⒗镌品?wù)器,你可以在任意地方訪(fǎng)問(wèn)到本地PLC的實(shí)時(shí)數據,實(shí)現數據的遠程上傳。本文主要針對的是電氣和工控人員,物聯(lián)網(wǎng)必然是未來(lái)發(fā)展的趨勢,建議所有的PLC工程師及電氣工程師,都應該掌握一門(mén)編程語(yǔ)言,也許現在用不到,但未來(lái)總會(huì )用得到。

版權:如無(wú)特殊注明,文章轉載自網(wǎng)絡(luò ),侵權請聯(lián)系cnmhg168#163.com刪除!文件均為網(wǎng)友上傳,僅供研究和學(xué)習使用,務(wù)必24小時(shí)內刪除。
相關(guān)推薦
欧美AAAAAA级午夜福利_国产福利写真片视频在线_91香蕉国产观看免费人人_莉莉精品国产免费手机影院