在億佰特介紹了西門子PLC如何通過函數塊連接MQTT服務器和發布消息,前文為大家介紹如何通過函數與函數塊實現MQTT云消息的訂閱,介紹到了MQTT服務器下發數據分析部分,本文接著講述PLC程序分析和數據下發測試。
PLC程序分析
每個變量的提取過程都是類似的,我們可以將其封裝為函數塊方便多次調用,先創建FC函數塊,選擇LAD語言,如下圖:
先定義輸入變量:
如下:
main_str:待解析字符串,云平臺下發的字符串;
Compare_str:解析字段,需要從云平臺提取的有效數據標簽;
outdata_type:數據類型,解析后輸出的數據類型,0(Uint)、1(Real)、2(String);
輸出變量如下:
DONE:輸出解析狀態,非零有效,為零代表輸入的“main_str”不包含“Compare_str”解析失??;
valid_value_int:解析的整形結果,非整形該輸出無效;
valid_value_real:解析的浮點數結果,非浮點該輸出無效;
valid_str:輸出的字符串,非字符串輸出無效;
還需要定義一些中間變量,主要用來存儲轉換所需要的條件和轉換的中間結果,就不再贅述。
上圖為判斷該輸入的待解析字符串是否存在解析字段,若有輸出位置信息,再將其轉換為相對偏移地址用于后續有效數據提取。
上圖為不同類型數據調用不同的解析方法,上一章已經介紹過原理了,LAD編程語言不太適合這種功能的實現,使用STL語言就要簡潔的多,有機會再給大家介紹。
在創建一個FB(函數塊)將需要解析的字段放在一個函數塊內方便后續維護,
在飛燕平臺定義如下參數:
同樣的也需要定義一些輸出變量方便主程序將提取結果配置給對應設備,我這里只通過在線調試演示沒有正式設備,輸出變量定義如下:
luminance:光照強度;
luminance_set_en,是否修改,非零代表存在修改;
類似方法定義剩余的兩個變量,如下圖所示:
先將Mqtt函數塊收到的云平臺下發數組轉換為字符串,用于其他步驟使用;
調用剛才創建的有效數據提取函數(get_server_srt_validdata),輸入需要解析的數據和字段(“luminance”:)以及變量類型”0“;
在通過變量“luminance_set_en“判斷數據點是否存在修改,若存在則將提取到的有效數據輸出,若不存在則不進行輸出;
后面的“speed”與“DO1”采用相同的配置方法。
接下來就是在主程序中調用該函數塊實現MQTT訂閱消息的解析,第一步創建自動訂閱功能,通過下圖方法,將在請求連接后的10s自動進行訂閱;
再調用解析函數塊;
四、數據下發測試
進入設備詳情的在線調試界面選擇屬性調試,方法采用設置發送下列字符串;
PLC成功解析數據;
下次為大家介紹云智能APP的制作。
審核編輯黃宇
-
測試
+關注
關注
8文章
5360瀏覽量
126873 -
plc
+關注
關注
5014文章
13351瀏覽量
464487 -
MQTT
+關注
關注
5文章
653瀏覽量
22590
發布評論請先 登錄
相關推薦
評論