版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
幾種常見的上位機通信協(xié)議及設置方法
目錄
??上位機通訊協(xié)議有哪幾種.......................................................2
1.1.Modbus..........................................................................................................................2
1.1.1.Modbus是什么.......................................................2
??Modbus協(xié)議解析......................................................3
????Modbus實現(xiàn)..........................................................5
????筆記..................................................................6
????警告..................................................................7
????基于IP的Modbus實現(xiàn)..............................................7
1.2.Profibus.........................................................................................................................7
1.2.1.Profibus-DP簡介.....................................................7
??Profibus-DP物理層....................................................8
????智能電測表采用Profibus協(xié)議通訊.....................................9
????Profibus-DP協(xié)議通訊的儀表型號.......................................9
1.3.OPC(OLEforProcessControl)...................................................................................10
1.3.1.OPC是什么?.......................................................10
????OPC月艮務過程........................................................12
1.4.MQTT(MessageQueuingTelemetryTransport).......................................................13
1.4.1.概念、應用場景.....................................................13
????協(xié)議原理............................................................13
??????相關概念............................................................14
??????協(xié)議中的方法.......................................................15
??????mqtt數(shù)據(jù)包結構.....................................................15
??????任務建立主流程.....................................................98
??????Qcbud_IoT_Client結構體.............................................98
??????OT_MQTT_Construct()........................................................................................99
??????IOT_MQTT_Subscribe()....................................................................................108
??
??IOT_MQTT_Yieid。........................................................Ill
????IOT_MQTT_PuolisO->qctoud_iot_mqtt_pubHshQ........................................113
1.5.Ethernet/IP.................................................................................................................113
1.6.CAN(ControllerAreaNetwork).................................................................................114
第1頁共123頁
1.6.1,控制器局域網(wǎng)總線..................................................114
????CAN總線工作原理:................................................115
??????CAN總線物理層:..................................................115
??????CAN總線數(shù)據(jù)鏈路層:.............................................118
??????CAN總線延時分析:................................................120
2.上位機定義與功能...........................................................121
3.上位機通訊協(xié)議怎么設置....................................................123
上位機通訊協(xié)議有哪幾種
上位機通信協(xié)議可以根據(jù)不同的應用場景和需求選擇。以下是幾種常見的
上位機通信協(xié)議:
1.1.Modbus
1.1.1.Modbus是什么
Modbus是一種串行通信協(xié)議,廣泛應用于工業(yè)自動化領域。它定義了上位
機和下位機之間的通信方式,包括數(shù)據(jù)傳輸格式、通信命令等。Modbus協(xié)議支
持多種物理層,如串口(ModbusRTU)、以太網(wǎng)(ModbusTCP)等。
基本上,Modbus是一種用于設備之間通信的應用層協(xié)議主要用于交換自
動化領域的典型數(shù)據(jù)。
在這個級別上,Modbus是一種無狀態(tài)的客戶端-服務器協(xié)議(例如,很像
HTTP),基于事務,它由請求(由客戶端發(fā)出)和響應(由服務器發(fā)出)組成。在通
常應用該協(xié)議的領域中,存在一個概念,即使用共享信號電纜的網(wǎng)絡上控制較
低級別通信行為的可能模式之一:主從。為了防止混淆,以下有向關系根據(jù)客
戶端?服務器范式描述了主從:
第2頁共123頁
Master
主站對應—>客廣端
Slave
從站對應-->服務端
畫翻Modbus協(xié)議解析
無狀態(tài)通信基于一個簡單的包,稱為協(xié)議數(shù)據(jù)單元(PDU)o協(xié)議規(guī)范定義
了三種類型的PDU:
請求PDU,包括:
指定功能的代碼(功能代碼,1字節(jié))
和功能特定數(shù)據(jù)(功能數(shù)據(jù),可變字節(jié)數(shù))
響應PDU,包括:
請求對應的功能碼(FunctionCode,1字節(jié))
和響應特定數(shù)據(jù)(響應數(shù)據(jù),可變字節(jié)數(shù))
異常響應PDU,包括:
請求對應的功能碼+0x80(128),(錯誤碼,1字節(jié))
以及指定異常的代碼(異常代碼,1字節(jié))
FuncbonFunction
CodeData
PDU(Request)
FunctionResponse
CodeData
PDU(Response)
ErrorException
CodeCode
PDU(ExceptionResponse)
通潮Modbus功能
每個功能都分配了一個特定的功能代碼。它們的范圍是1-127(十進制),因
為129(即1+128)-255(即為7+128)代表錯誤代碼的范圍。
功能碼是協(xié)議的一部分,功能碼就分為以下三類,一個是協(xié)議里規(guī)定好的
功能,用戶也可以白定義功能
Public
保證是唯一的,并指定公開記錄的明確定義的功能。這些由社區(qū)驗證并且
存在一致性測試。
第3頁共123頁
讀離散輸入
讀寫線圈
讀輸入寄存器
讀寫保持寄存器
User-Defined
可用于用戶定義的函數(shù),因此它們的代碼可能不是唯一的。該規(guī)范為用戶
定義的函數(shù)定義了代碼范圍65-72和100-110o
保留
這些目前被一些公司用于遺留產(chǎn)品,不能公開使用
函數(shù)的文檔包括:
函數(shù)的描述(即它的用途)、它的參數(shù)和返回值(包括可能的異常)。
分配的功能代碼
請求PDU
響應PDU
異常響應PDU
畫翻Modbus數(shù)據(jù)模型
Modbus的功能就是基于這些數(shù)據(jù)模型實現(xiàn)的
離散輸入
?類型
一位
?使用權
只讀
?視覺的
離散輸出(線圈)
?類型
一位
?使用權
讀寫
?視覺的
第4頁共123頁
lai
輸入寄存器
?類型
16位字
?使用權
只讀
?視覺的
保持寄存器(Register〕
?類型
16位字
?使用權
讀寫
?視覺的
II?18
國翻Modbus實現(xiàn)
畫翩串行Modbus實現(xiàn)
Modbus以異步串行網(wǎng)絡通信的實現(xiàn)形式開始了它的生命。應用層協(xié)議直
接在串行接口和串行通信標準之上運行。最常見的(通過電線)是:
RS232(EIA232):
參見RS232@維基百科
RS422:
請參閱EIA422@維基百科
RS485:
參見EIA485@維基百科**
RS232用「短距離點對點通信,EIA422同樣適用,它是RS232在工業(yè)環(huán)境
下的雙向擴展,也支持更遠的距離。
EIA485可用于多點通信(即多個設備連接到同一條信號電纜),采用主從模
式(一個主站和n個固定地址從站)。
第5頁共123頁
圖4顯示了可能的網(wǎng)絡設置。
為了啟用此設置的實際通信,該實現(xiàn)使用附加字段擴展了PDU,更好的說
法是,它將PDU包裝到一個帶有標頭和錯誤校驗和的包中(參見圖5)。結果包
由協(xié)議規(guī)范定義為應用程序數(shù)據(jù)單元(ADU),其最大包大小為256字節(jié)。
Error
HeaderPOU
Check
ADU(senal)
畫翻筆記
256字節(jié)的最大包大小限制適用于所有現(xiàn)有的Modbus協(xié)議實現(xiàn)(傳統(tǒng))!
頭部由地址字段(1個字節(jié))組成,尾部是整個包的錯誤校驗和,包括地址字
段(即頭部)。為了傳輸,Modbus消息(即ADU)被放入一個具有已知開始和結
束點的幀中,從而允許檢測消息的開始和結束,從而檢測部分消息。存在兩種
傳輸模式,它們的編碼、成幀和校驗和有所不同:
通潮ASCII碼
幀被編碼為每個字節(jié)兩個ASCH字符,代表字節(jié)的十六進制表示法(即字符
0-9、A-F)。錯誤校驗和由縱向冗余校驗(LRC;1字節(jié))表示,消息以冒號
0x3A)開頭,以回車符-換行符(“CRLF”,0x0D0A)結束。字符之間可能會出現(xiàn)1秒
的停頓。
畫:翻RTU
幀以二進制傳輸以實現(xiàn)更高的密度。錯誤校驗和由循環(huán)冗余校驗(16位
CRC:2字節(jié))表示,消息以至少3.5個字符時間的靜默間隔開始和結束。這最
容易實現(xiàn)為網(wǎng)絡上正在使用的波特率的字符時間的倍數(shù)。兩個字節(jié)之間可能發(fā)
生的最大暫停為1.5個字符時間。
jamod旨在支持兩種傳輸模式,使用基于mAPI的實現(xiàn)。
第6頁共123頁
倒翻警告
RTU實現(xiàn)僅支持Master端。它按照最大努力原則工作,這意味著它可能
無法在低延遲實時環(huán)境中以可靠的方式工作。
確實可以實現(xiàn)基于其他串行堆棧實現(xiàn)(即JavaCorr.mAPI實現(xiàn)的替代品)的
串行傳輸,例如SerialPortl:/products/se...).根據(jù)產(chǎn)品信息,
它支持大約20個平臺,并已成功用于在Java中實現(xiàn)兩種串行傳輸模式(僅限
Master,參見FieldTalk/Java,FocusEngineering的商業(yè)Master協(xié)設包)。
國!翻基于IP的Modbus實現(xiàn)
基于TCP/IP的Modbus協(xié)議實現(xiàn)(Modbus/TCP)最近已作為RFC草
案提交給lETFo它使用TCP/IP堆棧進行通信(注冊端口為502)并使用IP特
定報頭擴展PDU(參見圖6)o
可能的網(wǎng)絡設置不受規(guī)范的約束;可以建立多主系統(tǒng)或實現(xiàn)雙向通信(即同
時有主從節(jié)點)。但是,用戶應該清楚地意識到主/從模式的偏差會產(chǎn)生影響。
M8APFunctionFunction
HeaderCodeData
ADU(TCP)
IP特定報頭(在規(guī)范中稱為MBAP)長7個字節(jié),由以下字段組成:
用于交易配對的調用標識(2個字節(jié));以前稱為交易標識符
Modbus的協(xié)議標識符(2個字節(jié)),是0用于Modbus默認;為將來的擴展保
留
報文長度(2個字節(jié)),所有后面字節(jié)的字節(jié)計數(shù)
用于標識位于非TCP/IP網(wǎng)絡上的遠程單元的單元標識符(1個字節(jié))
1.2.Profibus
1.2.1.Profibus-DP簡介
Profibus是一種工業(yè)領域常用的通信協(xié)議,用于實現(xiàn)上位機和下位機之間的
數(shù)據(jù)交換。它支持多種通宿介質,如RS-485、光纖等,
Profibus是唯?集成H1(過程)和H2(工廠自動化)的現(xiàn)場總線解決方案,
是一種國際化的、開放的現(xiàn)場總線標準,它也是國際標準IEC61158中8種現(xiàn)
場總線之一。Profibus可以將數(shù)字自動化設備從低級(傳感器/執(zhí)行器)到中間級
執(zhí)行級(單元級)分散開來。根據(jù)應用特點和用戶不同的需要,Profibus提供了
第7頁共123頁
3種兼容版本通信協(xié)議:FMS、PA和DPo
Profibus-DP用于自動化系統(tǒng)中單元級控制設備與分布式I/O的通訊。
Profibus-DP使用第1層、第2層和用戶接口層、第3?7層未使用,這
種精簡的結構確保了高速數(shù)據(jù)傳輸。直接數(shù)據(jù)鏈路映像程序DDLM提供對第2
層的訪問。用戶接口規(guī)定了設備的應用功能、Profibus?DP系統(tǒng)和設備的行為特
性。Profibus-DP特別適合于PLC與現(xiàn)場分級式I/O設備之間的通訊。主站之
間的通訊為令牌方式,主站與從站之間為主從方式,以及這兩種方式的混合。
㈣翻Profibus-DP物理層
傳輸介質:PROFIBUS-DP傳輸技術采用的是RS485傳輸,其傳輸介質可以
選擇型式A和型式B兩種導線,A為屏蔽雙絞線,B為普通雙絞線。但在
EN50170標準中規(guī)定為型式A導線,型式A比型式B有較大的擴展長度,
見表1。
表I:LineALineB說明
電纜參數(shù)A里B型
特征阻抗(Q)135-165Q100730a
(f=3MHz?20MHz)(f>100kHz)
單位長度的電容<30pF/m<60pF/m
(PF/m)
回路電阻(Q/km)WUOC/km-
線芯截面枳(mm2)M34mm2(22AWG)20.22mnu二2勃屣為
傳輸距離:標準Profibus-DP支持以下傳輸速率:(單位:kbps)9.6、19.2、
31.25、45.45、93.75、187.5、500、1500、3000、6000、12000。每個DP從
站的輸入數(shù)據(jù)和輸出數(shù)據(jù)最大為244B,使用屏蔽雙絞電纜時最長通訊距離為
9.6km(需要增加中繼),使用光纜時最長為90kmo
Profibus-DP每段的電纜最大長度與傳輸速率有關,不同的介質,不同的波
特率,信號可傳輸?shù)木嚯x也不同,如表2所示。
表2,傳輸途率與距離關系喪
波特率kbps/s9.619.293.75187.550015003000600012000
(LineA)1200120012001000400200200100100
電纜長度m
(LineB)120012001200600200不推存微f奇前r亞嬤
電纜長度m
注意:該傳輸距離指不加重復器(中繼器)的距離。比外,該傳輸距離是理論
第8頁共123頁
值,實際傳輸距離也會受到現(xiàn)場環(huán)境的影響。
畫翻智能電測表采用Profibus協(xié)議通訊
Profibus總線上,定義B為“RS485+”,A為"RS485-”,接線時應請務必注意A、
B接線,否則會導致無法正常通訊。
profibusA-/RS485B/(綠)----------------------
profibusB+/RS485A/(紅)---------------------
BACOM
通訊瓦例號.A-。
注意:ACR或PZ系列可編程智能電測表采用Profibus協(xié)議通訊時,需閱
讀本文檔?!栋惭b使用說明書V1.D中通訊指南章節(jié)無效。具體細節(jié)在此不在
贅述,下載文章末尾附件,可以直接閱讀第二章節(jié)儀表的通訊配置。
典翻Profibus-DP協(xié)議通訊的儀表型號
畫翻PZ系列可編程智能電測表
型號例如:PZ96L-E4/CP,PZ80L-E4/CP等
K0.0001
\z0.000i
u—2J,J_】
打翻ACR系列網(wǎng)絡多功能電力儀表:
型號例如:ACR220EL/CP,ACR230ELH/CP,ACR320E/CP等
第9頁共123頁
畫翻APM系列模塊化網(wǎng)絡電力儀表
型號例如:APM800/MCP,APM801/MCP等
支持DB9接口或者RS485接口
除了多功能儀表外,安科瑞還生產(chǎn)銷售支持PROFIBUS、PR0F1NET通訊的
電動機保護器
1.3.OPCfOLEforProcessControl)
1.3.1.OPC是什么?
OPC是當前工業(yè)互聯(lián)常用的通訊技術,我們經(jīng)常會說OPC通訊協(xié)議,那OPC
是通訊協(xié)議嗎?嚴格地說,OPC不是通訊協(xié)議,而是一種通訊規(guī)范,是一種通
訊接口標準。
OPC是i種基于微軟的OLE(ObjectLinkingandEmbedding)技術的工業(yè)自
動化通信協(xié)議。它定義J'上位機和下位機之間的數(shù)據(jù)交換方式,實現(xiàn)了設備間
的互通性。
OPC是英文“OLEforProcessControl”的縮寫,是工業(yè)自動化領域中的一種
第10頁共123頁
工業(yè)通信標準。它通過定義一些在不同平臺上具有通用性的規(guī)范,實現(xiàn)J'各種
設備、不同制造廠商及不同代表的設備可互聯(lián)互通。
經(jīng)典OPC是第一代OPC技術,英文全稱為:OLEforProcessControl(>OLE
技術是基于微軟公司的C0M/DC0M技術,因此經(jīng)典OPC本質上是基于
COM/DCOM的過程控制技術。經(jīng)典OPC提供了一整套過程控制中數(shù)據(jù)交換的軟
件標準和接口,包括:
OPCDA(OPCDataAccess):OPC數(shù)據(jù)訪問接口,這是最常用到的接口,接
口定義了數(shù)據(jù)交換的規(guī)范.包括:過程值、更新時間、數(shù)據(jù)品質等信息。目前
OPCDA經(jīng)歷1.0版本(1997年)、2.0版本(2002年)、3.0版本(2003年)。
OPCAE(OPCAlarms&Events):OPC報警與事件接口,接口定義了報警、
事件消息、變量的狀態(tài)及如何管理。
OPCHDA(OPCHistoricalDataAccess):OPC歷史數(shù)據(jù)訪問接口,接口定義
了訪問及分析歷史數(shù)據(jù)的方法。
OPCXML-DA:XML數(shù)據(jù)訪問,脫離WindowsC0M/DC0M技術,提供基于
XML、SOAP、HTTP的數(shù)據(jù)交換。
OPCDX(Dataexchange):提供在OPC服務器之間交換數(shù)據(jù)的功能,該標準
的主要目的是為來自不同制造商的設備和程序之間的數(shù)據(jù)交換創(chuàng)建網(wǎng)關。
可以看出,OPC是一整套過程控制中數(shù)據(jù)交換的軟件標準和接口規(guī)范,定
義了服務器和客戶端雙方通訊接口的要求。以OPCDA為例。
第11頁共123頁
知乎@一袖徐江南
OPCServer必須提供OPCServer對象接口,OPCGroup對象接口,OPCItem
對象接口,OPCClient通過調用這些接口與OPC服務器實現(xiàn)數(shù)據(jù)交換,而不用去
關心通訊報文的語法、語義。
所以,嚴格地說,OPC不是通訊協(xié)議,是通訊規(guī)范。用形象的比喻來說,
OPC更像描述插頭、插座的規(guī)范,而通訊協(xié)議則更像是描述郵件如何傳輸,信
封如何封裝。
場翻OPC服務過程
首先,來看什么是通訊協(xié)議?通訊協(xié)議就是兩個(或多個)設備之間通信必須
要遵循的一種協(xié)議。通過通信信道互連起來的多個數(shù)據(jù)通信系統(tǒng),要實現(xiàn)協(xié)同
信息交換,它們之間必須具有共同的約定,約定信息在哪條通道間交流,什么
時間交流,交流什么信息,信息怎樣交流。這個約定就是通信協(xié)議。
不同的通信協(xié)議雖然具有不同的特點和功能,但它們都包含了三個基本要
素:
語法;定義了數(shù)據(jù)傳輸?shù)母袷胶徒Y構,以確保發(fā)送方和接收方都能正確地
解釋數(shù)據(jù)內容。
語義:定義J'數(shù)據(jù)的意義和目的,以確保通信雙方在數(shù)據(jù)傳輸過程中能夠
理解對方的意圖。
第12頁共123頁
定時:定義「數(shù)據(jù)的傳輸速率和時間,以確保通信的有效性和流暢性。
通信中的數(shù)據(jù)往往以數(shù)據(jù)包的形式進行傳送的,我們把這樣的一個數(shù)據(jù)包
稱作為一幀數(shù)據(jù)。比較可靠的通信協(xié)議往往包含有以下幾個組成部分:幀頭、
地址信息、數(shù)據(jù)類型、數(shù)據(jù)長度、數(shù)據(jù)塊、校驗碼、幀尾。這些組成部分構成
了語法,其中數(shù)據(jù)代表的意義就是語義。
比如:以下是Modbus協(xié)議讀取線圈的報文。
事芬/T辦議長度單元標識功能碼起始高起始低數(shù)量高數(shù)量低
0x000000000x00060x010x010x000x130x00OxlB
其中,報文格式就是言法,其語義為:讀取服務器1號從站輸出線圈,起
始地址為0x13=19,對應地址為00020,線圈數(shù)量為0xlB=27,即讀取1號從
站輸出線圈,地址從00020-00046,共27個線圈的狀態(tài)值。
1.4.MQTTfMessageQueuingTelemetryTransport)
1.4.1.概念、應用場景
MQTT是一種輕量級的消息傳輸協(xié)議,通常用于物聯(lián)網(wǎng)(IoT)領域。它采用
發(fā)布-訂閱機制,實現(xiàn)了高效可靠的上位機和下位機之間的數(shù)據(jù)傳輸。
MQTTfMessageQueuingTelemetryTransport,消息隊列遙測傳輸協(xié)議),
是一種基于發(fā)布/訂閱范式的“輕量級”消息協(xié)議,由IBM發(fā)布。
HoT設備要運作,就必須連接到互聯(lián)網(wǎng),設備才能相互協(xié)作,以及與后端
服務協(xié)同工作。而互聯(lián)網(wǎng)的基礎網(wǎng)絡協(xié)議是TCP/IP,MQTT協(xié)議是基于TCP/IP
協(xié)議棧而構建的,因此它三經(jīng)慢慢的已經(jīng)成為了IoT通訊的標準。
1MQTT可以被解釋為一種低開銷,低帶寬占用的即時通訊協(xié)議,可以用較
少的代碼和帶寬為遠程設備連接提供實時可靠的消息服務,它適用于硬件性能
低下的遠程設備以及網(wǎng)絡狀況糟糕的環(huán)境下,因此MQTT協(xié)議在IoT(Internet
ofthings,物聯(lián)網(wǎng)),小型設備應用,移動應用等方面有較廣泛的應用。
優(yōu)點:代碼量少,開銷低,帶寬占用小,即時通訊協(xié)議。
畫翻協(xié)議原理
實現(xiàn)方式:實現(xiàn)mqtt協(xié)議需要客戶端和服務器端通訊完成,在通訊中,
mqtt協(xié)議中有三種身份:發(fā)布者(publish),代理(broker)(服務器),訂閱者
(subscribe)。其中,消息的發(fā)布者和訂閱者都是客戶端。消息代理是服務器,
第13頁共123頁
消息發(fā)布者可以同時是訂閱者,傳輸過程如下如所示。
有別于傳統(tǒng)的客戶端/服務器通訊協(xié)議,MQTT協(xié)議并不是端到端的,消息
傳遞通過代理,包括會話(session)也不是建立在發(fā)布者和訂閱者之間,而是建
立在端和代理之間。代理解除了發(fā)布者和訂閱者之間的耦合。
除了發(fā)布者和訂閱者之間傳遞普通消息,代理還可以為發(fā)布者處理保留消
息和遺愿消息,并可以更改服務質量(QoS)等級。
畫翔相關概念
客戶端:
一個使用mqtt協(xié)議的應用程序或設備,它總是建立到服務器的網(wǎng)絡連接。
客戶端可以:
1.發(fā)布其他客戶端可能會訂閱的信息
2.訂閱其他客戶端的消息
3.退訂或刪除應用程序的消息
4.斷開與服務器的連接
服務器:
可以是一個應用程序或者一臺設備,它用于發(fā)布者和訂閱者之間,它可以:
1.接受來自客戶的網(wǎng)絡連接
2.接受客戶發(fā)布的應用消息
3.處理來自客戶端的訂閱和退訂請求
4.向訂閱的客戶轉發(fā)應用程序消息
主題:
連接到一個應用程序消息的標簽,該標簽與服務器的訂閱相匹配。服務器
會將消息發(fā)送給訂閱所匹配標簽的每個客戶端。
一個主題可以有多個級別,級別之間用斜杠字符分隔。例如,/world和
emq/emqtt/emqx是有效的主題。如騰訊云中訂閱的云端回復消息為
第14頁共123頁
"$thing/down/service/設備ID/設備名”
QoS(消息傳遞的服務質量水平):
服務質量,此標志表明此主題范圍內的消息傳送到客戶端所需的一致程度。
有三種取值:
1值0x00:不可靠,消息最多發(fā)送一次。如果當時客戶端不可用,則會丟
失該消息。
1佰0x01:消息應傳送至少1次。確保消息到達,但消息重復可能會發(fā)
生。
I值0x10:確保消息到達一次。這一級別可用于如下情況,在計費系統(tǒng)中,
消息重復或丟失會導致不正確的結果。
遺愿機制/遺囑機制:
使用LastWill和Testament特性通知有關各方客戶端異常中斷的機制。
1LastWill:即遺言機制,用于通知同一主題下的其他設備發(fā)送遺言的設備
已經(jīng)斷開了連接。
ITestament:遺囑機制,功能類似于LastWill
i恒翔協(xié)議中的方法
MQTT協(xié)議中定義了一些方法(也被稱為動作),表示對確定資源進行操作。
資源指服務器上的文件或輸出。主要方法有:
I(l)Connecto等待與服務器建立連接。
1(2)Disconnecto等待MQTT客戶端完成所做的工作,并與服務器斷開
TCP/IP會話。
1(3)Subscribeo等待完成訂閱。
1(4)UnSubscribeo等待服務器取消客戶端的一個或多個topics訂閱。
l(5)PublishoMQTT客戶端發(fā)送消息請求,發(fā)送完成后返回應用程序線程。
i現(xiàn)翻mqtt數(shù)據(jù)包結構
MQTT協(xié)議通過交換預定義的MQTT控制報文來通信。
一個mqtt數(shù)據(jù)包結構包括:固定頭部,可變頭部,消息體(payload)三部分
組成,mqtt數(shù)據(jù)包結構如下:
1.固定頭(Fixedheader)。存在于所有MQTT數(shù)據(jù)包中,表示數(shù)據(jù)包類型及
第15頁共123頁
數(shù)據(jù)包的分組類標識。
2.可變頭(Variableheader)。存在于部分MQTT數(shù)據(jù)包中,數(shù)據(jù)包類型決
定了可變頭是否存在及其具體內容。
3.消息體(Payload)。存在于部分MQTT數(shù)據(jù)包中,表示客戶端收到的具體
內容。只有CONNECT、SUBSCRIBE>SUBACK、UNSUBSCRIBE四種類型的消息
有Payload消息體:
1CONNECT,消息體內容主要是:客戶端的ClientID>訂閱的Topic、Message
以及用戶名和密碼。
1SUBSCRIBE,消息體內容是一系列的要訂閱的主題以及QoSo
1SUBACK,消息體內容是服務器對于SUBSCRIBE所申請的主題及QoS進行
確認和回復。
IUNSUBSCRIBE,消息體內容是要取消訂閱的主題。
數(shù)據(jù)包組成詳細描述:
數(shù)據(jù)包組成的詳細內容與數(shù)據(jù)包長度根據(jù)mqtt控制報文格式的不同而不
同。mqtt控制報文類型共有14種
表格2.1-控制報文的類型
第16頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
C0NNECT1客戶1客戶端到服務客戶端請求連接
客戶端到服務端
端到服務端客戶端客戶端請求連服務端
第17頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
端請求連接服務接服務端C0NNACK2服務
端C0NNACK2服C0NNACK2服務端到客戶端連接
第18頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
務端到客戶端連端到客戶端連接報文確認
接報文確認報文確認PUBLISH3兩個方
第19頁共123頁
名字值報文流動
方向描述
CONNECT1客戶
端到服務端客戶
端請求連接服務
端CONNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述CONNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端CONNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBCOMP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
PUBLISH3兩個PUBLISH3兩個向都允許發(fā)布消
方向都允許發(fā)布方向都允許發(fā)布息PUBACK4兩個
第20頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
消息PUBACK4兩消息PUBACK4兩方向都允許QoS1
個方向都允許個方向都允許消息發(fā)布收到確
第21頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
QoSl消息發(fā)布QoSl消息發(fā)布認PUBREC5兩個
收到確認收到確認方向都允許發(fā)布
第22頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
PUBREC5兩個方PUBREC5兩個方收到(保證交付第
向都允許發(fā)布收向都允許發(fā)布收一步)PUBREL6兩
第23頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
至"保證交付第一至叫保證交付第一個方向都允許發(fā)
步)PUBREL6兩步)PUBREL6兩布釋放(保證交付
第24頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
個方向都允許發(fā)個方向都允許發(fā)第二
布釋放(保證交付布釋放(保證交付步)PUBC0MP7兩
第25頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
第二第二個方向都允許QoS
步)PUBC0MP7兩步)PUBC0MP7兩2消息發(fā)布完成
第26頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
個方向都允許個方向都允許(保證交互第三
QoS2消息發(fā)布QoS2消息發(fā)布步)SUBSCRIBE8
第27頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
完成(保證交互第完成(保證交互第
第28頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
步)SUBSCRIBES步)SUBSCRIBE8
C0NNACK2服務2服務端到客戶服務端到客戶端連接報文確認
第29頁共123頁
名字值報文流動
方向描述
CONNECT1客戶
端到服務端客戶
端請求連接服務
端CONNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述CONNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端CONNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBCOMP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
端到客戶端連接端連接報文確認PUBLISH3兩個方
報文確認PUBLISH3兩個向都允許發(fā)布消
第30頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
個方向都允許發(fā)
布釋放(保證交付
第二
步)PUBC0MP7兩
個方向都允許
QoS2消息發(fā)布
完成(保證交互第
步)SUBSCRIBES
PUBLISH3兩個方向都允許發(fā)布息PUBACK4兩個
方向都允許發(fā)布消息PUBACK4兩方向都允許QoS1
第31頁共123頁
名字值報文流動
方向描述
C0NNECT1客戶
端到服務端客戶
端請求連接服務
端C0NNACK2服
務端到客戶端連
接報文確認
PUBLISH3兩個
方向都允許發(fā)布
消息PUBACK4兩
個方向都允許報文流動方向描
QoSl消息發(fā)布述C0NNECT1客
收到確認值報文流動方向戶端到服務端客描述C0NNECT1
PUBREC5兩個方戶端請求連接服
向都允許發(fā)布收務端C0NNACK2
到(保證交付第一
步)PUBREL6兩
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 青島理工大學《舞臺表演藝術與實踐(四)》2023-2024學年第一學期期末試卷
- 青島科技大學《電氣控制與PC技術》2023-2024學年第一學期期末試卷
- 事業(yè)單位財務管理中的道德與法律責任
- 數(shù)字電路時課程設計
- 成形車刀課程設計32號
- 研究生考試考研經(jīng)濟類綜合能力(396)試卷及解答參考(2024年)
- 華南理工大學課程設計
- 農(nóng)業(yè)休閑旅游示范區(qū)建設方案
- 幼兒園大班名著課程設計
- 2023年芯類產(chǎn)品項目籌資方案
- 三星 SHS P718 指紋鎖使用說明書
- 制鹽蒸發(fā)系統(tǒng)試壓方案
- 部編本語文四年級上冊全冊單元整理與復習課件
- 果園質量管理體系(匯編)
- 第1章-配置Web服務器-課件
- CQI-12特殊過程:涂裝系統(tǒng)評估表(中文第三版)
- 華為財務分析報告華為財務分析報告八篇
- 《公共倫理學》課程教學大綱
- 計調業(yè)務操作流程
- “四議兩公開”模板范文(精選6篇)
- 四年級數(shù)學(上冊)培優(yōu)輔差
評論
0/150
提交評論