什么是Modbus通訊協(xié)議?
Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個品牌)在1979年發(fā)明的一種工業(yè)控制總線協(xié)議,是全球第一個真正用于工業(yè)現(xiàn)場的總線協(xié)議。Modbus以其簡單、健壯、開放而且不需要特許授權(quán)的特點,成為通用通信協(xié)議。為了適應(yīng)以太網(wǎng)環(huán)境,Modbus被封裝在TCP包中,并且在默認(rèn)情況下通過TCP協(xié)議的502端口進行傳輸。
基于Modbus協(xié)議的系統(tǒng)由帶智能終端的可編程邏輯控制器和計算機通過公用線路或局部專用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件,又包括軟件。可應(yīng)用于各種數(shù)據(jù)采集和過程監(jiān)控。
Modbus協(xié)議采用主-從結(jié)構(gòu),為客戶機和服務(wù)器之間提供通信連接。
Modbus協(xié)議定義了一個與基礎(chǔ)通信無關(guān)的協(xié)議數(shù)據(jù)單元(Protocol Description Unit,PDU),描述協(xié)議的基本功能。PDU屬于應(yīng)用數(shù)據(jù)單元(Application Data Unit,ADU)的一部分,除此之外,ADU還包括附加地址域和差錯校驗域及實際傳輸?shù)臄?shù)據(jù),這個數(shù)據(jù)可能是業(yè)務(wù)數(shù)據(jù),也可能是指令、響應(yīng)信息或報警信息等。
Modbus協(xié)議包括ASCII、RTU、TCP三種報文類型,可以使用串口傳輸數(shù)據(jù)和指令。
Modbus協(xié)議的安全性介紹如下。
Modbus協(xié)議在傳輸數(shù)據(jù)時以明文方式傳輸,不進行任何安全處理。因此,Modbus協(xié)議存在明顯的安全缺陷。攻擊者一旦進入Modbus線路獲得數(shù)據(jù)包,就可以偽造、篡改數(shù)據(jù)包,還可以惡意篡改功能碼。
由于Modbus沒有安全認(rèn)證功能,因此攻擊者只要找到一個工業(yè)控制設(shè)備的合法地址,就可以隨意建立一個Modbus通信會話,從而造成控制混亂。由于Modbus沒有數(shù)據(jù)加密功能,因此攻擊者可以觀察到系統(tǒng)之間的控制關(guān)系和控制過程。由于Modbus缺乏授權(quán)和入侵訪問安全功能,因此任何用戶都有權(quán)執(zhí)行任意功能,為攻擊者提供了方便,同時也加大了內(nèi)部誤操作和內(nèi)部攻擊造成的危害。另外,攻擊者對功能碼的非法篡改和利用可導(dǎo)致拒絕服務(wù)攻擊等問題。Modbus協(xié)議的標(biāo)準(zhǔn)代碼還存在緩沖區(qū)溢出漏洞,一旦被攻擊者利用,可導(dǎo)致入侵,帶來嚴(yán)重的后果。運行在TCP/IP之上的Modbus協(xié)議還會繼承由TCP/IP協(xié)議的安全缺陷帶來的安全風(fēng)險。
Modbus 協(xié)議是:
Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個品牌)在1979年發(fā)明的一種工業(yè)控制總線協(xié)議,是全球第一個真正用于工業(yè)現(xiàn)場的總線協(xié)議。Modbus以其簡單、健壯、開放而且不需要特許授權(quán)的特點,成為通用通信協(xié)議。為了適應(yīng)以太網(wǎng)環(huán)境,Modbus被封裝在TCP包中,并且在默認(rèn)情況下通過TCP協(xié)議的502端口進行傳輸。
基于Modbus協(xié)議的系統(tǒng)由帶智能終端的可編程邏輯控制器和計算機通過公用線路或局部專用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件,又包括軟件??蓱?yīng)用于各種數(shù)據(jù)采集和過程監(jiān)控。
Modbus協(xié)議采用主-從結(jié)構(gòu),為客戶機和服務(wù)器之間提供通信連接。
Modbus協(xié)議定義了一個與基礎(chǔ)通信無關(guān)的協(xié)議數(shù)據(jù)單元(Protocol Description Unit,PDU),描述協(xié)議的基本功能。PDU屬于應(yīng)用數(shù)據(jù)單元(Application Data Unit,ADU)的一部分,除此之外,ADU還包括附加地址域和差錯校驗域及實際傳輸?shù)臄?shù)據(jù),這個數(shù)據(jù)可能是業(yè)務(wù)數(shù)據(jù),也可能是指令、響應(yīng)信息或報警信息等。
Modbus協(xié)議包括ASCII、RTU、TCP三種報文類型,可以使用串口傳輸數(shù)據(jù)和指令。
1、 Modbus簡介
Modbus 是由 Modicon(現(xiàn)為施耐德電氣公司的一個品牌)在 1979 年發(fā)明的,是全球第一個真正 用于工業(yè)現(xiàn)場的總線協(xié)議。
ModBus 網(wǎng)絡(luò)是一個工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計算機通過公用線路或局部專 用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件、亦包括軟件。它可應(yīng)用于各種數(shù)據(jù)采集和過程監(jiān)控。
為更好地普及和推動 Modbus 在基于以太網(wǎng)上的分布式應(yīng)用,目前施耐德公司已將 Modbus 協(xié)議的 所有權(quán)移交給 IDA(Interface for Distributed Automation,分布式自動化接口)組織,并成立了 Modbus-IDA 組織,為 Modbus 今后的發(fā)展奠定了基礎(chǔ)。
在中國,Modbus 已經(jīng)成為國家標(biāo)準(zhǔn),并有專業(yè)的規(guī)范文檔,感興趣的可以去查閱相關(guān)的文件,詳情如下:
標(biāo)準(zhǔn)編號為:GB/T19582-2008
文件名稱:《基于 Modbus 協(xié)議的工業(yè)自動化網(wǎng)絡(luò)規(guī)范》
主要有三部分的內(nèi)容,分別如下:
《GB/T 19582.1-2008 第 1 部分:Modbus 應(yīng)用協(xié)議》
《GB/T 19582.2-2008 第 2 部分:Modbus 協(xié)議在串行鏈路上的實現(xiàn)指南》
《GB/T 19582.3-2008 第 3 部分: Modbus 協(xié)議在 TCP/IP 上的實現(xiàn)指南》
2、Modbus協(xié)議概述
Modbus是一個主-從模式的通信協(xié)議,屬于數(shù)據(jù)鏈路層上的協(xié)議,協(xié)議本身不涉及具體的硬件要求。
常見的應(yīng)用Modbus協(xié)議的物理接口有RS-485、RS232、USART等的通信鏈路中。
Modbus協(xié)議中,一個時刻內(nèi)只允許有一個主機連接于總線,多個從機連接于總線上,通信都是只能由主機發(fā)起,從機進行響應(yīng)。不能從從機主動發(fā)起通信。
3、Modbus 主從機通信模式
主機和從機之間的通信,可以用兩種模式進行:廣播通知模式、單播點對點模式。
3.1、單播點對點模式
主機按照從機的明確地址訪問相應(yīng)的從機,從機接到來自主機的請求并處理完請求后,從機會向主機返回一個應(yīng)答,完成一個通信。
在這種模式,一個 Modbus 事務(wù)處理包含 2 個報文:一個來自主機的請求,一個來自從機的應(yīng)答。
在總線上,每個從機都必須有唯一的從機地址 (1 到 247),這樣才能區(qū)別于其它節(jié)點被獨立的尋址。
3.2、廣播通知模式
主機向所總線通過廣播指令發(fā)送請求,所有的從機都要接收來自主機的廣播信息。
對于主機廣播的請求,從機是沒有應(yīng)答返回的。所有的從機必須要接受主機的廣播寫功能。
地址 0 是專門用于主機向各個從機廣播數(shù)據(jù)的。
4、Modbus 地址規(guī)則
Modbus 尋址空間可以有 256 個不同地址。如下圖所示:
地址 0 為廣播地址。所有的從機必須識別廣播地址。
Modbus 主機本身是沒有地址的,只有從機必須要有一個地址。該地址必須在 Modbus 串行總線上唯一。
248~255作為預(yù)留使用的地址。
5、Modbus 的幀格式
Modbus的幀格式按照選擇的模式不同幀格式也是有所區(qū)別的。
5.1、RTU模式
RTU 模式下的幀格式如下圖:Modbus RTU 幀總長度最大為 256 字節(jié)。
RTU 模式每個字節(jié) ( 11 位 ) 的格式為** :**
8–位二進制,報文中每個 8 位字節(jié)含有兩個 4 位十六進制字符(0–9, A–F)
每字節(jié)的 bit 流:
1 起始位
8 數(shù)據(jù)位, 首先發(fā)送最低有效位
1 位作為奇偶校驗
1 停止位
偶校驗是要求的, 其它模式 ( 奇校驗, 無校驗 ) 也可以使用。為了保證與其它產(chǎn)品的最大兼容性, 同時支持無校驗?zāi)J绞墙ㄗh的。默認(rèn)校驗?zāi)J侥J? 必須為偶校驗。
注 : 使用無校驗要求 2 個停止位。
RTU模式時,每個字符或字節(jié)均由此順序發(fā)送(從左到右):
最低有效位 (LSB) . . . 最高有效位 (MSB)
MODBUS通訊協(xié)議是工業(yè)自動化領(lǐng)域中廣泛使用的一種串行通信協(xié)議。它由美國Modicon公司于1979年開發(fā),現(xiàn)在已經(jīng)成為工業(yè)電子設(shè)備之間通信的標(biāo)準(zhǔn)。MODBUS協(xié)議支持主從結(jié)構(gòu),允許多個設(shè)備通過串行線纜進行通信。根據(jù)不同的傳輸方式和數(shù)據(jù)格式,MODBUS協(xié)議可以分為多種類型。
一、MODBUS RTU(MODBUS Real-time Unit)
MODBUS RTU是MODBUS協(xié)議的一種形式,它采用二進制數(shù)據(jù)格式進行通信。在RTU模式下,數(shù)據(jù)幀中的每個字節(jié)之間沒有分隔符,字節(jié)之間通過停止位進行區(qū)分。MODBUS RTU支持半雙工通信,即在一個方向上的數(shù)據(jù)傳輸完成后,需要切換到另一個方向進行數(shù)據(jù)傳輸。它適用于長距離、低速率的通信場合。
二、MODBUS ASCII(MODBUS ASCII)
MODBUS ASCII是MODBUS協(xié)議的另一種形式,它采用ASCII字符格式進行通信。在ASCII模式下,數(shù)據(jù)幀中的每個字節(jié)之間有一個分隔符,字節(jié)之間通過空格進行區(qū)分。MODBUS ASCII支持半雙工通信,它適用于需要傳輸文本信息或者需要查看通信數(shù)據(jù)的場合。
三、MODBUS TCP/IP(MODBUS over TCP/IP)
MODBUS TCP/IP是MODBUS協(xié)議在以太網(wǎng)上的實現(xiàn),它采用TCP/IP協(xié)議進行通信。在TCP/IP模式下,MODBUS設(shè)備通過IP地址和端口號進行標(biāo)識,主機設(shè)備可以通過網(wǎng)絡(luò)接口與MODBUS設(shè)備進行通信。MODBUS TCP/IP支持全雙工通信,即兩個方向上的數(shù)據(jù)傳輸可以同時進行。它適用于需要遠程控制和監(jiān)控的場合。
四、MODBUS串行(MODBUS Serial)
MODBUS串行是MODBUS協(xié)議的基本形式,它采用串行線纜進行通信。在串行模式下,數(shù)據(jù)幀中的每個字節(jié)之間有一個起始位和一個停止位,字節(jié)之間通過電平的跳變進行區(qū)分。MODBUS串行支持半雙工通信,它適用于近距離、高速率的通信場合。根據(jù)傳輸線的類型和電平的不同,MODBUS串行可以分為多種不同的物理層接口,如RS-485、RS-422、RS-232等。
五、其他類型
除了上述四種類型外,還有一些其他類型的MODBUS協(xié)議。例如,MODBUS Plus是一種適用于以太網(wǎng)的MODBUS協(xié)議,它采用令牌環(huán)方式進行通信;MODBUS ProfiNet是一種適用于工業(yè)以太網(wǎng)的MODBUS協(xié)議,它采用TCP/IP協(xié)議進行通信;MODBUS-IDA是一種適用于工業(yè)自動化的MODBUS協(xié)議,它支持多種不同的總線接口和數(shù)據(jù)格式。