色猫咪av在线网址_91精品国产福利在线观看雪梨还会玩转热点_丁香花的视频免费观看_国产手机在线A∨免费视频_十八禁av无码免费网站APP_综合色一区二区亚洲_日韩精品小电影_漂亮人妻熟睡中被公侵犯_全新成人高清无码片_高级厕所偷窥白领美女嘘嘘

當(dāng)前位置: 首頁(yè) >應(yīng)用方案 >技術(shù)應(yīng)用 >

西門(mén)子PLC利用函數(shù)塊連接MQTT服務(wù)器發(fā)布消息教程

在之前文章中小編已經(jīng)介紹了西門(mén)子PLC如何接入阿里云MQTT服務(wù)器,這里使用飛燕平臺(tái)方便通過(guò)低代碼的開(kāi)發(fā)方式實(shí)現(xiàn)手機(jī)控制界面與Web網(wǎng)頁(yè)控制界面接入,使用該功能需要先對(duì)MQTT數(shù)據(jù)收發(fā)機(jī)制具有初步的認(rèn)知。

在通訊過(guò)程中,MQTT協(xié)議中有三種身份:發(fā)布者(Publish)、代理(Broker)(服務(wù)器)、訂閱者(Subscribe。其中,消息的發(fā)布者和訂閱者都是客戶(hù)端,消息代理是服務(wù)器,消息發(fā)布者可以同時(shí)是訂閱者

MQTT傳輸?shù)南⒎譃椋褐黝}(Topic)和負(fù)載(payload)兩部分:

1Topic,可以理解為消息的類(lèi)型,訂閱者訂閱(Subscribe)后,就會(huì)收到該主題的消息內(nèi)容(payload);

2payload,可以理解為消息的內(nèi)容,是指訂閱者具體要使用的內(nèi)容。


一、飛燕物聯(lián)網(wǎng)平臺(tái)配置

通過(guò)“功能定義”定義上報(bào)的數(shù)據(jù)點(diǎn)標(biāo)簽與數(shù)據(jù)點(diǎn)類(lèi)型,用于接收PLC上報(bào)數(shù)據(jù),使用飛燕平臺(tái)需要遵守飛燕規(guī)定的上報(bào)方式與數(shù)據(jù)格式,否則無(wú)法使用其他控件開(kāi)發(fā)可視化程序,具體規(guī)則詳情以阿里云官方提供的為準(zhǔn),規(guī)則有時(shí)會(huì)有細(xì)微的調(diào)整這里不重復(fù)。 1 PLC利用函數(shù)塊連接MQTT發(fā)布消息

小編這里就以上報(bào)溫度傳感器采集數(shù)據(jù)為例,可通過(guò)傳感器使用手冊(cè)查詢(xún)到他的采集范圍為-40℃到+120℃,PLC類(lèi)使用浮點(diǎn)型(REAL類(lèi)型)緩存該數(shù)據(jù),平臺(tái)配置如下:

2  PLC利用函數(shù)塊連接MQTT發(fā)布消息

點(diǎn)擊“確認(rèn)”即可。

二、上報(bào)數(shù)據(jù)格式分析

1、上報(bào)數(shù)據(jù)格式

通過(guò)阿里云提供的“物模型數(shù)據(jù)解析使用示例”可以查詢(xún)到上報(bào)阿里云的數(shù)據(jù)格式如下:

手冊(cè)地址:https://help.aliyun.com/document_detail/114621.html

{"method":"thing.event.property.post","id":"2241348","params":{"prop_float":1.25,"prop_int16":4658,"prop_bool":1},"version":"1.0"}

"params":{"prop_float":1.25,"prop_int16":4658,"prop_bool":1}為上報(bào)的數(shù)據(jù),其余的為一幀數(shù)據(jù)固有的包頭包尾,根據(jù)將要使用的上報(bào)屬性對(duì)應(yīng)調(diào)整報(bào)文數(shù)據(jù),本案例數(shù)據(jù)如下:

{"method":"thing.event.property.post","id":"2241348","params":{"temperature":31.5},"version":"1.0"}。

2、組合數(shù)據(jù)包

接下來(lái)就是通過(guò)PLC動(dòng)態(tài)組合該數(shù)據(jù)包,該數(shù)據(jù)包由固定部分和變化的溫度組成,JSON的報(bào)文為字符串類(lèi)型數(shù)據(jù),因此第一步應(yīng)當(dāng)將采集的溫度轉(zhuǎn)換為字符型數(shù)據(jù),利用功能塊VAL_STRG”進(jìn)行轉(zhuǎn)換,下圖為該功能塊的使用實(shí)例:

3 PLC利用函數(shù)塊連接MQTT發(fā)布消息

3、調(diào)整轉(zhuǎn)換格式

根據(jù)實(shí)際情況調(diào)整轉(zhuǎn)換格式,比如FORMAT”選擇16#0000(正數(shù)不需要符號(hào)的帶小數(shù)類(lèi)型),由于傳感器分度值最小為0.1因此PREC”和“P”配置為1,由于最長(zhǎng)字符串為120.0或者-40.0都是長(zhǎng)度不超過(guò)5的字符將SIZE”配置為5以上即可(不足的位數(shù)自動(dòng)填充空格,而空格不影響JSON數(shù)據(jù)的解析),如下圖所示:

4 PLC利用函數(shù)塊連接MQTT發(fā)布消息

還需要溫度字符串組合到params”屬性的"temperature":字段后面,因此還需要使用字符串插入功能塊INSERT”,官方提供的使用示例如下:

5 PLC利用函數(shù)塊連接MQTT發(fā)布消息

這個(gè)功能塊非常的簡(jiǎn)單,只需要配置兩個(gè)字符串一個(gè)插入位置,本案例由于只有一個(gè)數(shù)據(jù)點(diǎn)需要上報(bào),插入值就不通過(guò)動(dòng)態(tài)計(jì)算所得,直接使用固定值,如有需要可以通過(guò)FIND”功能塊查找字符串的位置結(jié)合其他的功能塊實(shí)現(xiàn)動(dòng)態(tài)調(diào)整,動(dòng)態(tài)組合可以只爭(zhēng)對(duì)變化數(shù)據(jù)進(jìn)行上報(bào)達(dá)到節(jié)省流量的目的,本章意在教會(huì)使用MQTT上報(bào)數(shù)據(jù),不易將程序復(fù)雜化,若有興趣可在實(shí)現(xiàn)上報(bào)功能后來(lái)優(yōu)化程序。

6 PLC利用函數(shù)塊連接MQTT發(fā)布消息

4、字符串轉(zhuǎn)數(shù)組

由于該MQTT連接例程發(fā)布消息是通過(guò)數(shù)組存儲(chǔ)緩存,因此需要將剛才轉(zhuǎn)換的字符串通過(guò)字符串轉(zhuǎn)數(shù)組功能塊存入發(fā)送緩存數(shù)組,官方提供的使用方法如下:

7 PLC利用函數(shù)塊連接MQTT發(fā)布消息

每次上報(bào)都需要完全覆蓋上一次的上報(bào)數(shù)據(jù),因此pChars”配置為0,將剛才轉(zhuǎn)換的字符串填入“Strg”,將MQTT發(fā)布緩存數(shù)組填入Chars”,將功能塊輸出的長(zhǎng)度存入MQTT發(fā)布數(shù)據(jù)長(zhǎng)度緩存區(qū),后續(xù)用于可變字符長(zhǎng)度計(jì)算(功能塊內(nèi)部調(diào)用,只需提供發(fā)送字符長(zhǎng)度即可),具體配置如下圖所示:

8 PLC利用函數(shù)塊連接MQTT發(fā)布消息

到這里基本完成了MQTT上報(bào)數(shù)據(jù)的全部分析過(guò)程。

三、PLC程序分析

“上報(bào)數(shù)據(jù)格式分析”基本對(duì)將要使用到的功能塊進(jìn)行了逐個(gè)講解,利用FB函數(shù)塊將上述功能塊串聯(lián)起來(lái),首先定義變量表(輸入變量、靜態(tài)變量、中間變量)。

輸入變量(Inputtemperature”,外部輸入溫度數(shù)據(jù)用于協(xié)議組包與數(shù)據(jù)上傳;

靜態(tài)變量(StaticStatic_1”,用于存儲(chǔ)協(xié)議報(bào)文的固定部分;

中間變量(Temptemp_post_data”,緩存過(guò)程中的上報(bào)數(shù)據(jù);

temp_to_str”,緩存數(shù)值轉(zhuǎn)字符的溫度數(shù)據(jù);

9 PLC利用函數(shù)塊連接MQTT發(fā)布消息

合并上述功能塊為FB函數(shù)塊,并在主函數(shù)中調(diào)用該函數(shù)塊。

10 PLC利用函數(shù)塊連接MQTT發(fā)布消息

四、數(shù)據(jù)上報(bào)與日志查詢(xún)

配置物模型的發(fā)布地址,可在設(shè)備詳情的Topic列表下查詢(xún)到物模型的訂閱發(fā)布地址;

11 PLC利用函數(shù)塊連接MQTT發(fā)布消息

配置MqttDb數(shù)據(jù)塊”的默認(rèn)發(fā)布與訂閱地址,配置發(fā)布等級(jí),這里使用0,該例程功能塊不支持等級(jí)2,加之阿里云物模型可能也不支持等級(jí)2,只能使用01

12 PLC利用函數(shù)塊連接MQTT發(fā)布消息

第一步進(jìn)入MqttDb數(shù)據(jù)塊”,第二步點(diǎn)擊“監(jiān)控”,小編這里已經(jīng)成功連接阿里云可以直接進(jìn)行數(shù)據(jù)發(fā)布,若沒(méi)有連接應(yīng)當(dāng)先觸發(fā)connect”變量,不知道怎么連接的可以回看之前發(fā)布的“西門(mén)子PLC利用函數(shù)塊連接MQTT服務(wù)器”,連接成功后“output”下的“status”會(huì)反饋16#7004表示連接成功;

13 PLC利用函數(shù)塊連接MQTT發(fā)布消息

給變量publish”一個(gè)上升沿信號(hào)即可觸發(fā)一次數(shù)據(jù)上報(bào),小編這里就通過(guò)在線(xiàn)監(jiān)控的方式實(shí)現(xiàn)手動(dòng)上報(bào),上報(bào)成功會(huì)輸出提升信息,如下圖所示:

14 PLC利用函數(shù)塊連接MQTT發(fā)布消息

通過(guò)云平臺(tái)查詢(xún)上報(bào)數(shù)據(jù)日志,如下圖所示:

15 PLC利用函數(shù)塊連接MQTT發(fā)布消息

也可以在“設(shè)備詳情”的“運(yùn)行狀態(tài)”下查詢(xún)上報(bào)數(shù)據(jù)曲線(xiàn),如下圖所示:

16 PLC利用函數(shù)塊連接MQTT發(fā)布消息

這里并未連接真實(shí)的傳感器進(jìn)行采集,因此可以方便對(duì)最大值和最小值進(jìn)行測(cè)試,可以看出極限值都能正確上報(bào)。


今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)和企業(yè)公眾號(hào)(微信號(hào):cdebyte進(jìn)行了解,也可以直接撥打400電話(huà)咨詢(xún)技術(shù)專(zhuān)員!



相關(guān)閱讀:

1、【教程】PLC利用函數(shù)塊連接MQTT訂閱消息(一)

2、【教程】PLC利用函數(shù)塊連接MQTT訂閱消息(二)

3、串口服務(wù)器快速接入MQTT3.1協(xié)議服務(wù)器鏈接配置教程

4、NB114單路串口服務(wù)器如何配置MQTT軟件教程

5、MQTT通信協(xié)議報(bào)文詳解



4000-330-990

https://www.wjx.cn/jq/84863372.aspx