伴隨著“工業4.0”、“中國制造2025”及“兩化融合”等戰略的推進,信息技術與工業控制技術深度融合,物聯網、邊緣計算、云計算、機器學習等新技術應用日趨廣泛,工業現場云邊端的數據傳遞便成為了關鍵。在眾多高效、實時、可靠的數據通信協議中,MQTT則是應用最廣泛的一種。
什么是MQTT呢?
MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議),該協議由IBM公司在1999年開發,主要為了在不可靠的網絡中實現可靠且輕量的消息傳輸,它被設計為極輕量級、基于發布/訂閱方式的消息傳輸協議,它是基于TCP/IP應用層的通信協議,它的主要優點在于以極少的代碼和有限的帶寬,為遠程設備提供實時可靠的消息服務。
MQTT如何工作的呢?
MQTT協議中有三種身份:發布者(Publisher)、Broker、訂閱者(Subscriber)。其中,消息的發布者和訂閱者都是客戶端,一個客戶端可以既是發布者又是訂閱者。不同的客戶端通過向Broker發布或訂閱相同主題的消息實現信息的傳遞。Broker僅是消息的中轉站, 它把接收的發布者發布的內容,發送給訂閱該主題的訂閱者,這么看來Broker就像是郵局,發布/訂閱的內容就像郵件,主題可以看成地址,消息就像我們要傳遞的信件內容。
通過發布/訂閱的方式,MQTT很容易實現雙向通信,很容易解決工業現場通過云平臺進行反向控制的痛點!
MQTT報文格式了解如何做到可靠且輕量?
MQTT的所有控制報文都包含固定報文頭(Fixed Header),有些控制報文包含可變報文頭(Variable Header)和有效負荷(Payload)。
消息格式:
固定報文頭 | 可變報文頭 | 有效負荷
1、固定報文頭包含兩部分,第一部分是第一個字節,主要用來表示控制報文類型和Qos(消息質量)等級;第二部分從第二個字節開始表示剩余報文長度,該長度是后面可變報文頭和有效負荷的總長度。
2、可變報文頭主要包含協議名、協議版本、連接標志、心跳間隔時間、連接返回碼、主題名等,這部分之所以稱為可變報文頭,是因為針對不同的控制報文類型,部分的長度、內容、含義都是不一樣的,主要是為了能輔助完成這14種控制報文類型。
3、有效負荷就是消息的主體,才是最終要傳遞的內容,只有以下幾種消息類型,會帶有效負荷:CONNECT、PUBLISH、SUBSCRIBE、SUBACK、UNSUBSCRIBE。
PLCnext融合MQTT
菲尼克斯PLCnext在物聯網應用中不僅原生支持Proficloud,結合MQTT增加應用的多樣性,以及對多平臺的兼容性,比如對Visu+、第三方SCADA、手機客戶端的通信等,方便快捷的實現遠程監控、參數設定、故障檢測等功能。
大家都知道PLCnext最大的特點就是支持高級語言編程,因此我們在對MQTT的應用上支持兩種配置方式:
1、在IEC61131標準中,可以直接調用MQTT功能塊,實現對Broker的連接和終止、發布和訂閱等功能,結合ST編程可以快速實現有效載荷的解析。該功能塊可以在PLCnext store中下載后,直接安裝庫文件后免費使用。
2、PLCnext支持多種高級語言編程,我們在GitHub發布了基于Paho MQTT C++ library開發的可以直接安裝在PLCnext上的ACF程序,PLCnext的控制程序通過GSD調用MQTT客戶端的數據。在GitHub上可以免費下載該庫文件,部署完成后客戶可以直接使用MQTT客戶端功能進行二次開發。
PLCnext MQTT應用工程案例
國內某石油鉆采設備廠商,需要通過云平臺對海上設備進行數據采集、參數設定、反向控制等遠程運維功能,海上鉆采設備一般都采用無線連接公網,但周邊無線基站信號一般都不穩定,這種不穩定的網絡環境且期望小流量的應用場景,使用MQTT完全可以解決。
最終,客戶選擇把MQTT Broker部署在云平臺,用菲尼克斯的PLCnext作為邊緣控制器,PLCnext對下監控現場設備,對上通過菲尼克斯4G路由建立網絡,通過PLCnext的MQTT客戶端功能實現現場設備的遠程運維。
PLCnext原生支持Proficloud,加上MQTT的加持,菲尼克斯可以提供完整的IIoT:工業物聯網解決方案!