這樣玩PLC,是不是有意思多了
近幾年,在工控自動化領(lǐng)域,物聯(lián)網(wǎng)必然是最熱門的話題之一。
然而,對于很多PLC工程師來說,物聯(lián)網(wǎng)似乎仍然是一個(gè)很遙遠(yuǎn)的概念。
今天,主要分享一下如何基于阿里云的物聯(lián)網(wǎng)平臺,實(shí)現(xiàn)PLC控制系統(tǒng)數(shù)據(jù)遠(yuǎn)程上云,這里以西門子1500PLC為例,其他品牌PLC開發(fā)思路是一樣的。
在這之前,我也會分享一些上位機(jī)的相關(guān)資料,有需要的朋友們可以自行領(lǐng)取。
添加老師微信,免費(fèi)領(lǐng)取全套上位機(jī)開發(fā)工具包+視頻資料
一、Iot平臺
1、Iot平臺選擇的是阿里云的物聯(lián)網(wǎng)平臺,阿里云物聯(lián)網(wǎng)平臺鏈接:https://www.aliyun.com/product/iot/iot_instc_public_cn
2、點(diǎn)擊進(jìn)入控制臺,并登錄阿里云賬號

3、選擇公共實(shí)例進(jìn)入,如果沒有開通,需要開通一下。
4、在設(shè)備管理 >> 產(chǎn)品 ,右側(cè)點(diǎn)擊創(chuàng)建產(chǎn)品,按照下圖進(jìn)行設(shè)置:

5、產(chǎn)品創(chuàng)建成功后,按照提示添加設(shè)備,點(diǎn)擊前往添加按鈕即可。

6、點(diǎn)擊添加設(shè)備按鈕,在彈出的窗體中,輸入DeviceName,名字可以自己定義,這里設(shè)置為S7-1500。

7、設(shè)備添加完成后,點(diǎn)擊設(shè)備詳情,可以進(jìn)入下列界面,我們可以看到相關(guān)的信息,會自動分配一個(gè)ProductKey,點(diǎn)擊查看,可以看到詳細(xì)信息,如下圖所示:

8、詳細(xì)信息包含ProductKey、DeviceName和DeviceSecret,阿里云稱之為三元組,這三個(gè)信息要注意保密,可以點(diǎn)擊一鍵復(fù)制,把這三個(gè)信息復(fù)制到記事本中,下一步會用到。

9、MQTT連接最終需要的是域名、用戶名、密碼之類的信息,所以我們需要將三元組轉(zhuǎn)換成我們需要的信息,這里使用一個(gè)在線轉(zhuǎn)換工具:https://www.nnhpiot.com/aliyunmqtt.html,輸入相關(guān)信息,其中timestamp和clientId可以自己定義,然后點(diǎn)擊Generate生成即可:

10、至此,一個(gè)阿里云的MQTT服務(wù)器設(shè)備就創(chuàng)建好了,我們需要進(jìn)行測試,這里采用MQTT工具——MQTT.fx,打開MQTT.fx,將生成的相關(guān)信息輸入進(jìn)去,然后點(diǎn)擊Connect:
11、刷新阿里云物聯(lián)網(wǎng)平臺,查看設(shè)備狀態(tài),設(shè)備狀態(tài)由未激活變成了在線,說明MQTT連接成功:
12、添加一個(gè)Topic主題,平臺默認(rèn)已經(jīng)有了一些Topic,所以可以使用現(xiàn)成的,也可以自己添加自定義Topic,如下圖所示:
二、PLC采集
當(dāng)我們準(zhǔn)備好MQTT服務(wù)器之后,如果要實(shí)現(xiàn)數(shù)據(jù)遠(yuǎn)程上傳,接下來就要實(shí)現(xiàn)PLC數(shù)據(jù)采集,針對西門子PLC,我們可以采用開源的通信庫http://S7.NET。
1、首先確定一下需要遠(yuǎn)程上傳的數(shù)據(jù) 本案例采集8組溫度傳感器和流量傳感器數(shù)據(jù),因此創(chuàng)建了16個(gè)浮點(diǎn)型變量,如下所示:
2、PLC連接及MQTT連接
這里主要涉及到與PLC的連接以及與MQTT服務(wù)器的連接,其中PLC連接采用http://S7.Net,MQTT連接采用MqttNet。

3、實(shí)現(xiàn)PLC數(shù)據(jù)讀取及解析及數(shù)據(jù)遠(yuǎn)傳
由于本案例數(shù)據(jù)是連續(xù)的64個(gè)字節(jié),并且都是浮點(diǎn)型數(shù)據(jù),因此直接讀取之后轉(zhuǎn)換成浮點(diǎn)數(shù)組,然后通過索引賦值即可。

三、上位機(jī)開發(fā)
1、上位機(jī)UI界面設(shè)計(jì)
上位機(jī)部分的UI界面設(shè)計(jì)主要是根據(jù)功能來做的,包括功能菜單、導(dǎo)航菜單及設(shè)備狀態(tài)、系統(tǒng)報(bào)警顯示,以及實(shí)時(shí)監(jiān)控界面。2、上位機(jī)監(jiān)控實(shí)現(xiàn)
運(yùn)行上位機(jī)監(jiān)控界面,可以看到上位機(jī)系統(tǒng)正確讀取到PLC數(shù)據(jù),并進(jìn)行實(shí)時(shí)顯示,同時(shí)上位機(jī)將數(shù)據(jù)遠(yuǎn)傳到阿里云物聯(lián)網(wǎng)平臺,我們設(shè)置的上傳周期為五秒。

四、平臺監(jiān)控
1、平臺數(shù)據(jù)監(jiān)控
在阿里云物聯(lián)網(wǎng)平臺的日志服務(wù)中,可以看到每隔五秒收到一組來自設(shè)備端的數(shù)據(jù),通過查看消息內(nèi)容判斷與PLC中的數(shù)據(jù)保持一致。

2、平臺數(shù)據(jù)處理
由于一組設(shè)備三元組信息只能支持一個(gè)MQTT連接,所以上傳到云端的數(shù)據(jù),是無法通過開啟其他MQTT客戶端再獲取的,如果想要獲取平臺數(shù)據(jù),有以下三種方案:
如果是實(shí)物模型數(shù)據(jù),可以直接通過調(diào)用云端api來獲取。
如果要實(shí)時(shí)訂閱,也可以使用amqp服務(wù)端訂閱。
如果要存儲,可以通過規(guī)則引擎流轉(zhuǎn)到想存儲的數(shù)據(jù)目的地。
為了便于大家更好地學(xué)習(xí)這個(gè)項(xiàng)目,避免踩坑,浪費(fèi)自己的寶貴時(shí)間,我的資料大家一定要記得領(lǐng)取,這都是我自己在學(xué)習(xí)過程中收集整理的實(shí)用的資料。
添加老師微信,免費(fèi)領(lǐng)取全套上位機(jī)開發(fā)工具包+視頻資料
五、寫在后面
近幾年, 隨著越來越多的設(shè)備開始加入IIoT 網(wǎng)絡(luò)(Industrial Internet of Things,工業(yè)物聯(lián)網(wǎng)簡稱IIoT),IT與OT之間的界限將逐漸消失,直到成為一個(gè)或相同的系統(tǒng)為止。
所以,越來越多的電氣工程師開始轉(zhuǎn)型上位機(jī)開發(fā)。因?yàn)樵谝延须姎饧寄艿幕A(chǔ)上,如果掌握了上位機(jī)開發(fā)技能,薪資達(dá)到20K,甚至30K,將會變得很容易。