1979年,施耐德電氣為工業(yè)現場總線協(xié)議制定了Modbus協(xié)議。現在很多工業(yè)上使用RS485通信的地方都使用Modbus協(xié)議,所以今天我們就來了解一下RS485通信和Modbus通信協(xié)議。
【一】前言
在工業(yè)控制、電力通信、智能儀器等領域,數據交換通常以串口通信的形式進行。最初的方法是RS232接口。由于工業(yè)現場復雜,各種電氣設備會在環(huán)境中產生更多的干擾信號,導致數據傳輸錯誤。
1979年,施耐德電氣為工業(yè)現場總線協(xié)議制定了Modbus協(xié)議?,F在很多工業(yè)上使用RS485通信的地方都使用Modbus協(xié)議,所以今天我們就來了解一下RS485通信和Modbus通信協(xié)議。
【二】 RS485通訊
1、RS232實際上是在RS485之前誕生的,但RS232也存在不足:
1)接口的信號電平值較高,達到10V以上,容易損壞通信接口的芯片,與TTL電平不兼容。因此,如果與單片機電路連接,則必須增加轉換電路。
2)接口中使用的電源線與其他設備在共地模式下通信,容易產生干擾,抗干擾性能差。
3)傳輸距離和速度有限,最多只能通信幾十米;通信只能在兩點之間進行,不能實現多機網絡通信。
2、對于RS232接口以上不足,出現了RS485等新的接口標準,RS485具有以下特點:
1)邏輯“1”以兩條線之間的電壓差為基礎(2-6)V表示;邏輯“0”表示兩條線之間的電壓差為-(2-6)V。接口信號電平低于RS232,不易損壞電路芯片,電平適合TTL電平,便于與TTL電路連接。
2)RS485通信速度快,數據最高傳輸速度在10Mbps以上;其內部物理結構采用均衡控制器與查分接收器的結合,大大提高了抗干擾性。
3)最大傳輸距離可達1200米左右,但傳輸速度與傳輸距離成反比。只有100KB/s以內的傳輸速度才能實現最大的通信距離。如果需要更長的傳輸距離,可以使用中繼器。
4)可在總線實現多機通信,總線允許掛多臺收發(fā)器,從現有RS485芯片來看,可掛325、64、128、256等各種設備的控制器。
3、RS485有兩線系統(tǒng)和四線系統(tǒng),四線系統(tǒng)只能實現點對點通信模式,現在很少選擇。這種兩線系統(tǒng)的接線模式是一個簡單的總線結構,最多可以連接到同一總線上的32個節(jié)點。在RS485通信網絡中,一般采用主從通信模式,即一個主機帶多個從機。
4、在很多情況下,在連接RS-485通信鏈路時,只需使用一對雙絞線將每個接口“A”、“B“端相互連接。忽略了信號連接,這種連接方式在很多地方都能正常工作,但卻埋下了很大的隱患。原因有二:
1)共模干擾問題:RS-485接口采用差分法傳輸信號法,不需要與參考點相比檢測信號。系統(tǒng)只需要檢查兩條線之間的電勢差。但人們通常忽略了收發(fā)器具有一定的共模電壓范圍,RS-485收發(fā)器共模電壓范圍-785~ 12V,只有滿足上述條件,整個網絡才能正常工作。當網絡線路中的共模電壓超過此范圍時,會影響通信的安全性和可靠性,甚至損壞接口。
2)EMI問題:發(fā)送控制器輸出信號中的共模部分需要返回通道。如果沒有低阻返回通道(信號地點),它將以輻射的方式返回源,整個總線將像一個巨大的天線一樣向外輻射電磁波。
5、由于PC機默認只包含RS232接口,以下措施可獲得PC上位機的RS485電路:
1)PC串口RS232信號通過RS232/RS485轉換電路轉換為RS485信號。對于復雜的工業(yè)環(huán)境,最好使用防浪涌帶隔離商品。
2)通過PCI多串口卡,可直接使用輸出信號為RS485型的擴展卡。
【三】 Modbus 通訊協(xié)議
Modbus協(xié)議是一種應用于電子控制器的通用語言。通過該協(xié)議,控制器可以通過網絡(如以太網)和設備之間的相互通信。它已成為一個通用的行業(yè)標準。有了它,不同制造商制造的控制系統(tǒng)可以連接到工業(yè)網絡進行集中監(jiān)控。
該協(xié)議定義了一個控制器可以理解使用的消息結構,描述了一個控制器要求瀏覽其他設備的過程,如何響應其他設備的要求,以及如何檢測和記錄錯誤。它制定了消息域模式和內容的公共格式。
1、Modbus具有以下特點:
1)規(guī)范開放,客戶可以免費放心使用Modbus協(xié)議,無需繳納許可證費或侵犯知識產權。目前支持Modbus的廠商有400多家,支持Modbus的產品有600多種。
2)Modbus可以提供多種電氣接口,如RS-232、RS-485等,也可在各種介質上傳輸,如雙絞線、光纖、無線等。
3)Modbus的幀格式簡單、緊湊、易懂。用戶方便,廠家開發(fā)方便。
2、Modbus 顯示存儲器的類型
1)線圈情況:輸出端口,可設置端口導出情況,也可讀取該位導出情況;
2)離散輸入狀態(tài):輸入端口,通過外部設置改變輸入狀態(tài),可讀但不能寫;
3)維護存儲器:控制器運行中設置的一些參數,可讀可寫;
4)輸入存儲器:控制器運行中從外圍設備獲得的一些參數,可讀不可寫。
3、Modbus 通信數據類型
1)單個寫入:
2)多個寫入:
3)讀取:
4、Modbus 功能碼概述
功能碼可分為位操作和字節(jié)操作,位操作的最小單位是Bit,字節(jié)操作的最小單位是兩個字節(jié)(Byte)。
(1)位操作指令:01H讀線圈、02HH離散輸入狀態(tài)02H、寫一個線圈05H、寫多個線圈0FH。
(2)字節(jié)操作指令:閱讀存儲存儲器03HH、04H讀取輸入存儲器、寫單個存儲存儲器06H、10H寫多個存儲存儲器。