0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MODBUS RTU傳輸模式介紹

CHANBAEK ? 來源:菱沃鉑智能技術(shù) ? 作者:菱沃鉑智能技術(shù) ? 2023-07-19 15:58 ? 次閱讀

上期我們學習了,第一篇MODBUS協(xié)議基本介紹,今天我們來研究第二篇MODBUS RTU傳輸模式介紹。

第二篇 MODBUS RTU傳輸模式介紹

當設(shè)備使用 RTU(Remote Terminal Unit)模式在Modbus串行鏈路通信,消息中每個8位域都是由兩個十六進制字符組成。該模式的主要優(yōu)點是較高的數(shù)據(jù)密度,在相同的波特率下比ASCII模式有更高的吞吐率。RTU模式的每個報文必須以連續(xù)的字符流傳送。

RTU模式每個字節(jié)(11位)的格式

  1. 編碼系統(tǒng):8 位二進制,報文中每個 8 位字節(jié)含有兩個 4 位十六進制字符(0-9,A-F)。
  2. 每字節(jié) bit 流:1 起始位、8 數(shù)據(jù)位,首先發(fā)送最低有效位、1 位奇偶檢驗、1 停止位。

偶校驗是要求的,其它模式(奇校驗、無校驗)也可以使用,為了保證兼容性,同時支持無校驗?zāi)J绞墙ㄗh的。默認校驗?zāi)J奖仨殲榕夹r灐?/p>

字符如何串行傳送:

每個字符或字節(jié)均由此順序發(fā)送(從左到右),最低有效位(LSB)…最高有效位(MSB)。

image.png

RTU模式位序列

設(shè)備配置為奇校驗、偶校驗或無校驗都可以接受,如果無奇偶校驗,就傳送一個附加的停止位以填充字符幀。

image.png

RTU模式位序列(無校驗的特殊情況)

幀檢驗域: 循環(huán)冗余檢驗(CRC)。

幀描述:

image.png

RTU報文幀

Modbus報文RTU幀

由發(fā)送設(shè)備將 Modbus 報文構(gòu)造為帶有已知起始和結(jié)束標記的幀。這使設(shè)備可以在報文的開始接收新幀,并且知道何時報文結(jié)束。不完整的報文必須能夠被檢測到,而錯誤標志必須作為結(jié)果被設(shè)置。

在 RTU 模式中,報文幀由時長至少為 3.5 個字符時間的空閑間隔區(qū)分。在后續(xù)部分,這個時間區(qū)間被稱為 t3.5。

圖片整個報文幀必須以連續(xù)的字符流發(fā)送。

如果兩個字符直接的空閑間隔大于 1.5 個字符時間,則報文被認為不完整應(yīng)該被接收設(shè)備丟棄,如圖:

圖片

非正常報文幀

注:RTU 接受驅(qū)動程序的實現(xiàn),由于 t1.5 和 t3.5 的定時,隱含了大量的對中斷的管理。在高速通信速率下,這導致 CPU 負擔加重。因此,在通信速率等于或低于 19200bps 時,這兩個定時必須嚴格遵守;對于波特率大于 19200bps 的情形,應(yīng)該使用 2 個定時的固定值:建議的字符間超時時間(t1.5)位 750us,幀間的超時時間(t1.5)位 1.750ms。

下圖表示了對 RTU 傳輸模式狀態(tài)圖的描述。“主設(shè)備”和“從設(shè)備”的不同角度均在相同的圖中表示:

圖片

1.從“初始”態(tài)到“空閑”態(tài)轉(zhuǎn)換需要 t3.5 定時超時:這保證幀間延遲。

2.“空閑”態(tài)是沒有發(fā)送和接收報文要處理的正常狀態(tài)。

3.在 RTU 模式,當沒有活動的傳輸?shù)膶嶋H間隔打達 3.5 個字符長時,通信鏈路被認為在“空閑”態(tài)。

4.在鏈路空閑時,在鏈路上檢測到的任何傳輸?shù)淖址急蛔R別為幀起始。鏈路變?yōu)椤盎顒印睜顟B(tài)。然后,當鏈路上沒有字符傳輸?shù)臅r間間隔達到 t3.5 后,被識別為幀結(jié)束。

5.檢測到幀結(jié)束后,完成 CRC 計算和校驗。然后,分析地址域以確定幀是否發(fā)往此設(shè)備,如果不是,則丟棄此幀。為了減少接收處理時間,地址域可以在一接到就分析,而不需要等到整個幀結(jié)束。這樣,CRC 計算只需要在幀尋址到該節(jié)點(包括廣播幀)時進行。

CRC計算

在 RTU 模式包含一個對全部報文內(nèi)容執(zhí)行的,基于循環(huán)冗余校驗(CRC-Cyclical Redundancy Checking)算法的錯誤檢驗域。CRC域檢驗整個報文的內(nèi)容。不管報文有無奇偶校驗,均執(zhí)行此檢驗。

CRC 包含由兩個 8 位字節(jié)組成的一個 16 位值。

CRC 域作為報文的最后的域附加在報文之后。計算后,首先附加低字節(jié)。然后是高字節(jié)。CRC 高字節(jié)為報文發(fā)送的最后一個字節(jié)。

附加在報文后面的 CRC 的值由發(fā)送設(shè)備計算。接收設(shè)備在接收報文時重新計算 CRC 的值,并將計算結(jié)果于實際接收到的 CRC 值相比較,如果兩個值不相等,則為錯誤。

CRC 的計算,開始對一個 16位寄存器預裝全“1”,然后將報文中連續(xù)的 8位字節(jié)對其進行后續(xù)的計算。只有字符中的 8 個數(shù)據(jù)位參與到生成 CRC 的運算,起始位、停止位和校驗位不參與 CRC 計算。

CRC 生成的過程中,每個 8 位字符與寄存器中的值異或,然后結(jié)果向最低有效位(LSB)方向移動 1 位,而最高有效位(MSB)置 0.然后提取并檢查 LSB:如果LSB 為 1,則寄存器中的值與一個固定的預置值異或;如果LSB 為 0,則不進行異或操作。

這個過程將重復直到執(zhí)行完 8 次移位,完成最后一次(第八次)移位及相關(guān)操作后,下一個 8 位字節(jié)與寄存器的當前值異或,然后又同上面描述過的一樣重復 8 次。當所有報文中字節(jié)都預算之后得到的寄存器中的最終值,就是 CRC。

簡單代碼如下:

image.png

image.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 二進制
    +關(guān)注

    關(guān)注

    2

    文章

    761

    瀏覽量

    41475
  • MODBUS
    +關(guān)注

    關(guān)注

    28

    文章

    1718

    瀏覽量

    76418
  • ASCII
    +關(guān)注

    關(guān)注

    5

    文章

    171

    瀏覽量

    34947
  • RTU
    RTU
    +關(guān)注

    關(guān)注

    0

    文章

    384

    瀏覽量

    28547
  • 傳輸模式
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    7001
收藏 人收藏

    評論

    相關(guān)推薦

    STM32L431RC通過命令切換到MODBUS/RTU模式,為什么RTU模式的CMF中斷一直在工作?

    我使用的芯片是STM32L431RC,用USART2和上位機通信。默認使用MODBUS/ASCII模式,CMF字符匹配中斷工作沒有問題?,F(xiàn)在需要通過命令切換到MODBUS/RTU
    發(fā)表于 03-27 06:01

    Modbus TCP轉(zhuǎn)Modbus RTU的實現(xiàn)

    。串行鏈路的Modbus分為ASCII和RTU,其中RTU傳輸效率高,用得比較多。所以這里基本上以Modbus
    發(fā)表于 08-10 10:04

    基于Modbus RTU的串口調(diào)試軟件的實現(xiàn)

    摘 要:文中介紹Modbus RTU通訊協(xié)議的特點,闡述了該協(xié)議在VC2005編程環(huán)境下串口調(diào)試軟件的具體實現(xiàn)方法。并編制了相關(guān)的程序,該程序采用了模塊化思想,結(jié)構(gòu)清晰,操作簡便,實現(xiàn)了良好
    發(fā)表于 12-18 19:18

    Labview Modbus RTU編寫心得

    由于近期編寫了一個小型的溫控,其通訊基于Modbus RTU模式,所以淺談下這次編寫過程中,遇到的問題和解決方法。
    發(fā)表于 05-06 18:27

    modbus三種通訊方式的字符介紹

    兩個字符之間發(fā)送或者接收的時間間隔不能超過1.5倍 字符傳輸時間。如果兩個字符時間間隔超過了3.5倍的字符傳輸時間,規(guī)約就認為一幀數(shù)據(jù)已經(jīng)接收,新的一幀數(shù)據(jù)傳輸開始。RTU
    發(fā)表于 04-27 06:00

    Modbus-RTU協(xié)議模式學習下載

    、ASCII、TCP三種模式,其中RTU模式(即Modbus-RTU)最常用。3.協(xié)議定義: 所謂協(xié)議,就是互相之間的約定。如果不讓別人知道那就是暗號。4.協(xié)議定義...
    發(fā)表于 07-02 06:12

    Modbus_RTU的通訊方式是什么

    是ZNZS2 轉(zhuǎn)速表。首先我們要收集到該轉(zhuǎn)速表的波特率(9600)、功能碼(03:保持型寄存器 40001)、地址(3)等信息。創(chuàng)建通信指令介紹RTU通訊有兩種通信指令:ModbusRTU
    發(fā)表于 02-16 06:52

    介紹S7-1200 Modbus RTU主站通信組態(tài)及編程步驟

      S7-1200 支持Modbus RTU通信模式的模塊可作為Modbus RTU主站。以下以 CPU1215C DC/DC/DC和CM1
    發(fā)表于 03-15 16:13

    基于S7-200下的Modbus RTU通信協(xié)議

    我們都知道Modbus是公開通信協(xié)議,具有兩種串行傳輸模式,ASCII和RTU
    的頭像 發(fā)表于 07-05 08:58 ?5869次閱讀

    淺析無線RTU傳輸工作模式

    無線RTU傳輸模式應(yīng)用有自報、兼容、查詢、以及調(diào)試四種工作模式。
    發(fā)表于 09-07 09:31 ?2246次閱讀

    Modbus RTUModbus TCP的區(qū)別

    將每個字節(jié)的二進制數(shù)據(jù)轉(zhuǎn)換成固定的二位十六進制字符串,然后依次串聯(lián),以TCP代碼的形式傳輸數(shù)據(jù)。RTU通常使用最多。 2.不同的通信方式:以太網(wǎng),相應(yīng)的通信模式MODBUS TCP。
    發(fā)表于 08-03 17:00 ?5.3w次閱讀

    一文詳解Modbus RTU數(shù)據(jù)幀格式

    介紹Modbus RTU數(shù)據(jù)幀格式之前,首先讓我們先了解一下Modbus的通訊模式。
    發(fā)表于 04-07 09:40 ?2.4w次閱讀
    一文詳解<b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b>數(shù)據(jù)幀格式

    淺談ModBus RTUModBus TCP

    ModBus RTUModBus TCP作為ModBus協(xié)議的兩個主要變體,傳統(tǒng)上,ModBus RT
    的頭像 發(fā)表于 12-30 14:36 ?2188次閱讀

    MODBUS ASCII傳輸模式介紹

    前面2期我們學習了,第一篇MODBUS協(xié)議基本介紹,第二篇MODBUS RTU傳輸模式
    的頭像 發(fā)表于 07-19 15:58 ?3593次閱讀
    <b class='flag-5'>MODBUS</b> ASCII<b class='flag-5'>傳輸</b><b class='flag-5'>模式</b><b class='flag-5'>介紹</b>

    簡單介紹Modbus RTU協(xié)議

    介紹modbus rtu之前,我們可以了解到,Modbus是施耐德電氣公司,于1979年發(fā)明的,是全球第一個真正用于工業(yè)現(xiàn)場的總線協(xié)議。
    的頭像 發(fā)表于 05-09 09:13 ?1877次閱讀
    簡單<b class='flag-5'>介紹</b><b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b>協(xié)議