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

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

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

MODBUS ASCII傳輸模式介紹

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

前面2期我們學(xué)習(xí)了,第一篇MODBUS協(xié)議基本介紹,第二篇MODBUS RTU傳輸模式介紹,今天我們來(lái)研究第三篇MODBUS ASCII傳輸模式介紹。

第三篇 MODBUS ASCII傳輸模式介紹

當(dāng) Modbus 串行鏈路的設(shè)備被配置為使用 ASCII(American Standard Code For Information Interchange)模式通信時(shí),報(bào)文中的每個(gè) 8 位字節(jié)以兩個(gè) ASCII 字符發(fā)送。當(dāng)通信鏈路或者設(shè)備無(wú)法符合 RTU 模式的定時(shí)管理時(shí)使用該模式。

注:由于一個(gè)字節(jié)需要兩個(gè)字符,此模式比 RTU 效率低。

例:字節(jié) 0x5B 會(huì)被編碼為兩個(gè)字符:0x35 和 0x42(ASCII 編碼 0x35=”5”,0x42=”B”)。

ASCII模式每個(gè)字節(jié)(10位)的格式

1.編碼系統(tǒng):十六進(jìn)制,ASCII字符 0-9,A-F,報(bào)文中每個(gè) ASCII 字符含有 1 個(gè)十六進(jìn)制字符。

2.每字節(jié) bit 流:1 起始位、7 數(shù)據(jù)位,首先發(fā)送最低有效位、1 位奇偶檢驗(yàn)、1 停止位。

奇偶校驗(yàn)是要求的,其它模式(奇校驗(yàn),無(wú)校驗(yàn))也可以使用。為了保證與其它產(chǎn)品最大的兼容性,同時(shí)支持無(wú)校驗(yàn)?zāi)J绞墙ㄗh的。默認(rèn)校驗(yàn)?zāi)J奖仨殲榕夹r?yàn)。

字符是如何串行傳送的:

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

image.png

ASCII模式位序列

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

image.png

ASCII模式位序列(無(wú)校驗(yàn)的特殊情況)

幀檢驗(yàn)域:

縱向冗余校驗(yàn)(LRC-Longitudinal Redundancy Checking)。

Modbus ASCII報(bào)文幀

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

報(bào)文幀的地址域含有兩個(gè)字符。

在ASCII模式,報(bào)文用特殊的字符區(qū)分幀起始和幀結(jié)束。一個(gè)報(bào)文必須以一個(gè)‘冒號(hào)’(:)(ASCII 十六進(jìn)制 3A)起始,以‘回車-換行’(CR LF)對(duì)(ASCII十六進(jìn)制0D和0A)結(jié)束。

注:LF 字符可以通過(guò)特定的 Modbus 應(yīng)用命令改變。

對(duì)于所有的域,允許傳送的字符為十六進(jìn)制 0-9,A-F(ASCII 編碼)。設(shè)備連續(xù)的監(jiān)視總線上‘冒號(hào)’字符。當(dāng)收到這個(gè)字符后,每個(gè)設(shè)備解碼后續(xù)的字符一直到幀結(jié)束。

報(bào)文中字符間的時(shí)間間隔可以達(dá)1秒。如果有更大的間隔,則接收設(shè)備認(rèn)為發(fā)生了錯(cuò)誤。

image.png

ASCII報(bào)文幀

注:每個(gè)字符字節(jié)需要用兩個(gè)字符編碼。因此,為了確保ASCII 模式和 RTU模式在 Modbus 應(yīng)用級(jí)兼容,ASCII 數(shù)據(jù)域最大長(zhǎng)度為(2x252)是 RTU 數(shù)據(jù)域(252)的兩倍。

必然的,Modbus ASCII 幀的最大尺寸為 513 個(gè)字符。

ASCII 報(bào)文幀的要求在下面的狀態(tài)圖中綜合?!爸髟O(shè)備”和“從設(shè)備”的不同角度均在相同的圖中表示。

圖片

ASCII傳輸模式狀態(tài)圖

1.“空閑”態(tài)是沒(méi)有發(fā)送和接收?qǐng)?bào)文要處理的正常狀態(tài)。

2.每次接收到“:”字符表示新的報(bào)文的開(kāi)始。如果在一個(gè)報(bào)文的接收過(guò)程中收到該字符。則當(dāng)前地報(bào)文被認(rèn)為不完整并被丟棄。而一個(gè)新的接收緩沖區(qū)被重新分配。

3.檢測(cè)到幀結(jié)束后,完成LRC 計(jì)算和校驗(yàn),然后分析地址域以確定幀是否發(fā)往此設(shè)備,如果不是,則丟棄此幀。為了減少接收處理時(shí)間,地址域可以在一接到就分析,而不需要等到整個(gè)幀結(jié)束。

LRC校驗(yàn)

在 ASCII 模式,包含一對(duì)全部報(bào)文內(nèi)容執(zhí)行的,基于縱向冗余校驗(yàn)(LRC-Longitudinal Redundancy Checking)算法的錯(cuò)誤檢驗(yàn)域。LRC 域檢驗(yàn)不包括起始“冒號(hào)”和結(jié)尾 CRLF 對(duì)的整個(gè)報(bào)文的內(nèi)容。不關(guān)報(bào)文有無(wú)奇偶校驗(yàn),均執(zhí)行此檢驗(yàn)。

LRC 域?yàn)橐粋€(gè)字節(jié),包含一個(gè)8 位二進(jìn)制值。LRC 值由發(fā)送設(shè)備計(jì)算,然后將 LRC 附在報(bào)文后面。接收設(shè)備在接收?qǐng)?bào)文時(shí)重新計(jì)算 LRC 的值,并將計(jì)算結(jié)果于實(shí)際接收到的 LRC 值相比較,如果兩個(gè)值不相等,則為錯(cuò)誤。

LRC 的計(jì)算,對(duì)報(bào)文中的所有的連續(xù) 8 位字節(jié)相加,忽略任何進(jìn)位,然后求出其二進(jìn)制補(bǔ)碼。執(zhí)行檢驗(yàn)針對(duì)不包括起始“冒號(hào)”和結(jié)尾 CRLF 對(duì)的整個(gè) ASCII報(bào)文域的內(nèi)容。在 ASCII 模式,LRC 的結(jié)果被ASCII 編碼為兩個(gè)字節(jié)并放置于 ASCII模式報(bào)文幀的結(jié)尾,CRLF 之前。

簡(jiǎn)單代碼如下:

image.png

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

    關(guān)注

    28

    文章

    1718

    瀏覽量

    76418
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    915

    瀏覽量

    54651
  • ASCII
    +關(guān)注

    關(guān)注

    5

    文章

    171

    瀏覽量

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

    關(guān)注

    0

    文章

    384

    瀏覽量

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

    關(guān)注

    0

    文章

    9

    瀏覽量

    7001
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Modbus ASCII的設(shè)計(jì)與實(shí)現(xiàn)

    前面我們已經(jīng)分析了Modbus RTU的更新設(shè)計(jì)和具體實(shí)現(xiàn)(如果不清楚可查看前一篇文章)。其實(shí)Modbus ASCIIModbus RTU都是基于串行鏈路實(shí)現(xiàn)的,所以有很多的共同點(diǎn),
    的頭像 發(fā)表于 12-13 15:30 ?1201次閱讀
    <b class='flag-5'>Modbus</b> <b class='flag-5'>ASCII</b>的設(shè)計(jì)與實(shí)現(xiàn)

    詳解Modbus協(xié)議的RTU幀和ASCII幀(2)

    前面已經(jīng)分析過(guò)RTU幀和ASCII幀的報(bào)文區(qū)別,細(xì)心的朋友應(yīng)該會(huì)發(fā)現(xiàn)在兩種不同的報(bào)文傳輸模式下都有一個(gè)共同的組成部分——差錯(cuò)校驗(yàn)。
    發(fā)表于 10-01 10:38 ?759次閱讀
    詳解<b class='flag-5'>Modbus</b>協(xié)議的RTU幀和<b class='flag-5'>ASCII</b>幀(2)

    esp32 idf支持modbus ascii協(xié)議的主機(jī)模式嗎?

    esp32 idf 支持 modbus ascii協(xié)議的主機(jī)模式嗎?
    發(fā)表于 06-25 06:25

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

    的3A用字符“3”和字符“A”表示。MODBUS TCPMODBUS TCP模式下,由于模塊的地址由IP地址確定,所以不再有地址域內(nèi)容,考慮到TCP網(wǎng)絡(luò)是可靠的數(shù)據(jù)傳輸網(wǎng)絡(luò),故不再有校驗(yàn)數(shù)據(jù)。但是
    發(fā)表于 04-27 06:00

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

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

    臺(tái)達(dá)PLC在使用Modbus通訊時(shí)的兩種模式

      臺(tái)達(dá)PLC在使用Modbus通訊時(shí)有兩種模式:分別是Modbus—RTU和ModbusASCII,下面我們就這兩種
    發(fā)表于 03-16 17:51

    Modbus協(xié)議的理解

    就比較低。所以一般來(lái)說(shuō),如果所需要傳輸的數(shù)據(jù)量較小可以考慮使用ASCII協(xié)議,如果所需傳輸的數(shù)據(jù)量比較大,最好能使用RTU協(xié)議。   MODBUS通信之
    發(fā)表于 05-05 16:47

    Modbus ASCII 模式之通訊程序

    C語(yǔ)言編寫的臺(tái)達(dá)變頻器Modbus ASCII 模式之通訊程序
    發(fā)表于 12-02 10:25 ?6次下載

    modbus常用功能碼解讀

    Modbus具有兩種串行傳輸模式,ASCII 和 RTU。它們定義了數(shù)據(jù)如何打包、解碼的不同方式。支持 Modbus 協(xié)議的設(shè)備一般都支持
    發(fā)表于 02-08 09:06 ?1.8w次閱讀
    <b class='flag-5'>modbus</b>常用功能碼解讀

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

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

    PCS7下ASCII模式Modbus Master的實(shí)現(xiàn)

    PCS7下ASCII模式Modbus Master的實(shí)現(xiàn)說(shuō)明。
    發(fā)表于 04-23 09:38 ?11次下載

    Modbus RTU和Modbus TCP的區(qū)別

    Modbus RTU和Modbus TCP的區(qū)別: 1.概念不同:MODBUS是一種標(biāo)準(zhǔn)的工業(yè)控制數(shù)據(jù)交換協(xié)議,可以通過(guò)RTU和ASCII交換協(xié)議數(shù)據(jù)。RTU通過(guò)二進(jìn)制數(shù)據(jù)直接
    發(fā)表于 08-03 17:00 ?5.3w次閱讀

    常見(jiàn)的幾種Modbus網(wǎng)關(guān)介紹

    以下提到Modbus網(wǎng)關(guān)均指Modbus RTU轉(zhuǎn)Modbus TCP,并不涉及對(duì)Modbus ASCII數(shù)據(jù)幀的處理,
    的頭像 發(fā)表于 05-31 11:52 ?2255次閱讀

    ModBus RTU、ASCII、TCP,選哪種模式更好?

    ModBus是一種通信協(xié)議,用于連接自動(dòng)化設(shè)備(如PLC、溫度控制器等)和計(jì)算機(jī)。它被廣泛應(yīng)用于工業(yè)控制系統(tǒng),支持多種通信方式,包括ModBus RTU、ModBus ASCII
    發(fā)表于 01-13 10:10 ?1025次閱讀

    MODBUS RTU傳輸模式介紹

    上期我們學(xué)習(xí)了,第一篇MODBUS協(xié)議基本介紹,今天我們來(lái)研究第二篇MODBUS RTU傳輸模式介紹
    的頭像 發(fā)表于 07-19 15:58 ?4792次閱讀
    <b class='flag-5'>MODBUS</b> RTU<b class='flag-5'>傳輸</b><b class='flag-5'>模式</b><b class='flag-5'>介紹</b>