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

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

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

modbus協(xié)議的一些筆記

汽車電子技術(shù) ? 來源:嵌入式情報(bào)局 ? 作者: 情報(bào)小哥 ? 2023-02-21 10:29 ? 次閱讀

大家好,我是情報(bào)小哥~

最近使用modbus協(xié)議與第三方設(shè)備進(jìn)行通信,有幾點(diǎn)在這里小結(jié)分享一些,也避免大家以后掉坑,本文不做系統(tǒng)的modbus協(xié)議解說,僅對(duì)使用過程中遇到的問題和注意事項(xiàng)進(jìn)行描述,以基于RS485的modbus-RTU為例進(jìn)行講解:

1、字節(jié)序問題

modbus采用大端字節(jié)序進(jìn)行報(bào)文傳輸,這個(gè)非常重要,字節(jié)序不正確則對(duì)多字節(jié)數(shù)據(jù)無法解析和組拼。

這里所說的大端字節(jié)序表示:一個(gè)數(shù)據(jù)的高字節(jié)將被優(yōu)先發(fā)送,如一個(gè)word大小的數(shù)據(jù)為0x1234,那么在modbus協(xié)議打包成一幀數(shù)據(jù)進(jìn)行發(fā)送的時(shí)候在規(guī)定數(shù)據(jù)域中先發(fā)送0x12,然后發(fā)送0x34,其他多字節(jié)數(shù)據(jù)類型、CRC16校驗(yàn)也是類似的傳輸順序。

總線上的發(fā)送與接收方都要遵循大端的字節(jié)序發(fā)送格式。

2、單播與廣播

在modbus總線上采用單播和廣播的方式進(jìn)行通信,同一總線上一般都只有一個(gè)主機(jī)、多個(gè)從機(jī);在同一時(shí)間內(nèi)一個(gè)主機(jī)可以通過地址區(qū)分與想要的從機(jī)通信,這邊是單播方式;同時(shí)modbus總線也可以一個(gè)主機(jī)以廣播的方式與多個(gè)從機(jī)進(jìn)行通信。

平時(shí)我們也稱這種通信方式為主從通信(Maser/Slave),主機(jī)發(fā)送請(qǐng)求消息,當(dāng)從機(jī)接收到正確消息后響應(yīng)請(qǐng)求返回給主機(jī);同時(shí)主機(jī)也可以直接發(fā)消息修改從機(jī)的數(shù)據(jù),實(shí)現(xiàn)主從數(shù)據(jù)的雙向讀寫。

3、與PLC通信協(xié)議

具體與什么設(shè)備通信,只是不同的設(shè)備所支持的功能碼不同,或相關(guān)的叫法和習(xí)慣不同,具體需要根據(jù)相應(yīng)的設(shè)備來進(jìn)行區(qū)分了,但都符合modbus協(xié)議標(biāo)準(zhǔn)。

在跟PLC進(jìn)行通信的時(shí)候其給過來的協(xié)議會(huì)指明相應(yīng)的PLC地址而此地址與實(shí)際發(fā)送modbus報(bào)文數(shù)據(jù)幀中的寄存器等地址并不是一致的。

圖片

如上圖所示PLC工程師一般都會(huì)以PLC地址為基礎(chǔ)給出協(xié)議,而很多其他軟件工程師對(duì)接的時(shí)候,以為PLC地址(也叫PLC的存儲(chǔ)地址)便是modbus報(bào)文數(shù)據(jù)幀中的寄存器地址,其實(shí)兩者并不相等。

西門子的PLC地址其每個(gè)功能碼所對(duì)應(yīng)的modbus報(bào)文地址都是從0開始,即從0x0000~0xFFFF;所以你可以把PLC地址看成是一種絕對(duì)地址,而modbus報(bào)文地址僅僅只是在該功能碼下的一個(gè)相對(duì)地址。

如采用03H功能碼讀取PLC存儲(chǔ)地址是40002的寄存器,而此時(shí)modbus報(bào)文中的寄存器地址為01。

圖片

3、線圈和寄存器的理解

由于早期PLC對(duì)于一些布爾量均是用于控制一些繼電器或者接觸器等等,這些器件主要是通過線圈來進(jìn)行吸合與彈開,后面叫法也就沿用下來了,同時(shí)線圈分配輸入線圈和輸出線圈,跟我們平時(shí)MCU的IO引腳的電平讀寫有點(diǎn)類似。

而對(duì)于一些非bool類型的數(shù)據(jù)均采用寄存器的概念來繼續(xù)傳輸,相信這樣便可以對(duì)PLC中的這些名字進(jìn)一步理解了。

4、RS485終端電阻

對(duì)于較長(zhǎng)距離的RS485通信,采用線型連接并增加終端120Ω匹配電阻來降低干擾增加總線通信的穩(wěn)定性,如下圖所示:

圖片

最 后

好了,這里小哥就簡(jiǎn)單介紹了最近使用modbus的一些踩坑筆記,記得關(guān)注學(xué)習(xí)哦。

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

    關(guān)注

    8

    文章

    7108

    瀏覽量

    89302
  • MODBUS
    +關(guān)注

    關(guān)注

    28

    文章

    1817

    瀏覽量

    77161
  • 字節(jié)
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    13775
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Modbus庫(kù)開發(fā)筆記之十一:關(guān)于Modbus協(xié)議棧開發(fā)的說明

    `對(duì)于Modbus協(xié)議棧的整個(gè)開發(fā)內(nèi)容,前面已經(jīng)說得很清楚了,接下來我們說明下與開發(fā)沒有直接關(guān)系的內(nèi)容。首先,關(guān)于我為什么開發(fā)這個(gè)協(xié)議棧的問題。我們的初衷只是想能夠在開發(fā)產(chǎn)品時(shí)不用每次都重寫這
    發(fā)表于 08-27 20:32

    Modbus TCP協(xié)議學(xué)習(xí)筆記分享

    公司于1979年開發(fā),是種工業(yè)現(xiàn)場(chǎng)總線協(xié)議標(biāo)準(zhǔn)。1996年施耐德公司推出基于以太網(wǎng)TCP/IP的modbus協(xié)議:modbusTCP。Modbus協(xié)議
    發(fā)表于 07-01 10:36

    modbus協(xié)議筆記

    1 Modbus協(xié)議概要? Modbus通信協(xié)議由Modicon公司(現(xiàn)在的施耐德電氣Schneider Electric)于1979年為可編程邏輯控制(即PLC)通信而發(fā)表。目前,Modbu
    發(fā)表于 07-02 07:17

    Modbus協(xié)議是什么?Modbus協(xié)議主要有哪些應(yīng)用?

    請(qǐng)問Modbus協(xié)議是什么?Modbus協(xié)議主要有哪些應(yīng)用?
    發(fā)表于 07-15 12:04

    Modbus協(xié)議的特點(diǎn)是什么

    Modbus協(xié)議的特點(diǎn)是什么?Modbus協(xié)議有哪幾類功能碼?
    發(fā)表于 09-26 08:13

    Modbus協(xié)議地址與協(xié)議層次

    Modbus協(xié)議地址是什么意思?Modbus協(xié)議層次有何優(yōu)勢(shì)?
    發(fā)表于 09-28 06:27

    Modbus協(xié)議是什么

    Modbus協(xié)議是什么?MODBUS功能碼有哪些?MODBUS協(xié)議有哪幾種傳輸模式?
    發(fā)表于 09-29 07:06

    Modbus是什么?Modbus協(xié)議有哪些優(yōu)點(diǎn)

    Modbus是什么?Modbus協(xié)議有哪些優(yōu)點(diǎn)?Modbus協(xié)議包括哪些?
    發(fā)表于 09-30 08:40

    文讀懂Modbus協(xié)議

    1、Modbus是什么?  Modbus協(xié)議,從字面理解它包括Mod和Bus兩部分,首先它是種bus,即總線協(xié)議,和I2C、SPI類似,總線就意味著有主機(jī),有從機(jī),這些設(shè)備在同
    發(fā)表于 10-28 14:23

    Modbus協(xié)議的理解

    。   對(duì)于Modbus協(xié)議一些猜測(cè):   1.Modus協(xié)議既然是將數(shù)據(jù)字節(jié)按ASCII碼發(fā)送,為什么不以高4字節(jié)+低4字節(jié)的方式呢?我猜測(cè)的因?yàn)橥V刮皇?x0D和0X0A,如果采用高4字節(jié)+低4字節(jié)
    發(fā)表于 05-05 16:47

    Modbus協(xié)議簡(jiǎn)介及其特點(diǎn)

    Modbus協(xié)議是什么,Modbus協(xié)議的特點(diǎn),本文針對(duì)Modbus協(xié)議的概況加以闡述。
    發(fā)表于 11-02 15:00 ?4686次閱讀

    Modbus協(xié)議使用常見問題分析

    Modbus協(xié)議最初由Modicon公司開發(fā)出來,是針對(duì)PLC設(shè)備設(shè)計(jì)的基于串行總線的主從模式的應(yīng)用層總線設(shè)備協(xié)議。ModbusTCP是封裝在TCP包內(nèi)的Modbus協(xié)議,雖然有一些
    發(fā)表于 11-02 15:34 ?4866次閱讀

    modbus協(xié)議應(yīng)用指南

    modbus協(xié)議
    發(fā)表于 12-04 09:45 ?5次下載

    Modbus協(xié)議網(wǎng)關(guān)是什么?Modbus協(xié)議網(wǎng)關(guān)的功能

    Modbus協(xié)議網(wǎng)關(guān)是種專門用于工業(yè)自動(dòng)化環(huán)境中的網(wǎng)絡(luò)設(shè)備,其主要功能是實(shí)現(xiàn)不同通信協(xié)議之間的轉(zhuǎn)換,尤其是將基于Modbus協(xié)議的設(shè)備或系統(tǒng)與使用其他
    的頭像 發(fā)表于 04-11 15:51 ?786次閱讀

    DJN Modbus協(xié)議

    DJN Modbus協(xié)議
    的頭像 發(fā)表于 11-27 13:52 ?1158次閱讀
    DJN <b class='flag-5'>Modbus協(xié)議</b>