Modbus 与 RS485 的区别与联系
目前道長入坑了一家智能家居公司,以后會分享記錄一些智能家居相關的知識,如果有問題,希望小伙伴交流指正。
一、RS-485
1.1 RS-485 來源
RS485是美國電子工業協會(EIA)在1983年批準了一個新的平衡傳輸標準(balanced transmission standard),EIA一開始將RS(Recommended Standard)做為標準的前綴,不過后來為了便于識別標準的來源,已將RS改為EIA/TIA。目前標準名稱為TIA-485,但工程師及應用指南仍繼續使用RS-485來稱呼此標準。
? ?RS-485僅是一個電氣標準,描述了接口的物理層,像協議、時序、串行或并行數據以及鏈路全部由設計者或更高層協議定義。 RS485定義的是使用平衡(也稱作差分)多點傳輸線的驅動器(driver)和接收器(receiver)的電氣特性。
1.2 RS-485 通信原理
????把MCU出來的一條的TTL信號經過芯片轉換為兩根線(線A、線B)上的信號。當MCU給轉換器輸入低TTL電平時,轉換器會使得B的電壓比A的電壓高,反之,A的電壓比B的電壓高。
????RS485協議規約兩條電平線上差值為多少表示0或者1,電壓是通過儀表可以測量得到的,所以說RS485是硬件層協議。RS485協議的接收端可能是另一個MCU,MCU管腳也只接受TTL電平,轉換芯片過來的是兩條線的電壓,所以需要對此兩條線差分電壓轉換為TTL電平。
? ?
????????????????????????????????????????????????????????圖一 RS485通訊原理
????RS485能夠進行遠距離傳輸主要得益于使用差分信號進行傳輸,當有噪聲干擾時仍可以使用線路上兩者差值進行判斷,使傳輸數據不受噪聲干擾。
? ? ? ? ? ?
????????????????????????????????????????????????????????圖二 差分信號傳輸
1.3 RS-485 總線
????RS485采用半雙工工作方式,支持多點數據通信。RS485總線網絡拓撲一般采用終端匹配的總線型結構。即采用一條總線將各個節點串接起來,不支持環形或星型網絡。
????????????????????????????????????????????????????????圖三 RS485總線
????RS485總線只是一種電氣標準,并不是什么新的協議,與232差不多,當然這么說不是很恰當,但是有助于大家理解。現在的總線格式很多,RS485相對于其他的總線有什么特點?首先,就比較一下大家耳熟能詳的CAN總線。
1.4 CAN 總線
????CAN是控制器局域網絡(Controller Area Network, CAN)的簡稱,是由研發和生產汽車電子產品著稱的德國BOSCH公司開發了的,并最終成為國際標準(ISO11898)。
????相比于CAN總線,RS232、RS485只能代表通訊的物理介質層和鏈路層,如果要實現數據的雙向訪問,就必須自己編寫通訊應用程序,但這種程序多數都不能符合ISO/OSI的規范,只能實現較單一的功能,適用于單一設備類型,程序不具備通用性。
????CAN(Controller Area Network)屬于現場總線的范疇,它是一種以ISO/OSI模型為基礎的,具有完整的軟件支持系統,能夠解決總線控制、沖突檢測、鏈路維護等問題。現場總線設備自動成網,無主/從設備之分或允許多主存在。在同一個層次上不同廠家的產品可以互換,設備之間具有互操作性。
- CAN總線 VS RS485總線
????????????????????????????????????????????????????????圖四 CAN總線與RS485總線對比
1.5 RS-485 協議
????RS485協議一般含有指令頭、功能碼、設備地址、數據、校驗碼等部分組成,如朗園燈控485協議所示:
????????????????????????????????????????????????????????圖五 RS485 協議指令格式舉例
二、Modbus-RTU
2.1 Modbus來源
????Modbus是一種串行通信協議,施耐德電氣(Schneider Electric)于1979年為使用可編程邏輯控制器(PLC)通信而發表。Modbus已經成為工業領域通信協議的業界標準(De facto),并且現在是工業電子設備之間常用的連接方式。
????對于串行連接,存在兩個變種,它們在數值數據表示不同和協議細節上略有不同。Modbus RTU(遠程終端模式)是一種緊湊的,采用二進制表示數據的方式,Modbus ASCII是一種人類可讀的,冗長的表示方式。這兩個變種都使用串行通信(serial communication)方式。RTU格式后續的命令/數據帶有循環冗余校驗的校驗和,而ASCII格式采用縱向冗余校驗的校驗和。被配置為RTU變種的節點不會和設置為ASCII變種的節點通信,反之亦然。
????對于通過TCP/IP(例如以太網)的連接,存在多個Modbus/TCP變種,這種方式不需要校驗和計算。
2.2 原理
????Modbus協議是一個master/slave架構的協議。有一個節點是master節點,其他使用Modbus協議參與通信的節點是slave節點。每一個slave設備都有一個唯一的地址。在串行和MB+網絡中,只有被指定為主節點的節點可以啟動一個命令(在以太網上,任何一個設備都能發送一個Modbus命令,但是通常也只有一個主節點設備啟動指令)。
????一個ModBus命令包含了打算執行的設備的Modbus地址。所有設備都會收到命令,但只有指定位置的設備會執行及回應指令(地址0例外,指定地址0的指令是廣播指令,所有收到指令的設備都會運行,不過不回應指令)。所有的Modbus命令包含了檢查碼,以確定到達的命令沒有被破壞。基本的ModBus命令能指令一個RTU改變它的寄存器的某個值,控制或者讀取一個I/O端口,以及指揮設備回送一個或者多個其寄存器中的數據。
2.3 Modbus 協議
2.3.1 Modbus TCP 數據幀
????Modbus TCP 的數據幀可分為:MBAP(報文頭) + PDU(幀結構),PDU由功能碼和數據組成。
????報文頭長度為7字節,由事務處理標識、協議標識符、長度、單元標識符組成,協議標識符一般指協議的類型,比如00 00標識Modbus TCP,消息頭結構如下:
????????????????????????????????????????????????????????圖六 Modbus 報文頭
2.3.2 Modbus操作對象
???? 有四種:線圈、離散輸入、保持寄存器、輸入寄存器。
- 線圈 :PLC(可編程邏輯控制器)的輸出位,開關量,在Modbus中可讀可寫
- 離散量 :PLC的輸入位,開關量,在Modbus中只讀
- 輸入寄存器 :PLC中只能從模擬量輸入端改變的寄存器,在Modbus中只讀
- 保持寄存器 :PLC中用于輸出模擬量信號的寄存器,在Modbus中可讀可寫
根據操作對象不同,Modbus功能碼有不同的區分,例如如下常用功能碼:
01 (0x01) 讀線圈
02 (0x02) 讀離散量輸入
03 (0x03) 讀保持寄存器
04 (0x04) 讀輸入寄存器
05 (0x05) 寫單個線圈
06 (0x06) 寫單個寄存器
15 (0x0F) 寫多個線圈
16 (0x10) 寫多個寄存器
2.3.3 幀結構
????????????????????????????????????????????????????????圖七 Modbus 幀結構
從遠程設備中讀保持寄存器連續塊的內容的Modbus 指令實例如下:
? ? 0x03:讀保持寄存器
? ? 請求:MBAP 功能碼 起始地址H 起始地址L 寄存器數量H 寄存器數量L(共12字節)
? ? 響應:MBAP 功能碼 數據長度 寄存器數據(長度:9+寄存器數量×2)
? ? 如:起始地址是0x0000,寄存器數量是 0x0003
? ? ? ? 00 01 00 00 00 06 01 03 00 00 00 03
? ? 回:數據長度為0x06,第一個寄存器的數據為0x21,其余為0x00
? ? ? ? 00 01 00 00 00 09 01 03 06 00 21 00 00 00 00
2.4 與RS485的關系
????MODBUS只是通信協議的一種,就像漢語和英語一樣的一種用來交流的語言,一種機器之間交流的語言。在交流之前肯定要有溝通的橋梁,那就是傳輸媒介485或232或其他電氣規則。同一種協議可以用不同的傳輸媒介方式如485或232,但是同一傳輸線路上不能同時存在兩種協議。其中Modbus的協議棧如下圖所示:
?
????????????????????????????????????????????????????????圖八 Modbus 協議棧
????Modbus協議主要描述的是應用層的信息封裝格式,處于OSI模式的第七層(應用層)。Modbus的物理層可以是RS-485、Ethernet II /802.3。使用EIA/TIA-485這種串行通訊方式的Modbus協議框圖如下所示:
? ? ? ? ? ?
????????????????????????????????????????????????????????圖九 基于RS485的Modbus-RTU協議棧
總結
以上是生活随笔為你收集整理的Modbus 与 RS485 的区别与联系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CAM350 12.1免费下载
- 下一篇: 电子设计从零开始(1)