Modbus協議分析.ppt_第1頁
Modbus協議分析.ppt_第2頁
Modbus協議分析.ppt_第3頁
Modbus協議分析.ppt_第4頁
Modbus協議分析.ppt_第5頁
免費預覽已結束,剩余40頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

MODBUS協議,主要內容,概述Modbus應用協議規范Modbus協議在串行鏈路上的實現,概述,1979年Modicon公司(現Schneider的一部分)提出的ModbusModbus最初作為工業串行鏈路的事實標準1997年Schneider電氣在TCP/IP上實現Modbus協議2004年Modbus作為我國國家標準,Modbus技術規范組成,Modbus應用協議規范Modbus協議在串行鏈路上的實現指南Modbus協議在TCP/IP上的實現指南Modbus標準技術規范由以上三部分組成,本次我們學習前面兩個部分。,Modbus技術規范的關系,Modbus應用協議規范,協議簡介數據幀格式事務處理數據模型功能碼,Modbus通信棧,Modbus應用協議,Modbus是一種簡單客戶機/服務器應用協議客戶機能夠向服務器發送請求服務器分析請求,處理請求,向客戶機發送應答,通用Modbus幀結構協議數據單元(PDU),Modbus事務處理(無差錯),當服務器對客戶機響應時,它使用功能碼域來指示正常(無差錯)響應或者出現某種差錯(稱為異常響應)對于一個正常響應來說,服務器僅復制原始功能碼,Modbus事務處理(異常響應),對于異常響應,服務器將原始功能碼的最高有效位設置邏輯1后返回異常碼指示差錯類型,異常碼,Modbus事務處理,ModbusPDU長度,Modbus最初在串行鏈路上的實現(最大RS485ADU=256字節)限制了ModbusPDU的長度。因此,對串行鏈路通信來說,ModbusPDU=256-服務器地址(1字節)-CRC(2字節)253字節。從而:RS232/RS485ADU=253字節+服務器地址(1字節)+CRC(2字節)=256字節。TCPModbusADU=249字節+MBAP(7字節)=256字節。,ModbusPDU結構,Modbus請求PDUmb_req_pdu=function_code,request_data,function_code-1字節Modbus功能碼request_data-n字節Modbus響應PDUmb_rsp_pdu=function_code,response_data,function_code-1字節Modbus功能碼response_data-n字節Modbus異常響應PDUmb_excep_rsp_pdu=function_code,exception_code,function_code-1字節Modbus功能碼+0 x80exception_code1字節,Modbus數據模型,Modbus的數據模型是以一組具有不同特征的類型為基礎建立的四個基本類型為:,Modbus功能碼,有三類MODBUS功能碼。它們是:公共功能碼是較好地被定義的功能碼,保證是唯一的,MODBUS組織可改變的,公開證明的,具有可用的一致性測試,MBIETFRFC中證明的其中RFC為RequestforComments首字母的縮寫,它是IETF(互聯網工程任務推進組織)的一個無限制分發文檔。RFC被編號并且用編號來標識。包含已被定義的公共指配功能碼和未來使用的未指配保留供功能碼。用戶定義功能碼有兩個用戶定義功能碼的定義范圍,即65至72和十進制100至110。用戶沒有MODBUS組織的任何批準就可以選擇和實現一個功能碼不能保證被選功能碼的使用是唯一的。如果用戶要重新設置功能作為一個公共功能碼,那么用戶必須啟動RFC,以便將改變引入公共分類中,并且指配一個新的公共功能碼。保留功能碼一些公司對傳統產品通常使用的功能碼,并且對公共使用是無效的功能碼。,功能碼分類其中128-255為異常響應保留。,Modbus公共功能碼的定義,常用功能碼為0 x01,0 x02、0 x03、0 x04、0 x05、0 x06、0 x0F、0 x10,Modbus功能碼應用實例(1),讀線圈(0 x01),響應,*N寄存器的數量/8,如果余數不等于0,那么N=N+1錯誤,讀線圈實例,這是一個請求離散量輸出20-38的實例。將輸出27-20的狀態表示為十六進制字節值CD,或二進制11001101。輸出27是這個字節的MSB,輸出20是LSB。通常,將一個字節內的比特表示為MSB位于左側,LSB位于右側。第一字節的輸出從左至右為27至20。下一個字節的輸出從左到右為35至28。當串行發射比特時,從LSB向MSB傳輸:20.27、28.35等等。在最后的數據字節中,將輸出狀態38-36表示為十六進制字節值05,或二進制00000101。輸出38是左側第六個比特位置,輸出36是這個字節的LSB。用零填充五個剩余高位比特。,Modbus功能碼應用實例(2),讀離散量輸入(0 x02),讀離散量輸入實例,這是一個請求讀取離散量輸入197-128的實例。將離散量輸入狀態204-197表示為十六進制字節值AC,或二進制10101100。輸入204是這個字節的MSB,輸入197是這個字節的LSB。將離散量輸入狀態218-213表示為十六進制字節值35,或二進制00110101。輸入218位于左側第3比特,輸入213是LSB這與讀線圈功能是相似的,只是讀取的數據類型不同。,Modbus功能碼應用實例(3),讀保存寄存器(0 x03),讀保持寄存器實例,Modbus功能碼應用實例(4),讀輸入寄存器(0 x04),讀輸入寄存器實例,這與讀保存寄存器功能相似,只是數據類型不同。,Modbus功能碼應用實例(5),寫多個線圈(0 x0F)其中1代表邏輯ON,0代表邏輯OFF,寫多個線圈實例,Modbus功能碼應用實例(6),寫多個寄存器(0 x10),*N寄存器數量響應,錯誤,寫多個保持寄存器實例,其他功能碼與以上類似,如有需要詳細了解,可閱讀MODBUS協議。,Modbus協議在串行鏈路上的實現,主站/從站協議原理Modbus串行傳輸模式RTU模式Modbus串行傳輸模式ASCII模式,Modbus協議在串行鏈路上的實現模型,Modbus串行鏈路協議是一個主/從協議。該協議位于OSI模型的第二層。,位于OSI模型第7層的Modbus應用層報文傳輸協議,供了連接于總線或網絡的設備之間的客戶機/服務器通信。在Modbus串行鏈路上客戶機的功能由主節點提供而服務器功能由子節點實現。,Modbus主站/從站協議原理,Modbus串行鏈路協議是一個主-從協議。在同一時刻,只有一個主節點連接于總線,一個或多個子節點(最大編號為247)連接于同一個串行總線。Modbus通信總是由主節點發起。子節點在沒有收到來自主節點的請求時,從不會發送數據。子節點之間從不會互相通信。主節點在同一時刻只會發起一個Modbus事務處理。,Modbus通信模式,主節點以兩種模式對子節點發出Modbus請求:在單播模式,主節點以特定地址訪問某個子節點,子節點接到并處理完請求后,子節點向主節點返回一個報文(一個應答)。在這種模式,一個Modbus事務處理包含2個報文:一個來自主節點的請求,一個來自子節點的應答。每個子節點必須有唯一的地址(1到247),這樣才能區別于其它節點被獨立的尋址。在廣播模式,主節點向所有的子節點發送請求。對于主節點廣播的請求沒有應答返回。廣播請求一般用于寫命令。所有設備必須接受廣播模式的寫功能。地址0是專門用于表示廣播數據的。,串行鏈路上的Modbus幀結構,地址域只含有子節點地址,該地址必須在Modbus串行總線上唯一Modbus主節點沒有地址功能碼指明服務器要執行的動作,遵從Modbus協議規范錯誤檢驗域是對報文內容執行冗余校驗的計算結果。根據不同的傳輸模式(RTUorASCII)使用兩種不同的計算方法,CRC或者LRC,串行傳輸模式-RTU模式,當設備使用RTU(RemoteTerminalUnit)模式在Modbus串行鏈路通信,報文中每個8位字節含有兩個4位十六進制字符。這種模式的主要優點是較高的數據密度,在相同的波特率下比ASCII模式有更高的吞吐率。每個報文必須以連續的字符流傳送。RTU模式每個字節(11位)的格式為:編碼系統:8位二進制報文中每個8位字節含有兩個4位十六進制字符(09,AF)BitsperByte:1起始位8數據位,首先發送最低有效位1位作為奇偶校驗1停止位奇偶校驗中,偶校驗是默認的,其它模式(奇校驗,無校驗)也可以使用,在無校驗的模式下,有兩個停止位,串行傳輸模式-RTU模式,在RTU模式,報文幀由時長至少為3.5個字符時間的空閑間隔區分整個報文幀必須以連續的字符流發送。如果兩個字符之間的空閑間隔大于1.5個字符時間,則報文幀被認為不完整應該被接收節點丟棄,串行傳輸模式-RTU模式,RTU接收驅動程序的實現,由于t1.5和t3.5的定時,隱含著大量的對中斷的管理。在高通信速率下,這導致CPU負擔加重。因此,在通信速率等于或低于19200Bps時,這兩個定時必須嚴格遵守;對于波特率大于19200Bps的情形,應使用2個定時的固定值:建議的字符間超時時間(t1.5)為750s,幀間的超時時間(t1.5)為1.750ms。,串行傳輸模式-RTU模式,在RTU模式包含一個對全部報文內容執行的,基于循環冗余校驗(CRC-CyclicalRedundancyChecking)算法的錯誤檢驗域。CRC域檢驗整個報文的內容。不管報文有無奇偶校驗,均執行此檢驗。CRC包含由兩個8位字節組成的一個16位值。CRC為常用的CRC-16校驗方式,計算后,首先附加低字節,然后是高字節,串行傳輸模式-ASCII模式,在ASCII模式中,報文中的每個8位子節以兩個ASCII字符發送例:子節0X5B會被編碼為兩個字符:0 x35和0 x42(ASCII編碼0 x35=5,0 x42=B)由于一個子節需要兩個字符,此模式比RTU效率低ASCII模式每個字節(10位)的格式為:編碼系統:十六進制,ASCII字符0-9,A-F。報文中每個ASCII字符含有1個十六進制字符BitsperByte:1起始位7數據位,首先發送最低有效位1位作為奇偶校驗1停止位奇偶校驗中,偶校驗是默認的,其它模式(奇校驗,無校驗)也可以使用,在無校驗的模式下,有兩個停止位,串行傳輸模式-ASCII模式,ASCII模式下的報文幀格式如下:報文必須以“:”開始報文必須以“LF(0 x0D)CR(0 x0A)”結束數據用十六進制ASCII碼值表示使用LRC進行差錯校驗每個字符子節需要用兩個字符編碼。因此,為了確保ASCII模式和RTU模式在Modbus應用級兼容,ASCII數據域最大數據長度為(2x252)是RTU數據域(252)的兩

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論