工業(yè)控制網(wǎng)絡(luò)(2013)15_第1頁
工業(yè)控制網(wǎng)絡(luò)(2013)15_第2頁
工業(yè)控制網(wǎng)絡(luò)(2013)15_第3頁
工業(yè)控制網(wǎng)絡(luò)(2013)15_第4頁
工業(yè)控制網(wǎng)絡(luò)(2013)15_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、工業(yè)控制網(wǎng)絡(luò)(15)哈工大網(wǎng)絡(luò)與電氣智能化研究所劉勇2013(春)四、Modbus協(xié)議 Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個品牌)在1979年發(fā)明的,目前施耐德公司已將Modbus協(xié)議的所有權(quán)移交給IDA(Interface for Distributed Automation ,分布式自動化接口)組織,并成立了Modbus-IDA。在 我 國 , M o d b u s 已 經(jīng) 成 為 國 家 標(biāo) 準(zhǔn)GB/T19582-2008。Modbus的優(yōu)點:(1)標(biāo)準(zhǔn)、開放,用戶可以免費、放心地使用Modbus協(xié)議,不需要交納許可證費,也不會侵犯知識產(chǎn)權(quán)。(2)由于Modbus是

2、面向報文的協(xié)議,因此它可以支持多種電氣接口,如RS232、RS485等,還可以在各種介質(zhì)上傳送,如雙絞線、光纖、無線射頻等。(3)Modbus的幀格式簡單、緊湊,通俗易懂。用戶使用容易,廠商開發(fā)簡單。1、Modbus協(xié)議描述 Modbus是OSI模型第7層上的應(yīng)用層報文傳輸協(xié)議,它在連接至不同類型的總線或網(wǎng)絡(luò)的設(shè)備之間提供客戶機/服務(wù)器通信。Modbus定義了一個與基礎(chǔ)通信層無關(guān)的簡單協(xié)議數(shù)據(jù)單元(PDU)。在特定總線或網(wǎng)絡(luò)上,通過在其基礎(chǔ)上引入一些附加域,使其成為相應(yīng)的應(yīng)用數(shù)據(jù)單元(ADU)。互聯(lián)網(wǎng)用戶能夠使用TCP/IP棧上的保留端口502訪問Modbus。 Modbus網(wǎng)絡(luò)體系結(jié)構(gòu)實例

3、通用Modbus幀介紹基于UART的串行通信時提到的幀的概念在Modbus中對應(yīng)于字符,或者可以稱之為子幀,應(yīng)與Modbus中的幀區(qū)分開來。Modbus的PDU最大長度為253字節(jié),是因為其最初是在串行鏈路上實現(xiàn)的,受RS485的ADU最大256字節(jié)(1字節(jié)服務(wù)器地址+253字節(jié)PDU+2字節(jié)差錯校驗碼)限制。Modbus PDU的功能碼域用一個字節(jié)編碼。有效的值是1255。服務(wù)器對客戶機響應(yīng)時,若是正常響應(yīng),服務(wù)器僅復(fù)制原始功能碼。對于異常響應(yīng),服務(wù)器將原始功能碼的最高有效位設(shè)置邏輯1后返回。客戶機發(fā)往服務(wù)器的數(shù)據(jù)域包括離散量和寄存器地址、處理的項目數(shù)量以及域中的實際數(shù)據(jù)字節(jié)數(shù)等。服務(wù)器使用

4、這些信息執(zhí)行功能碼定義的操作,并將請求的結(jié)果返回給客戶機。TCP Modbus ADU=253字節(jié)+MBAP(7字節(jié))=260字節(jié)。(MBAP:Modbus應(yīng)用協(xié)議報文頭。)Modbus定義了3種PDU: Modbus請求PDU; Modbus響應(yīng)PDU; Modbus異常響應(yīng)PDU。2、數(shù)據(jù)編碼與數(shù)據(jù)模型 (1)數(shù)據(jù)編碼Modbus使用“大端模式”(Big-Endian)。例如:寄存器大小為16位,寄存器值為0 x1234,發(fā)送的第一個字節(jié)為0 x12,然后發(fā)送0 x34。(2)數(shù)據(jù)模型 基本表 對象類型 訪問類型 注釋 離散量輸入 單個位 只讀 I/O系統(tǒng)可提供這種類型數(shù)據(jù) 線圈 單個位

5、讀寫 通過應(yīng)用程序可改變這種數(shù)據(jù)類型 輸入寄存器 16位字 只讀 I/O系統(tǒng)可提供這種類型數(shù)據(jù) 保持寄存器 16位字 讀寫 通過應(yīng)用程序可改變這種數(shù)據(jù)類型 對于每個基本表,協(xié)議允許單個地操作編號為065535的任意一個數(shù)據(jù)項,而這些數(shù)據(jù)項的讀寫操作可以擴展到多個連續(xù)數(shù)據(jù)項直到達到最大數(shù)量限制,具體數(shù)量限制與功能碼有關(guān)。操作連續(xù)數(shù)據(jù)項的數(shù)量限制的原因是Modbus PDU最大為253字節(jié)。Modbus處理的所有數(shù)據(jù)(位、寄存器)都放置在設(shè)備應(yīng)用存儲器中。存儲器的物理地址與數(shù)據(jù)編號不能混淆,具體應(yīng)用中只需要將數(shù)據(jù)編號與物理地址鏈接。Modbus功能碼中使用的邏輯編號是以0開始的無符號整數(shù)索引。帶有

6、獨立塊的Modbus數(shù)據(jù)模型僅帶有1個塊的Modbus數(shù)據(jù)模型3、尋址模型4、功能碼分類與描述三類功能碼:(1) 公共功能碼。由Modbus-IDA確認。 (2)用戶定義的功能碼。在十進制6572和100110區(qū)域。(3)保留功能碼。某些公司在傳統(tǒng)產(chǎn)品上現(xiàn)行使用的功能碼。5、異常響應(yīng) 客戶機的詢問可能導(dǎo)致下列四種事件之一:(1)服務(wù)器設(shè)備接收到無通信錯誤的請求,并且可以正常地處理詢問,那么服務(wù)器設(shè)備將返回一個正常的響應(yīng)。(2)由于通信錯誤,服務(wù)器沒有接收到請求,那么不能返回響應(yīng)。客戶機程序?qū)⒁曋疄槌瑫r。(3)服務(wù)器接收到請求,但是檢測到一個通信錯誤(奇偶校驗、LRC、CRC等),那么不能返回響

7、應(yīng)。客戶機程序?qū)⒁曋疄槌瑫r。(4)服務(wù)器接收到無通信錯誤的請求,但不能處理這個請求(例如,請求讀一個不存在的寄存器),服務(wù)器將返回一個異常響應(yīng),通知客戶機錯誤的實際情況。Modbus異常碼6、數(shù)據(jù)鏈路層 Modbus串行鏈路協(xié)議是一個主從協(xié)議,位于OSI模型的第2層數(shù)據(jù)鏈路層。在同一時間內(nèi),只能將一個主站連接到總線,將至多247個從站連接到相同串行總線,從站地址必須唯一 。從站沒有收到來自主站的請求時,將不會發(fā)送數(shù)據(jù),從站之間不能相互通信。地址0被保留用來識別廣播通信。從站對于主站的廣播請求沒有應(yīng)答返回。廣播請求必須是寫命令。Modbus協(xié)議與ISO/OSI網(wǎng)絡(luò)模型 (1) RTU(遠程終端單

8、元)傳輸模式 報文中每個8位字節(jié)含有兩個4位十六進制字符。起始 12345678校驗 停止 RTU模式中的位序列RTU模式中:起始位、校驗位、停止位各1位,偶校驗,當(dāng)采用無校驗時要求2個停止位。Modbus RTU報文幀中幀間字符間隔和幀內(nèi)字符間隔必須分別遵守大于等于3.5個字符時間和小于等于1.5個字符時間的規(guī)定。 起始 地址 功能碼 數(shù)據(jù) CRC校驗 結(jié)束 3.5字符 8位 8位 N8位 16位 3.5字符 RTU模式報文幀格式CRC域作為報文的最后域附加到報文上。首先附加CRC域的低位字節(jié), 然后附加CRC域的高位字節(jié)。 (2) ASCII(美國信息交換標(biāo)準(zhǔn)代碼)傳輸模式 用兩個ACSI

9、I字符發(fā)送報文中的一個8位字節(jié)。 ASCII模式中:起始位、校驗位、停止位各1位,偶校驗,當(dāng)采用無校驗時要求2個停止位。起始 1234567校驗 停止 ASCII模式中的位序列 在ASCII模式中,一個報文必須以一個“冒號”(:)字符(ASCII碼3A)起始,以“回車換行”(CRLF)(ASCII碼 0D、0A)結(jié)束。字符間隔應(yīng)小于1秒。 縱向冗余校驗(LRC)是1個字節(jié),包含8位二進制值,但其結(jié)果被編碼為兩個字節(jié)的ASCII碼。 起始位 設(shè)備地址 功能代碼 數(shù)據(jù) LRC校驗 結(jié)束位 1個字符 2個字符 2個字符 02252個字符 2個字符 2個字符CR、LF ASCII模式報文幀格式 在Mo

10、dbus串行鏈路上,所有設(shè)備的傳輸模式(及串行口參數(shù))必須相同。在Modbus串行鏈路設(shè)備實現(xiàn)等級的基本等級中只要求實現(xiàn)RTU模式,常規(guī)等級要求實現(xiàn)RTU模式和ASCII模式。默認設(shè)置必須為RTU模式。RTU模式的主要優(yōu)點是在相同的波特率下其較高的字符密度具有比ASCII模式更高的吞吐率。目前主流的微控制器都帶有UART模塊,支持10位和11位模式,支持奇偶校驗方式選擇,一般數(shù)據(jù)位發(fā)送順序也是先最低有效位后最高有效位,可以方便地實現(xiàn)RTU模式和ASCII模式。通用的RS485兩線制拓撲結(jié)構(gòu)7、物理層 (1)電氣接口通用的RS485四線制拓撲結(jié)構(gòu) 短距離點到點通信時,電氣接口還可使用RS232。

11、(2)數(shù)據(jù)信號傳輸速率要求實現(xiàn)9600bps和19200bps,其中19200bps是默認值。還可以選擇實現(xiàn):1200bps、2400bps、4800bps、38400bps、56000bps等。(3)線路終端和極性偏置終端電阻可以是150(0.5W)電阻或120(0.25W)電阻與1nF電容(最低10V)的串聯(lián)。偏置電阻的阻值應(yīng)在450650之間。四線制RJ45和D型連接器信號線分布(4)機械接口二線制RJ45和D型連接器信號線分布(5)線纜及長度必須使用屏蔽電纜,屏蔽層接保護地。常用的AWG24電纜。對于最高波特率9600bps,AWG26(或更粗)的電纜來說,其最大長度為1000m。8、

12、Modbus關(guān)鍵技術(shù)分析 (1)Modbus RTU幀的幀內(nèi)和幀間字符間隔設(shè)定多數(shù)微控制器只能檢測一個字符的停止位,而無法檢測到字符的起始位。這樣實際檢測到的相鄰兩個字符之間的時間間隔等于Modbus協(xié)議規(guī)定的相鄰兩個字符之間的時間間隔加上傳輸一個字符需要的時間。實際應(yīng)用中,若檢測到相鄰兩個字符之間的時間間隔小于等于2.5個字符時間,則認為傳輸?shù)臄?shù)據(jù)幀是連續(xù)的;若檢測到相鄰兩個字符之間的時間間隔大于等于4.5個字符時間,則認為前一幀結(jié)束,下一幀開始。常使用一個定時器,定時時間為0.5個字符時間,并設(shè)定一個計數(shù)器變量為TCOUNT,開始時清零。在中斷處理程序中對TCOUNT做加1運算,并判斷是否

13、累加到5或9。等于5時,將1.5個字符時間已到標(biāo)志位T3FLAG置成0 x01,繼續(xù)計數(shù)并判斷TCOUNT是否等于9。當(dāng)?shù)扔?時,將3.5個字符時間已到標(biāo)志位T7FLAG置成0 x01,TCOUNT清零。串口接收中斷處理流程圖實現(xiàn)RTU接收的驅(qū)動程序會隱含著對t1.5和t3.5定時器的大量中斷的管理。在較高的通信波特率下,這將導(dǎo)致CPU負擔(dān)加重。當(dāng)波特率等于或低于19200bps時,必須嚴格地遵守這兩個定時;波特率大于19200bps的情況下,兩個定時器應(yīng)該使用固定值:建議字符間隔超時時間(t1.5)為750s,幀間的超時時間(t3.5)為1.750ms。(2) Modbus CRC校驗碼的生成每個字符中只有8個數(shù)據(jù)位參與生成CRC的計算,起始位、停止位和校驗位不參與CRC計算。生成一個CRC的過程:(a)將0 xFFFF(全1)裝入一個16位寄存器。將這個寄存器稱作CRC寄存器。(b)將報文的第一個8位字節(jié)與16位CRC寄存器的低字節(jié)異或,將結(jié)果放置在CRC寄存器中。 (c)將CRC寄存器右移1位(向LSB方向),MSB填充零。提取并檢測LSB。(d)如果LSB為0:重復(fù)步驟(c)(進行另一次移位)。如果LSB為1:將CRC寄存器與多項式值0 xA001(1010 0000 0000 0001)異或。(e)重復(fù)步驟(c)和(d),直到完成8次移位。

溫馨提示

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

評論

0/150

提交評論