国产精品一区在线观看你懂的,三级电影网站免费观看,日韩黄色网,大黄网站在线观看

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

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

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

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

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

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

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


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

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

小編這里就以上報溫度傳感器采集數(shù)據(jù)為例,可通過傳感器使用手冊查詢到他的采集范圍為-40℃到+120℃,PLC類使用浮點型(REAL類型)緩存該數(shù)據(jù),平臺配置如下:

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

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

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

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

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

手冊地址: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}為上報的數(shù)據(jù),其余的為一幀數(shù)據(jù)固有的包頭包尾,根據(jù)將要使用的上報屬性對應(yīng)調(diào)整報文數(shù)據(jù),本案例數(shù)據(jù)如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

三、PLC程序分析

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

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

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

中間變量(Temptemp_post_data”,緩存過程中的上報數(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ù)上報與日志查詢

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

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

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

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

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

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

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

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

通過云平臺查詢上報數(shù)據(jù)日志,如下圖所示:

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

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

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

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


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



相關(guān)閱讀:

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

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

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

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

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



點擊撥打: 億佰特官網(wǎng) 4000-330-990