工業(yè)控制已從單機控制走向集中監(jiān)控、集散控制,如今已進入網(wǎng)絡時代,工業(yè)控制器連網(wǎng)也為網(wǎng)絡管理提供了方便。Modbus就是工業(yè)控制器的網(wǎng)絡協(xié)議中的一種。
丨Modbus通信協(xié)議簡介
Modbus協(xié)議,首先從字面理解它包括Mod和Bus兩部分,首先它是一種bus,即總線協(xié)議,和I2C、SPI類似,總線就意味著有主機,有從機,這些設備在同一條總線上。
Modbus支持單主機,多個從機,最多支持247個從機設備。關于Mod,因為這種協(xié)議最早被用在PLC控制器中,準確的說是Modicon公司的PLC控制器,這也是Mod-Bus名稱的由來。
后來Modicon被施耐德(Schneider)收購,Modbus協(xié)議廣泛應用在工業(yè)控制器、HMI和傳感器上,逐漸被其他廠商所接受,成為了一種主流的通訊協(xié)議,用于和外圍設備進行通訊。

Modbus在7層OSI參考模型中屬于第七層應用層,數(shù)據(jù)鏈路層有兩種:基于標準串口協(xié)議和TCP協(xié)議,物理層可使用3線232、2線485、4線422,或光纖、網(wǎng)線、無線等多種傳輸介質。

Modbus協(xié)議是一種請求/應答方式的交互過程,主機主動發(fā)起通訊請求,從機響應主機的請求,從機在沒有收到主機的請求時,不會主動發(fā)送數(shù)據(jù),從機之間不會進行通訊。
目前關于Modbus比較權威的官方標準文檔有兩個:
1.modbus_application_protocol_specification_v1.1b3.pdf
2.基于Modbus協(xié)議的工業(yè)自動化網(wǎng)絡規(guī)范GB-T19582.1-2008.pdf
*大部分的書籍和網(wǎng)絡資料都是翻譯自這兩篇文檔,文末獲取標準文檔下載方法。
丨Modbus 通信協(xié)議特點
(1)標準、開放,用戶可以免費、放心地使用Modbus協(xié)議,不需要交納許可證費,也不會侵犯知識產權。
(2)Modbus可以支持多種電氣接口,如RS-232、RS-485等,還可以在各種介質上傳送,如雙絞線、光纖、無線等。
(3)Modbus的幀格式簡單、緊湊,通俗易懂。用戶使用容易,廠商開發(fā)簡單。
丨Modbus4種數(shù)據(jù)類型
Modbus協(xié)議規(guī)定,進行讀寫操作的數(shù)據(jù)類型,按照讀寫屬性和類型可分為以下4種:
1.離散量輸入(Discretes Input ):1位,只讀
2.線圈(Coils):1位,讀寫
3.輸入寄存器(Input Registers ):16位,只讀
4.保持寄存器(Holding Registers):16位,讀寫

丨Modbus協(xié)議版本
Modbus協(xié)議目前存在用于串口、以太網(wǎng)以及其他支持互聯(lián)網(wǎng)協(xié)議的網(wǎng)絡的版本。
大多數(shù)Modbus設備通信通過串口EIA-485物理層進行。
對于串行連接,存在兩個變種,它們在數(shù)值數(shù)據(jù)表示不同和協(xié)議細節(jié)上略有不同。Modbus RTU是一種緊湊的,采用二進制表示數(shù)據(jù)的方式,Modbus ASCII是一種人類可讀的,冗長的表示方式。這兩個變種都使用串行通信(serial communication)方式。RTU格式后續(xù)的命令/數(shù)據(jù)帶有循環(huán)冗余校驗的校驗和,而ASCII格式采用縱向冗余校驗的校驗和。被配置為RTU變種的節(jié)點不會和設置為ASCII變種的節(jié)點通信,反之亦然。
對于通過TCP/IP(例如以太網(wǎng))的連接,存在多個Modbus/TCP變種,這種方式不需要校驗和計算。

對于所有的這三種通信協(xié)議在數(shù)據(jù)模型和功能調用上都是相同的,只有封裝方式是不同的。
Modbus有一個擴展版本ModbusPlus(Modbus+或者MB+),不過此協(xié)議是Modicon專有的,和Modbus不同。它需要一個專門的協(xié)處理器來處理類似HDLC的高速令牌旋轉。它使用1Mbit/s的雙絞線,并且每個節(jié)點都有轉換隔離裝置,是一種采用轉換/邊緣觸發(fā)而不是電壓/水平觸發(fā)的裝置。連接Modbus Plus到計算機需要特別的接口,通常是支持ISA(SA85),PCI或者PMCIA總線的板卡。
所以當我們提及Modbus協(xié)議時,要確定是哪種模式,不同的模式之間區(qū)別還是很大的。
丨Modbus數(shù)據(jù)幀格式
首先我們要知道一幀正常的MODBUS數(shù)據(jù)幀包含的內容有:地址域 + 功能碼 + 數(shù)據(jù) + 差錯校驗,再者無論是上述哪種協(xié)議版本,Modbus幀格式都是一樣的:

主要包括:
1.地址域:即主站要訪問的從站地址,其范圍0~247
2.功能碼:即主站想要對從站進行何種操作。
3.數(shù)據(jù):如果主站的請求是讀數(shù)據(jù),那么該“數(shù)據(jù)”要包含的信息有:從哪里開始讀數(shù)據(jù) + 讀多少數(shù)據(jù)。如果主站的請求是向從站寫數(shù)據(jù),那么該“數(shù)據(jù)”要包含的信息有:從哪里開始寫數(shù)據(jù) + 寫多少個字節(jié)數(shù)據(jù) + 要寫的具體數(shù)據(jù)。
4.差錯校驗:為了保證數(shù)據(jù)傳輸?shù)恼_性,Modbus協(xié)議會在數(shù)據(jù)幀最后面加上兩個字節(jié)的差錯校驗。
丨Modbus功能碼
Modbus功能碼,是寫在主機請求數(shù)據(jù)幀中的,決定主機進行讀還是寫操作,是讀線圈、離散量還是寄存器,是寫單個寄存器還是多個寄存器等等,決定主機請求什么類型的數(shù)據(jù)。
主要包括3類功能碼:公共功能碼、用戶定義功能碼和保留功能碼
1.公共功能碼
·是較好地被定義的功能碼
·保證是唯一的
·MODBUS 組織可改變的
·公開證明的
·具有可用的一致性測試
·MB IETF RFC 中證明的
·包含已被定義的公共指配功能碼和未來使用的未指配保留供功能碼
2.用戶定義功能碼
·有兩個用戶定義功能碼的定義范圍, 即65至72和十進制100至110
·用戶沒有 MODBUS 組織的任何批準就可以選擇和實現(xiàn)一個功能碼
·不能保證被選功能碼的使用是唯一的
·如果用戶要重新設置功能作為一個公共功能碼,那么用戶必須啟動 RFC,以便將改變引入公共分類中,并且指配一個新的公共功能碼。
3.保留功能碼
·一些公司對傳統(tǒng)產品通常使用并且對公共使用是無效的功能碼。

實際最常用的是公共功能碼中的4個功能碼:03/04/06/10

0x03:讀多個保持寄存器
0x04:讀輸入寄存器
0x06:寫單個保持寄存器
0x10:寫多個保持寄存器
因為PLC主要控制的是繼電器觸點,所以在PLC上還會經常對線圈(Coils)進行讀寫。這里需要特別注意的一點是:寫保持寄存器,需要區(qū)分0x06寫單個寄存器和0x10寫多個寄存器,而讀保持寄存器不區(qū)分讀單個和讀多個,當需要讀單個保持寄存器時,也是使用0x03指令,指定讀取數(shù)量為1。
以上就是關于Modbus協(xié)議的一些基礎知識,如果您想要獲取*Modbus權威的官方標準文檔,可關注微信公眾號【恩智測控NGI】,并在后臺發(fā)送“Modbus協(xié)議”即可。
審核編輯:湯梓紅
-
控制器
+關注
關注
114文章
17531瀏覽量
189145 -
通信
+關注
關注
18文章
6270瀏覽量
139276 -
ModBus協(xié)議
+關注
關注
3文章
188瀏覽量
34944
發(fā)布評論請先 登錄
Modbus協(xié)議轉HTTP協(xié)議,實現(xiàn)JSON格式對接MES等系統(tǒng)平臺
邁向工業(yè)4.0的第一步:從Modbus無線傳輸開始
什么是Modbus TCP協(xié)議
Modbus協(xié)議轉換:讓工業(yè)設備輕松“對話”
告別協(xié)議沖突!Modbus轉Profinet助力風速風向儀無縫對接
DLT645協(xié)議和Modbus協(xié)議有什么區(qū)別
興達易控modbus協(xié)議轉換網(wǎng)關配置步驟
EtherCAT轉modbus TCP借協(xié)議轉換網(wǎng)關模塊打通倍福PLC與上位機鏈路
聊聊Modbus協(xié)議的短板:是時候尋求替代了嗎?

關于Modbus協(xié)議的一些基礎知識
評論