新聞中心

        EEPW首頁 > 網絡與存儲 > 設計應用 > 通信Modbus是如何工作的?

        通信Modbus是如何工作的?

        作者: 時間:2024-07-15 來源:strongerHuang 收藏


        本文引用地址:http://www.104case.com/article/202407/461019.htm


        學電子需要掌握一些常見的就屬其中一種,在現實生活中應用非常廣泛,很多工業電子設備的系統中基本都有它的存在。


        今天針對初學描述關于一些常見的問題。


        什么是Modbus?

        Modbus 是由 Modicon 公司(現施耐德),于1979年針對 PLC 開發的一種,當時主要用于工業電子設備之間聯網通信。


        Modbus 是一種應用層通信息協議,位于 OSI(開放式系統互聯通信)模型的第 7 層。它在不同類型的總線或網絡上連接的設備之間提供客戶端/服務器通信。


        Modbus 是由一個 Master(主機) 和最多 247 個 Slave(從機)組成的通信網絡。


        更多關于Modbus的介紹,可以參看:

        https://modbus.org/


        Modbus干什么用?

        Modbus 是一種開放的,你可以免費將其應用到你的設備中,而無需支付版稅。


        Modbus 是一種廣泛使用的標準通信協議,你和其他廠家的設備,如果都遵循 Modbus 標準協議,就可以進行通信傳輸數據。


        Modbus是如何工作的?

        Modbus 通常底層基于 UART 串口485進行通信,最簡單的一個主設備和一個從設備通信,就是通過串口Tx和Rx進行收發數據。


        底層串口的通信,就是大家熟悉的“0”“1”通信,在這個基礎上,添加 Modbus 通信協議,方便解析協議和多設備組網。


        一主多從,在從設備中都有唯一的地址,通過解析從機地址,主機就能和對應的從機進行通信。

        什么是Modbus ASCII?

        Modbus ASCII是Modbus協議中的一種傳輸方式,對應的還有另外一種

        Modbus RTU傳輸方式。


        施耐德電氣(Schneider Electric)收購了Modicon公司之后,有推出了Modbus TCP協議。


        協議格式:


        什么是從機地址?

        從機地址(或從站ID),就是為每一個從設備分配的唯一地址,方便主機建立通信時進行識別,從機地址在出廠時就會設置好。


        什么是功能碼?

        功能碼是 Modbus 通信協議中的一項,主機發送的第二個字節就是功能碼。就是你看到的讀寫線圈寄存器那些內容。


        下面貼幾個常見功能碼:


        什么是CRC?

        正規的通信協議基本都有校驗碼,目的就是為了確保傳輸的數據沒有錯誤。像校驗和、CRC校驗等是嵌入式設備通信協議常見的校驗碼。


        Modbus使用CRC循環冗余校驗,其校驗信息位于消息末尾的兩個字節。


        這里推薦閱讀文章《自定義串口通信協議》中文末校驗相關的內容。


        參考:

        http://www.simplymodbus.ca/crc.xls


        什么是字/字節排序?

        字節排序就是先存儲(傳輸)高字節,還是先傳輸低字節。比如:0x1234,它是兩個字節,傳輸時通常是分0x12和0x34傳輸。


        在通信中,會牽涉到一個字節排序的問題,但在Modbus 規范中并未準確定義數據在寄存器中的存儲方式。


        Modbus標準協議沒有具體約定,就需要開發者在開發過程中人為約定先傳輸高字節,還是低字節。


        最后

        Modbus是一種應用非常廣泛的標準通信協議,工業自動化、電子、嵌入式等這些專業的同學,建議都抽時間學習一下。


        由于時間有限,本文只介紹了一些基礎內容,更多介紹和協議具體內容,請到官網深入了解。


        https://modbus.org/




        關鍵詞: Modbus 通信協議

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 穆棱市| 莫力| 五指山市| 当雄县| 赤峰市| 鲁甸县| 新化县| 乌拉特后旗| 定日县| 德清县| 三门峡市| 昭苏县| 宣武区| 西乌珠穆沁旗| 蓝山县| 沅陵县| 钟祥市| 修文县| 柳州市| 文登市| 博罗县| 溧阳市| 新疆| 清徐县| 大石桥市| 涞源县| 和静县| 防城港市| 永春县| 吉木萨尔县| 海原县| 马鞍山市| 东城区| 辰溪县| 丰原市| 濉溪县| 剑阁县| 高尔夫| 永和县| 舞钢市| 五家渠市|