本篇為我之前文章《將PLC數(shù)據(jù)上傳至物聯(lián)網(wǎng)平臺(tái)進(jìn)行可視化顯示》???????的拓展,主要實(shí)現(xiàn)在可視化的同時(shí)在云端對(duì)變量進(jìn)行操控,在之前文章中提到過(guò)的一些操作不再詳細(xì)敘述,具體可查看上一篇文章及其前置文章。
注意事項(xiàng):
- PLC和運(yùn)行Node-Red的電腦須在同一網(wǎng)段。
- 運(yùn)行時(shí)請(qǐng)使用實(shí)體PLC,PLCSIM Advanced仿真軟件Node-Red可能無(wú)法連接。
- 博圖中創(chuàng)建相關(guān)數(shù)據(jù)DB塊時(shí),在塊屬性中,將”優(yōu)化的塊訪問(wèn)“復(fù)選框取消勾選。
- 博圖中編寫PLC程序時(shí)在PLC設(shè)置窗體,找到防護(hù)與安全目錄下,找到連接機(jī)制設(shè)置,將允許來(lái)自遠(yuǎn)程對(duì)象的Put/Get 通信訪問(wèn)勾選中。
具體流程:
一、編寫PLC處程序
- 新建PLC設(shè)置其與運(yùn)行Node-Red的電腦在同一網(wǎng)段。
- 在PLC屬性中允許來(lái)自遠(yuǎn)程對(duì)象的Put/Get 通信訪問(wèn)。
- 創(chuàng)建一個(gè)DB塊,并取消勾選其屬性中優(yōu)化塊的訪問(wèn)。
- 在塊中新建一個(gè)Bool型的變量,并對(duì)程序進(jìn)行編譯。
二、設(shè)置物聯(lián)網(wǎng)平臺(tái)(詳見之前的文章)
- 在阿里云物聯(lián)網(wǎng)平臺(tái)開通實(shí)例。
- 在設(shè)備管理中添加相關(guān)產(chǎn)品。
- 在設(shè)備管理中添加相關(guān)的產(chǎn)品設(shè)備。
- 在產(chǎn)品頁(yè)面的操作欄中點(diǎn)擊查看進(jìn)入設(shè)備詳細(xì)信息。
- 找到產(chǎn)品的功能定義并添加自定義功能(編輯草稿)。
- 創(chuàng)建一個(gè)功能名稱為啟動(dòng),標(biāo)識(shí)符為Start,數(shù)據(jù)類型為bool的屬性。
- 布爾值 0-關(guān) 1-開,讀寫類型為允許讀寫,確認(rèn)并保存。
- 再次以相同的方式創(chuàng)建一個(gè)狀態(tài)功能,標(biāo)識(shí)符為State,數(shù)據(jù)類型為bool的屬性。
- 創(chuàng)建完成后左下角點(diǎn)擊發(fā)布上線。
三、設(shè)置阿里云 IoT Studio
- 進(jìn)入項(xiàng)目管理處新建一個(gè)項(xiàng)目。
- 進(jìn)入創(chuàng)建好的項(xiàng)目,在產(chǎn)品處點(diǎn)擊關(guān)聯(lián)物聯(lián)網(wǎng)平臺(tái)產(chǎn)品。
- 在設(shè)備處點(diǎn)擊關(guān)聯(lián)之前在物聯(lián)網(wǎng)平臺(tái)創(chuàng)建好的設(shè)備。
- 進(jìn)入應(yīng)用開發(fā)新建一個(gè)移動(dòng)應(yīng)用。
- 在左側(cè)組件處拖出 基礎(chǔ)-指示燈。
- 點(diǎn)擊指示燈,右側(cè)樣式界面展示數(shù)據(jù)處配置數(shù)據(jù)源。
- 產(chǎn)品和指定設(shè)備選擇之前創(chuàng)建好的。
- 屬性處選擇之前創(chuàng)建的 狀態(tài)(Bool),此處由于設(shè)備沒(méi)有上傳過(guò)數(shù)據(jù),右下角的驗(yàn)證數(shù)據(jù)格式可能會(huì)錯(cuò)誤,忽略即可。
- 在左側(cè)組件處拖出 控制-按鈕。
- 點(diǎn)擊指示燈,右側(cè)交互界面新增交互。
- 事件選擇單擊,添加子動(dòng)作并選擇設(shè)置設(shè)備屬性。
- 設(shè)置設(shè)備屬性處選擇之前創(chuàng)建好的產(chǎn)品和指定設(shè)備,屬性選擇啟動(dòng),值選擇開。
? - 點(diǎn)擊右上角保存,再點(diǎn)擊右上角發(fā)布。
- 在界面左側(cè)應(yīng)用設(shè)置-域名管理處添加自己的域名或使用阿里云提供的域名,在瀏覽器處打開即可訪問(wèn)剛才做好的網(wǎng)頁(yè)。
四、配置Node-Red(詳見之前的文章)
- 拖出 s7 control 節(jié)點(diǎn)并根據(jù)之前的文章連接阿里云物聯(lián)網(wǎng)平臺(tái)。
- 在節(jié)點(diǎn)的PLC屬性處創(chuàng)建 DB1,B0 Bool 變量。
- 拖出 s7 in 節(jié)點(diǎn)并在其后連接 switch 節(jié)點(diǎn)進(jìn)行狀態(tài)判斷,配置如下圖所示。
- 在 switch 后分別接兩個(gè) templat 節(jié)點(diǎn),對(duì)上傳的數(shù)據(jù)進(jìn)行封裝,使阿里云能夠識(shí)別對(duì)應(yīng)屬性。
? - 之后將兩個(gè)節(jié)點(diǎn)都連接到同一個(gè) mqtt out 節(jié)點(diǎn),節(jié)點(diǎn)配置詳見之前文章。
- 節(jié)點(diǎn)的主題填寫
/sys/gwaexBTS8Wk/{設(shè)備名稱}/thing/event/property/post
,從阿里云物聯(lián)網(wǎng)設(shè)備管理的產(chǎn)品處 Topic 類列表中可以看到這是屬性上報(bào)的主題。
? - 拖出 mqtt in 節(jié)點(diǎn),主題填寫為
/sys/gwaexBTS8Wk/{設(shè)備名稱}/thing/service/property/set
,顯然這是屬性設(shè)置主題。 - 將接收到的信息再次交給 switch 判斷,此時(shí)我們只對(duì)打開狀態(tài)即狀態(tài)1進(jìn)行判斷,因此只將 switch 的一個(gè)輸出節(jié)點(diǎn)(符合條件時(shí))連接到 change 節(jié)點(diǎn),將 payload 設(shè)置為1。
? - 在 change 節(jié)點(diǎn)后連接一個(gè) s7 out 節(jié)點(diǎn),設(shè)置為對(duì) DB1,B0 進(jìn)行寫入。
- 再在 change 節(jié)點(diǎn)后創(chuàng)建一個(gè) template 節(jié)點(diǎn),對(duì)狀態(tài)信息進(jìn)行封裝(復(fù)位 Start)。
- 將封裝好的數(shù)據(jù)用 mqtt out 傳送給阿里云,主題依然為
/sys/gwaexBTS8Wk/{設(shè)備名稱}/thing/event/property/post
。 - 總的流程圖如下,點(diǎn)擊右上角部署:
五、結(jié)束
將程序下載入PLC,此時(shí)訪問(wèn)之前創(chuàng)建好的網(wǎng)頁(yè),可以看到指示燈為停止?fàn)顟B(tài),點(diǎn)擊按鈕后會(huì)將 Start 屬性設(shè)置為1,Node-Red 在接收到屬性改變后會(huì)對(duì)應(yīng)的將 PLC 內(nèi)的變量值置1,同時(shí)將云端的 Start 屬性復(fù)位。PLC 內(nèi)的變量置1后被檢測(cè)到,Node-Red將此狀態(tài)上傳到云端,State 屬性狀態(tài)相應(yīng)的被改變,于是達(dá)到指示燈狀態(tài)改變的效果。
若要將指示燈再次關(guān)閉即將PLC中的變量復(fù)位,可在PLC中寫相應(yīng)的程序,或在云端再次創(chuàng)建一個(gè) Stop 屬性,用同樣的邏輯即可實(shí)現(xiàn)。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-802868.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-802868.html
到了這里,關(guān)于將PLC數(shù)據(jù)上傳物聯(lián)網(wǎng)平臺(tái)并在云端進(jìn)行操控的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!