在億佰特介紹了西門(mén)子PLC如何通過(guò)函數塊連接MQTT服務(wù)器和發(fā)布消息,前文為大家介紹如何通過(guò)函數與函數塊實(shí)現MQTT云消息的訂閱,介紹到了MQTT服務(wù)器下發(fā)數據分析部分,本文接著(zhù)講述PLC程序分析和數據下發(fā)測試。 PLC程序分析 每個(gè)變量的提取過(guò)程都是類(lèi)似的,我們可以將其封裝為函數塊方便多次調用,先創(chuàng )建FC函數塊,選擇LAD語(yǔ)言,如下圖: 先定義輸入變量: 如下: main_str:待解析字符串,云平臺下發(fā)的字符串; Compare_str:解析字段,需要從云平臺提取的有效數據標簽; outdata_type:數據類(lèi)型,解析后輸出的數據類(lèi)型,0(Uint)、1(Real)、2(String); 輸出變量如下: DONE:輸出解析狀態(tài),非零有效,為零代表輸入的“main_str”不包含“Compare_str”解析失; valid_value_int:解析的整形結果,非整形該輸出無(wú)效; valid_value_real:解析的浮點(diǎn)數結果,非浮點(diǎn)該輸出無(wú)效; valid_str:輸出的字符串,非字符串輸出無(wú)效; 還需要定義一些中間變量,主要用來(lái)存儲轉換所需要的條件和轉換的中間結果,就不再贅述。 上圖為判斷該輸入的待解析字符串是否存在解析字段,若有輸出位置信息,再將其轉換為相對偏移地址用于后續有效數據提取。 上圖為不同類(lèi)型數據調用不同的解析方法,上一章已經(jīng)介紹過(guò)原理了,LAD編程語(yǔ)言不太適合這種功能的實(shí)現,使用STL語(yǔ)言就要簡(jiǎn)潔的多,有機會(huì )再給大家介紹。 在創(chuàng )建一個(gè)FB(函數塊)將需要解析的字段放在一個(gè)函數塊內方便后續維護, 在飛燕平臺定義如下參數: 同樣的也需要定義一些輸出變量方便主程序將提取結果配置給對應設備,我這里只通過(guò)在線(xiàn)調試演示沒(méi)有正式設備,輸出變量定義如下: luminance:光照強度; luminance_set_en,是否修改,非零代表存在修改; 類(lèi)似方法定義剩余的兩個(gè)變量,如下圖所示: 先將Mqtt函數塊收到的云平臺下發(fā)數組轉換為字符串,用于其他步驟使用; 調用剛才創(chuàng )建的有效數據提取函數(get_server_srt_validdata),輸入需要解析的數據和字段(“l(fā)uminance” ![]() 在通過(guò)變量“l(fā)uminance_set_en“判斷數據點(diǎn)是否存在修改,若存在則將提取到的有效數據輸出,若不存在則不進(jìn)行輸出; 后面的“speed”與“DO1”采用相同的配置方法。 接下來(lái)就是在主程序中調用該函數塊實(shí)現MQTT訂閱消息的解析,第一步創(chuàng )建自動(dòng)訂閱功能,通過(guò)下圖方法,將在請求連接后的10s自動(dòng)進(jìn)行訂閱; 再調用解析函數塊; 四、數據下發(fā)測試 進(jìn)入設備詳情的在線(xiàn)調試界面選擇屬性調試,方法采用設置發(fā)送下列字符串; PLC成功解析數據; 下次為大家介紹云智能APP的制作。 億佰特人每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的官網(wǎng)http://www.ebyte.com/進(jìn)行了解,還有客服小姐姐在線(xiàn)答疑哦! |