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