欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Modbus協(xié)議的RTU、ASCII、TCP的原理及區(qū)別

strongerHuang ? 來(lái)源:strongerHuang ? 作者:strongerHuang ? 2022-12-06 09:42 ? 次閱讀

校驗(yàn)碼:校驗(yàn)碼通常是一組數(shù)字的最后一位,由前面的數(shù)字通過(guò)某種運(yùn)算得出,用以檢驗(yàn)該組數(shù)據(jù)的正確性。代碼作為數(shù)據(jù)在向計(jì)算機(jī)或其它設(shè)備進(jìn)行輸入時(shí),容易產(chǎn)生輸入錯(cuò)誤,為了減少這種輸入錯(cuò)誤,編碼專(zhuān)家發(fā)明了各種校驗(yàn)檢錯(cuò)方法,并依據(jù)這些方法設(shè)置了校驗(yàn)碼。常用的校驗(yàn)有:累加和校驗(yàn)SUM、字節(jié)異或校驗(yàn)XOR、縱向冗余校驗(yàn)LRC、循環(huán)冗余校驗(yàn)CRC……

離散量輸入:主要用來(lái)讀取單個(gè)位的數(shù)據(jù),如IO的狀態(tài);

線(xiàn)圈:開(kāi)關(guān)輸出信號(hào),主要用來(lái)寫(xiě)入單個(gè)位的數(shù)據(jù),與離散量構(gòu)成組成對(duì)位的操作;

輸入寄存器:主要用來(lái)讀取16位,也就是兩個(gè)字節(jié)的數(shù)據(jù);

保持寄存器:主要用來(lái)寫(xiě)入16位的數(shù)據(jù);

PLC:可編程邏輯控制器,是一種采用一類(lèi)可編程的存儲(chǔ)器,用于其內(nèi)部存儲(chǔ)程序和執(zhí)行邏輯運(yùn)算、順序控制、定時(shí)、計(jì)數(shù)與算術(shù)操作等面向用戶(hù)的指令,并通過(guò)數(shù)字或模擬式輸入/輸出控制各種類(lèi)型的機(jī)械或生產(chǎn)過(guò)程。

串口通信:隨著計(jì)算機(jī)系統(tǒng)的應(yīng)用和微機(jī)網(wǎng)絡(luò)的發(fā)展,通信功能越來(lái)越顯得重要。這里所說(shuō)的通信是指計(jì)算機(jī)與外界的信息交換。因此,通信既包括計(jì)算機(jī)與外部設(shè)備之間,也包括計(jì)算機(jī)和計(jì)算機(jī)之間的信息交換。由于串行通信是在一根傳輸線(xiàn)上一位一位的傳送信息,所用的傳輸線(xiàn)少,并且可以借助現(xiàn)成的電話(huà)網(wǎng)進(jìn)行信息傳送,因此特別適合于遠(yuǎn)距離傳輸。對(duì)于那些與計(jì)算機(jī)相距不遠(yuǎn)的人-機(jī)交換設(shè)備和串行存儲(chǔ)的外部設(shè)備如終端、打印機(jī)、邏輯分析儀、磁盤(pán)等,采用串行方式交換數(shù)據(jù)也很普遍。在實(shí)時(shí)控制和管理方面,采用多臺(tái)微機(jī)處理機(jī)組成分級(jí)分布控制系統(tǒng)中,各 CPU 之間的通信一般都是串行方式。所以串行接口是微機(jī)應(yīng)用系統(tǒng)常用的接口。許多外設(shè)和計(jì)算機(jī)按串行方式進(jìn)行通信,這里所說(shuō)的串行方式,是指外設(shè)與接口電路之間的信息傳送方式,實(shí)際上CPU 與接口之間仍按并行方式工作。

串口:串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的協(xié)議,不要與通用串行總線(xiàn)Universal Serial Bus(USB)混淆。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于RS232的串口。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口。同時(shí),串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。

串口通信的概念非常簡(jiǎn)單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信要慢,但是串口可以在使用一根線(xiàn)發(fā)送數(shù)據(jù)的同時(shí)用另一根線(xiàn)接收數(shù)據(jù)。它很簡(jiǎn)單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。比如IEEE488定義并行通行狀態(tài)時(shí),規(guī)定設(shè)備線(xiàn)總常不得超過(guò)20米,并且任意兩個(gè)設(shè)備間的長(zhǎng)度不得超過(guò)2米;而對(duì)于串口而言,長(zhǎng)度可達(dá)1200米。

典型地,串口用于ASCII碼字符的傳輸。通信使用3根線(xiàn)完成:地線(xiàn)、發(fā)送和接收。由于串口通信是異步的,端口能夠在一根線(xiàn)上發(fā)送數(shù)據(jù)同時(shí)在另一根線(xiàn)上接收數(shù)據(jù)。其他線(xiàn)用于握手,但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通行的端口,這些參數(shù)必須匹配:

a. 波特率:這是一個(gè)衡量通信速度的參數(shù)。它表示每秒鐘傳送的bit的個(gè)數(shù)。例如300波特表示每秒鐘發(fā)送300個(gè)bit。當(dāng)我們提到時(shí)鐘周期時(shí),我們就是指波特率。例如如果協(xié)議需要4800波特率,那么時(shí)鐘是4800Hz。這意味著串口通信在數(shù)據(jù)線(xiàn)上的采樣率為4800Hz。通常電話(huà)線(xiàn)的波特率為14400,28800和36600。波特率可以遠(yuǎn)遠(yuǎn)大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通信,典型的例子就是GPIB設(shè)備的通信。


b. 數(shù)據(jù)位:這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,實(shí)際的數(shù)據(jù)不會(huì)是8位的,標(biāo)準(zhǔn)的值是5、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標(biāo)準(zhǔn)的ASCII碼是0~127(7位)。擴(kuò)展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡(jiǎn)單的文本(標(biāo)準(zhǔn) ASCII碼),那么每個(gè)數(shù)據(jù)包使用7位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開(kāi)始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。由于實(shí)際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語(yǔ)“包”指任何通信的情況。


c. 停止位:用于表示單個(gè)包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線(xiàn)上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時(shí)也越慢。


d. 奇偶校驗(yàn)位:在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、奇、高和低。當(dāng)然沒(méi)有校驗(yàn)位也是可以的。對(duì)于偶和奇校驗(yàn)的情況,串口會(huì)設(shè)置校驗(yàn)位(數(shù)據(jù)位后面的一位),用一個(gè)值確保傳輸?shù)臄?shù)據(jù)有偶個(gè)或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對(duì)于偶校驗(yàn),校驗(yàn)位為0,保證邏輯高的位數(shù)是偶數(shù)個(gè)。如果是奇校驗(yàn),校驗(yàn)位1,這樣就有3個(gè)邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡(jiǎn)單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備能夠知道一個(gè)位的狀態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。

02背景

早在1971年,Modicon公司首次推出了Modbus協(xié)議,ModbusRTU和Modbus ASCII誕生于此。后來(lái)施耐德電氣(SchneiderElectric)收購(gòu)了Modicon公司,并在1997年推出了ModbusTCP協(xié)議。2004年,中國(guó)國(guó)家標(biāo)準(zhǔn)委員會(huì)正式把Modbus作為了國(guó)家標(biāo)準(zhǔn),開(kāi)啟了Modbus為中國(guó)工業(yè)通信做貢獻(xiàn)的時(shí)代。

通過(guò)此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)和其它設(shè)備之間可以通信。Modbus協(xié)議具有標(biāo)準(zhǔn)、開(kāi)放,可以支持多種電氣接口,數(shù)據(jù)幀格式簡(jiǎn)單緊湊,數(shù)據(jù)傳輸量大、實(shí)時(shí)性好等特點(diǎn),在工業(yè)控制系統(tǒng)中得到了廣泛的應(yīng)用,已經(jīng)成為通用工業(yè)標(biāo)準(zhǔn)。深入分析Modbus協(xié)議實(shí)現(xiàn)原理和其安全性對(duì)提高工控系統(tǒng)安全性有著重要的現(xiàn)實(shí)意義。

ModbusRTU和ModbusASCII主要用于串行通信領(lǐng)域,而ModbusTCP則常用于以太網(wǎng)通信?,F(xiàn)在,Modbus已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議標(biāo)準(zhǔn),并且現(xiàn)在是工業(yè)電子設(shè)備之間相當(dāng)常用的連接方式。

8115aa04-74fc-11ed-8abf-dac502259ad0.jpg

03協(xié)議原理

Modbus使用一種簡(jiǎn)單的MasterandSlave主從協(xié)議(客戶(hù)機(jī)/服務(wù)器協(xié)議)進(jìn)行通信??蛻?hù)機(jī)作為主站,向服務(wù)器發(fā)送請(qǐng)求;服務(wù)器(從站)接到請(qǐng)求后,對(duì)請(qǐng)求進(jìn)行分析并作出應(yīng)答。其中使用的通信幀被稱(chēng)為應(yīng)用數(shù)據(jù)單元(Application Data Unit,ADU),它包括通信地址段、功能代碼段、數(shù)據(jù)段和校驗(yàn)段,如下圖:

81282012-74fc-11ed-8abf-dac502259ad0.jpg

一般使用上,監(jiān)控系統(tǒng)(HMI)都為Master,PLC、電表、儀表等都為Slave,HMI系統(tǒng)一直P(pán)ollingSlave的各種relayandregister最新數(shù)值,然后做顯示及各種邏輯計(jì)算及控制調(diào)整等處理。

其中,功能代碼段和數(shù)據(jù)段組合稱(chēng)為協(xié)議數(shù)據(jù)單元(Protocol Data Unit or Protocol Description Unit),PDU)。功能代碼段占用一個(gè)字節(jié),取值范圍為1~255,其中128~255為保留值,用于異常消息應(yīng)答報(bào)文。1~127為功能代碼編號(hào),其中65~72和100~110為用戶(hù)自定義編碼。

04傳輸方式

Modbus 協(xié)議是一種應(yīng)用層報(bào)文傳輸協(xié)議,包括ASCII、RTU、TCP三種報(bào)文類(lèi)型,協(xié)議本身并沒(méi)有定義物理層,只是定義了控制器能夠認(rèn)識(shí)和使用的消息結(jié)構(gòu),而不管它們是經(jīng)過(guò)何種網(wǎng)絡(luò)進(jìn)行通信的。

Modbus 協(xié)議使用串口傳輸時(shí)可以選擇RTU或ASCII模式,并規(guī)定了消息、數(shù)據(jù)結(jié)構(gòu)、命令和應(yīng)答方式并需要對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)。ASCII 模式采用LRC校驗(yàn),RTU模式采用16 位CRC校驗(yàn)。通過(guò)以太網(wǎng)傳輸時(shí)使用TCP,這種模式不使用校驗(yàn),因?yàn)門(mén)CP協(xié)議是一個(gè)面向連接的可靠協(xié)議。

05ModbusRTU與Modbus ASCII有什么區(qū)別

Modbus是一種應(yīng)用層協(xié)議,它定義了與基礎(chǔ)網(wǎng)絡(luò)無(wú)關(guān)的數(shù)據(jù)單元(ADU),可以在以太網(wǎng)(TCP/IP)或串行鏈路上(RS232、RS485等)進(jìn)行通信(以太網(wǎng)ADU和串行ADU略有不同)。在串行鏈路上,Modbus協(xié)議有兩種傳輸模式——ASCII模式和RTU模式。其中,ASCII是英文“American Standard Code for Information Interchange”的縮寫(xiě),中文翻譯為“美國(guó)國(guó)家信息交換標(biāo)準(zhǔn)編碼”;RTU是英文“ Remote Terminal Unit”的縮寫(xiě),中文翻譯為“遠(yuǎn)程終端設(shè)備”。

首先,讓我們來(lái)看看Modbus的工作原理。

Modbus采用主從(Master-Salve)通信模式,僅有主設(shè)備(Master)能對(duì)傳輸進(jìn)行初始化,從設(shè)備(Slave)根據(jù)主設(shè)備的請(qǐng)求進(jìn)行應(yīng)答。典型的主設(shè)備包括現(xiàn)場(chǎng)儀表和顯示面板,典型的從設(shè)備為可編程邏輯控制器(PLC)。

在串行鏈路的主從通信中,Modbus主設(shè)備可以連接一個(gè)或N(最大為247)個(gè)從設(shè)備,主從設(shè)備之間的通信包括單播模式和廣播模式。

在廣播模式中,Modbus主設(shè)備可同時(shí)向多個(gè)從設(shè)備發(fā)送請(qǐng)求(設(shè)備地址0用于廣播模式),從設(shè)備對(duì)廣播請(qǐng)求不進(jìn)行響應(yīng)。

在單播模式中,主設(shè)備發(fā)送請(qǐng)求至某個(gè)特定的從設(shè)備(每個(gè)Modbus從設(shè)備具有唯一地址),請(qǐng)求的消息幀中會(huì)包含功能代碼和數(shù)據(jù),比如功能代碼“01”用來(lái)讀取離散量線(xiàn)圈的狀態(tài)。從設(shè)備接到請(qǐng)求后,進(jìn)行應(yīng)答并把消息反饋主設(shè)備。

8132be00-74fc-11ed-8abf-dac502259ad0.jpg

在主從設(shè)備的通信中,可以使用ASCII模式或者RTU模式。在ASCII(AmericanStandard Code for Information Interchange)傳輸模式下,消息幀以英文冒號(hào)(“:”,ASCII3A Hex)開(kāi)始,以回車(chē)和換號(hào)(CRLF,ASCII 0D and 0A Hex)符號(hào)結(jié)束,允許的傳輸?shù)淖址癁槭M(jìn)制的0~9和A~F;網(wǎng)絡(luò)中的從設(shè)備監(jiān)視傳輸通路上是否有英文冒號(hào)(“:”),如果有的話(huà),就對(duì)消息幀進(jìn)行解碼,查看消息中的地址是否與自己的地址相同,如果相同的話(huà),就接收其中的數(shù)據(jù);如果不同的話(huà),則不予理會(huì)。

814b2e18-74fc-11ed-8abf-dac502259ad0.jpg

在ASCII模式下,每個(gè)8位的字節(jié)被拆分成兩個(gè)ASCII字符進(jìn)行發(fā)送,比如十六進(jìn)制數(shù)0xAF ,會(huì)被分解成ASCII字符“A”和“F”進(jìn)行發(fā)送,發(fā)送的字符量比RTU增加一倍。ASCII模式的好處是允許兩個(gè)字符之間間隔的時(shí)間長(zhǎng)達(dá)1s而不引發(fā)通信故障,該模式采用縱向冗余校驗(yàn)(Longitudinal Redundancy Check ,LRC)) 的方法來(lái)檢驗(yàn)錯(cuò)誤,當(dāng)控制器設(shè)為在Modbus 網(wǎng)絡(luò)上以RTU 模式通信,消息中的每個(gè)8Bit 字節(jié)都包含兩個(gè)4 Bit 的十六進(jìn)制字符,這種模式?jīng)]有開(kāi)始和結(jié)束標(biāo)記。其優(yōu)點(diǎn)是: 在同樣的波特率下,可傳送更多的數(shù)據(jù)。

在RTU(RemoteTerminal Unit)模式下,每個(gè)字節(jié)可以傳輸兩個(gè)十六進(jìn)制字符,比如十六進(jìn)制數(shù)0xAF,直接以十六進(jìn)制0xAF(二進(jìn)制:10101111)進(jìn)行發(fā)送,因此它的發(fā)送密度比ASCII模式高一倍;RTU模式采用循環(huán)冗余校驗(yàn)(CRC),下面是對(duì)RTU模式的總結(jié):

具體格式如下圖所示:

815c64e4-74fc-11ed-8abf-dac502259ad0.jpg

06ModbusTCP及其注意點(diǎn)

6.1 主機(jī)和從機(jī)、服務(wù)端和客戶(hù)端

【在modbus協(xié)議中】

主機(jī)發(fā)送modbus請(qǐng)求,從機(jī)根據(jù)請(qǐng)求內(nèi)容向主機(jī)返回響應(yīng)。在modbus協(xié)議中,主機(jī)總是主動(dòng)方,從機(jī)總是被動(dòng)方。

【在網(wǎng)絡(luò)應(yīng)用中】

在網(wǎng)絡(luò)應(yīng)用中存在客戶(hù)端和服務(wù)器端,客戶(hù)端(例如瀏覽器)發(fā)送請(qǐng)求到服務(wù)器,服務(wù)器向客戶(hù)端返回內(nèi)容(例如HTML文本)。

【在modbus tcp中】

主機(jī)是客戶(hù)端,而從機(jī)是服務(wù)器端。千萬(wàn)不要以為服務(wù)器端重要,主機(jī)也重要,所以主機(jī)就是服務(wù)器端。

6.2 是否可以多主機(jī)

通過(guò)前面的分析,主機(jī)為客戶(hù)端那么modbustcp支持多個(gè)主機(jī),在一個(gè) 局域網(wǎng)中可存在多個(gè)主機(jī)和多個(gè)從機(jī)。從機(jī)的連接能力(連接主機(jī)的數(shù) 量)由uIP的最大TCP連接個(gè)數(shù)決定。

6.3 modbus TCP協(xié)議簡(jiǎn)述

modbus TCP和modbus RTU基本相同,但是也存在一些區(qū)別:

a.從機(jī)地址變得不再重要,多數(shù)情況下忽略。從某種意義上說(shuō)從機(jī)地址被IP地址取代;

b.CRC校驗(yàn)變得不再重要,甚至可以忽略。由于TCP數(shù)據(jù)包中已經(jīng)存在校驗(yàn),為了不重復(fù)造輪子,modbus TCP干脆取消了CRC校驗(yàn)。

TCP 模式是為了讓Modbus 數(shù)據(jù)順利在以太網(wǎng)上傳輸產(chǎn)生的,使用TCP502 端口。該協(xié)議物理層,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層,傳輸層都是基于TCP 協(xié)議,只在應(yīng)用層,將Modbus 協(xié)議修改后封裝進(jìn)去; 接收端將該TCP 數(shù)據(jù)包拆封后,重新獲得原始Modbus 幀,然后按照Modbus 協(xié)議規(guī)范進(jìn)行解析,并將返回的數(shù)據(jù)包重新封裝進(jìn)TCP 協(xié)議中,返回到發(fā)送端。與串行鏈路傳輸?shù)臄?shù)據(jù)格式不同,TCP 模式去除了附加地址和校驗(yàn),增加了報(bào)文頭,其具體格式如圖4所示。

816ffacc-74fc-11ed-8abf-dac502259ad0.jpg

在modbus TCP中包含一個(gè)MBAP頭,該頭包含以下幾個(gè)部分:

區(qū)域

長(zhǎng)度

描述

客戶(hù)端

服務(wù)器

傳輸標(biāo)志 2字節(jié) MODBUS 請(qǐng)求和響應(yīng)傳輸過(guò)程中序列號(hào) 客戶(hù)端生成 應(yīng)答時(shí)復(fù)制該值
協(xié)議標(biāo)志 2字節(jié) Modbus協(xié)議默認(rèn)為0 客戶(hù)端生成 應(yīng)答時(shí)復(fù)制該值
長(zhǎng)度 2字節(jié) 剩余部分的長(zhǎng)度 客戶(hù)端生成 應(yīng)答時(shí)由服務(wù)器端生成
單元標(biāo)志 1字節(jié) 從機(jī)標(biāo)志(從機(jī)地址) 客戶(hù)端生成 應(yīng)答時(shí)復(fù)制該值

注意:

a.傳輸標(biāo)志可理解為序列號(hào),防止 MODBUS TCP通信錯(cuò)位,例如后發(fā)生的響應(yīng)先到了主機(jī),而早發(fā)生的響應(yīng)后到主機(jī);

b.單元標(biāo)志可理解為從機(jī)地址,此時(shí)已經(jīng)不再重要。

6.4 modbus tcp 和 TCP IP的關(guān)系

modbus TCP可以理解為發(fā)生在TCP上的應(yīng)用層協(xié)議,既然是TCP協(xié)議那么一個(gè)完整的MODBUSTCP報(bào)文必然包括TCP首部,IP首部和Ethernet首部。


07功能碼作用

啟動(dòng)Modbus事務(wù)處理的客戶(hù)機(jī)創(chuàng)建Modbus應(yīng)用數(shù)據(jù)單元。功能碼(PDU中的)向服務(wù)器指示將執(zhí)行哪種操作。

用一個(gè)字節(jié)編碼Modbus數(shù)據(jù)單元的功能碼域。有效范圍是十制制1-255(128-255為異常響應(yīng)保留)。當(dāng)從客戶(hù)機(jī)向服務(wù)器發(fā)送報(bào)文時(shí),功能碼域通過(guò)服務(wù)器執(zhí)行哪種操作。

從客戶(hù)機(jī)向服務(wù)器發(fā)送的報(bào)文數(shù)據(jù)域包括附加信息,服務(wù)器使用這個(gè)信息執(zhí)行功能碼定義的操作。這個(gè)域還包括離散項(xiàng)目和寄存器地址、處理項(xiàng)目的數(shù)量以及域中的實(shí)際數(shù)據(jù)字節(jié)數(shù)。

在某種請(qǐng)求中,數(shù)據(jù)域可以是不存在的,在此情況下服務(wù)器不需要任何附加信息。功能碼僅說(shuō)明操作。

功能碼的類(lèi)型:

功能碼主要分為有效功能碼、異常功能碼和錯(cuò)誤功能碼。如果在一個(gè)正確接收Modbus ADU中,不出現(xiàn)與請(qǐng)求Modbus功能有關(guān)的差錯(cuò),那么服務(wù)器至客戶(hù)機(jī)的響應(yīng)數(shù)據(jù)會(huì)包含請(qǐng)求中的正常功能碼。如果出現(xiàn)與請(qǐng)求Modbus功能有關(guān)的差錯(cuò),那么響應(yīng)數(shù)據(jù)會(huì)包含一個(gè)異常碼和錯(cuò)誤碼。

例如,客戶(hù)機(jī)能夠讀一組離散量輸出或輸入的開(kāi)/關(guān)狀態(tài),或者用戶(hù)能夠讀/寫(xiě)一組寄存器數(shù)據(jù)內(nèi)容。當(dāng)服務(wù)器對(duì)客戶(hù)機(jī)響應(yīng)時(shí),它使用功能碼域來(lái)指示正常(無(wú)差錯(cuò))響應(yīng)或出現(xiàn)某種差錯(cuò)(稱(chēng)為異常響應(yīng))。對(duì)于一個(gè)正常響應(yīng)來(lái)說(shuō),服務(wù)器僅對(duì)原始功能碼響應(yīng)。

對(duì)于異常響應(yīng),服務(wù)器返回一個(gè)與客戶(hù)機(jī)等同的碼,設(shè)置該原始功能碼的最高有效位為邏輯1,并加該異常碼后增加錯(cuò)誤碼,以通知客戶(hù)機(jī)異常原因。

有效功能碼

有效功能碼有二十幾種,但是一般使用上都以1、2、3、4、5、6、15、16等八種最為常用,以及另外特殊使用的20、21兩種,此為General Reference Register,絕大部份的Modbus設(shè)備并不會(huì)提供此Register。于PLC上主要的控制數(shù)據(jù)有下列四種型式。此八種功能碼就是處理這些控制資料,詳細(xì)說(shuō)明如下各點(diǎn):

控制數(shù)據(jù)四種型式:

DI:DigitalInput(數(shù)字輸入,離散輸入),一個(gè)地址一個(gè)數(shù)據(jù)位,用戶(hù)只能讀取它的狀態(tài),不能修改。以一個(gè) bit表示 On/Off,用來(lái)記錄控制信號(hào)的狀態(tài)輸入,例如:開(kāi)關(guān),接觸點(diǎn),馬達(dá)運(yùn)轉(zhuǎn),超限switch…等等。于PLC上被稱(chēng)為Input relay、input coil等。

DO:DigitalOutput(數(shù)字輸出,線(xiàn)圈輸出),一個(gè)地址一個(gè)數(shù)據(jù)位,用戶(hù)可以置位、復(fù)位,可以回讀狀態(tài)。以一個(gè) bit表示 On/Off,用來(lái)輸出控制信號(hào),以激活或停止馬達(dá),警鈴,燈光…等等。于PLC上被稱(chēng)為Output relay、Output coil等。

AIAnalog Input(模擬輸入,輸入寄存器),一個(gè)地址16位數(shù)據(jù),用戶(hù)只能讀,不能修改,,以16 bits integer表示一個(gè)數(shù)值,用來(lái)記錄控制信號(hào)的數(shù)值輸入,例如:溫度、流量、料量、速度、轉(zhuǎn)速、文件板開(kāi)度、液位、重量…等等。于PLC上被稱(chēng)為Input register。

AO:AnalogOutput(模擬輸出,保持寄存器),一個(gè)地址16位數(shù)據(jù),用戶(hù)可以寫(xiě),也可以回讀,以16 bits integer表示一個(gè)數(shù)值,用來(lái)輸出控制信號(hào)的數(shù)值,例如:溫度、流量、速度、轉(zhuǎn)速、文件板開(kāi)度、飼料量…等等設(shè)定值。于PLC上被稱(chēng)為Output register、Holding register。

81896002-74fc-11ed-8abf-dac502259ad0.jpg


08Modbus協(xié)議安全分析

Modbus 協(xié)議是典型的工控網(wǎng)協(xié)議,研究其安全性對(duì)于加強(qiáng)工業(yè)控制網(wǎng)絡(luò)的安全性有重要意義。一般來(lái)說(shuō),協(xié)議安全性問(wèn)題可以分為兩種,一種是協(xié)議自身的設(shè)計(jì)和描述引起的安全問(wèn)題; 另一種是協(xié)議的不正確實(shí)現(xiàn)引起的安全問(wèn)題。Modbus 協(xié)議也存在著這兩方面的問(wèn)題。

8.1Modbus 協(xié)議的固有問(wèn)題

絕大多數(shù)工控協(xié)議在設(shè)計(jì)之初,僅僅考慮了功能實(shí)現(xiàn)、提高效率、提高可靠性等方面,而沒(méi)考慮過(guò)安全性問(wèn)題。Modbus 協(xié)議也不例外,盡管其已經(jīng)成為事實(shí)上的工業(yè)標(biāo)準(zhǔn)。從前面原理分析可以看出其本身的安全性問(wèn)題是: 缺乏認(rèn)證、授權(quán)、加密等安全防護(hù)機(jī)制和功能碼濫用問(wèn)題。

(1)缺乏認(rèn)證

認(rèn)證的目的是保證收到的信息來(lái)自合法的用戶(hù),未認(rèn)證用戶(hù)向設(shè)備發(fā)送控制命令不會(huì)被執(zhí)行。在Modbus 協(xié)議通信過(guò)程中,沒(méi)有任何認(rèn)證方面的相關(guān)定義,攻擊者只需要找到一個(gè)合法的地址就可以使用功能碼就能建立一個(gè)Modbus 通信會(huì)話(huà),從而擾亂整個(gè)或者部分控制過(guò)程。

(2)缺乏授權(quán)

授權(quán)是保證不同的特權(quán)操作需要由擁有不同權(quán)限的認(rèn)證用戶(hù)來(lái)完成,這樣可大大降低誤操作與內(nèi)部攻擊的概率。目前,Modbus 協(xié)議沒(méi)有基于角色的訪問(wèn)控制機(jī)制,也沒(méi)有對(duì)用戶(hù)分類(lèi),沒(méi)有對(duì)用戶(hù)的權(quán)限進(jìn)行劃分,這會(huì)導(dǎo)致任意用戶(hù)可以執(zhí)行任意功能。

(3)缺乏加密

加密可以保證通信過(guò)程中雙方的信息不被第三方非法獲取。Modbus 協(xié)議通信過(guò)程中,地址和命令全部采用明文傳輸,因此數(shù)據(jù)可以很容易的被攻擊者捕獲和解析,為攻擊者提供便利。

(4)功能碼濫用

功能碼是Modbus 協(xié)議中的一項(xiàng)重要內(nèi)容,幾乎所有的通信都包含功能碼。目前,功能碼濫用是導(dǎo)致Modbus 網(wǎng)絡(luò)異常的一個(gè)主要因素。例如不合法報(bào)文長(zhǎng)度,短周期的無(wú)用命令,不正確的報(bào)文長(zhǎng)度,確認(rèn)異常代碼延遲等都有可能導(dǎo)致拒絕服務(wù)攻擊。

8.2協(xié)議實(shí)現(xiàn)產(chǎn)生的問(wèn)題

雖然Modbus 協(xié)議獲得了廣泛的應(yīng)用,但是在實(shí)現(xiàn)具體的工業(yè)控制系統(tǒng)時(shí),開(kāi)發(fā)者并不具備安全知識(shí)或者沒(méi)有意識(shí)到安全問(wèn)題。這樣就導(dǎo)致了使用Modbus 協(xié)議的系統(tǒng)中可能存在各種各樣的安全漏洞。

(1)設(shè)計(jì)安全問(wèn)題

Modbus 系統(tǒng)開(kāi)發(fā)者重點(diǎn)關(guān)注的是其功能實(shí)現(xiàn)問(wèn)題,安全問(wèn)題在設(shè)計(jì)時(shí)很少被注意到。設(shè)計(jì)安全是指設(shè)計(jì)時(shí)充分考慮安全性,解決Modbus 系統(tǒng)可能出現(xiàn)的各種異常和非法操作等問(wèn)題。比如在通信過(guò)程中,某個(gè)節(jié)點(diǎn)被惡意控制后發(fā)出非法數(shù)據(jù),就需要考慮這些數(shù)據(jù)的判別和處理問(wèn)題。

(2)緩沖區(qū)溢出漏洞

緩沖區(qū)溢出是指在向緩沖區(qū)內(nèi)填充數(shù)據(jù)時(shí)超過(guò)了緩沖區(qū)本身的容量導(dǎo)致溢出的數(shù)據(jù)覆蓋在合法數(shù)據(jù)上,這是在軟件開(kāi)發(fā)中最常見(jiàn)也是非常危險(xiǎn)的漏洞,可以導(dǎo)致系統(tǒng)崩潰,或者被攻擊者利用來(lái)控制系統(tǒng)。

Modbus 系統(tǒng)開(kāi)發(fā)者大多不具備安全開(kāi)發(fā)知識(shí),這樣就會(huì)產(chǎn)生很多的緩沖區(qū)溢出漏洞,一旦被惡意者利用會(huì)導(dǎo)致嚴(yán)重的后果。

(3)Modbus TCP 安全問(wèn)題

目前,Modbus 協(xié)議已經(jīng)可以在通用計(jì)算機(jī)和通用操作系統(tǒng)上實(shí)現(xiàn),運(yùn)行于TCP /IP 之上以滿(mǎn)足發(fā)展需要。這樣,TCP /IP 協(xié)議自身存在的安全問(wèn)題不可避免地會(huì)影響到工控網(wǎng)絡(luò)安全。非法網(wǎng)絡(luò)數(shù)據(jù)獲取,中間人,拒絕服務(wù), IP 欺騙,病毒木馬等在IP 互聯(lián)網(wǎng)中的常用攻擊手段都會(huì)影響Modbus 系統(tǒng)安全。

8.3安全建議

目前,Modbus 系統(tǒng)采取的安全防護(hù)措施普遍不足,這里參考信息安全業(yè)內(nèi)研究并結(jié)合工控系統(tǒng)自身的安全問(wèn)題,提出了一些安全建議,能夠有效地降低工業(yè)控制系統(tǒng)面臨的威脅。

(1)從源頭開(kāi)始

工控網(wǎng)絡(luò)漏洞,很大一部分是其實(shí)現(xiàn)過(guò)程出現(xiàn)的漏洞。如果從源頭開(kāi)始控制,從Modbus 系統(tǒng)的需求設(shè)計(jì)、開(kāi)發(fā)實(shí)現(xiàn)、內(nèi)部測(cè)試和部署等階段,全生命周期的介入安全手段,融入安全設(shè)計(jì)、安全編碼以及安全測(cè)試等技術(shù),可以極大地消除安全漏洞,降低整個(gè)Modbus 系統(tǒng)的安全風(fēng)險(xiǎn)。

(2)異常行為檢測(cè)

異常行為代表著可能發(fā)生威脅,不管是有沒(méi)有攻擊者,因此開(kāi)發(fā)針對(duì)Modbus 系統(tǒng)的專(zhuān)用異常行為檢測(cè)設(shè)備可以極大提高工控網(wǎng)絡(luò)的安全性。針對(duì)Modbus 系統(tǒng),首先要分析其存在的各種操作行為,依據(jù)“主體,地點(diǎn),時(shí)間,訪問(wèn)方式,操作,客體”等行為描述成一個(gè)六元組模型; 進(jìn)而分析其行為是否屬于異常; 最終決定采取記錄或者報(bào)警等措施。

(3)安全審計(jì)

Modbus 的安全審計(jì)就是對(duì)協(xié)議數(shù)據(jù)進(jìn)行深度解碼分析,記錄操作的時(shí)間、地點(diǎn)、操作者和操作行為等關(guān)鍵信息,實(shí)現(xiàn)對(duì)Modbus 系統(tǒng)的安全審計(jì)日志記錄和審計(jì)功能,從而提供安全事件爆發(fā)后的時(shí)候追查能力。

(4)使用網(wǎng)絡(luò)安全設(shè)備

使用入侵防御和防火墻等網(wǎng)絡(luò)安全設(shè)備。防火墻是一個(gè)串行設(shè)備,通過(guò)設(shè)置,只允許特定的地址訪問(wèn)服務(wù)端,禁止外部地址訪問(wèn)Modbus 服務(wù)器,可以有效的防止外部入侵; 入侵防御設(shè)備可以分析Modbus協(xié)議的具體操作內(nèi)容,有效地檢測(cè)并阻止來(lái)自?xún)?nèi)部/外部的異常操作和各種滲透攻擊行為,對(duì)內(nèi)網(wǎng)提供保護(hù)功能。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16473

    瀏覽量

    179672
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5372

    瀏覽量

    121319
  • MODBUS
    +關(guān)注

    關(guān)注

    28

    文章

    1825

    瀏覽量

    77369

原文標(biāo)題:Modbus 的RTU、ASCII、TCP

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    DJN Modbus協(xié)議

    DJN Modbus協(xié)議
    的頭像 發(fā)表于 11-27 13:52 ?1191次閱讀
    DJN <b class='flag-5'>Modbus協(xié)議</b>

    Modbus網(wǎng)關(guān)如何實(shí)現(xiàn)Modbus RTUModbus TCP協(xié)議的數(shù)據(jù)采集?

    著重要作用。 Modbus網(wǎng)關(guān) 作為數(shù)據(jù)通信的橋梁,能夠?qū)崿F(xiàn)Modbus RTUModbus TCP協(xié)
    的頭像 發(fā)表于 10-22 15:57 ?398次閱讀

    Modbus RTU協(xié)議Modbus TCP/IP協(xié)議區(qū)別

    Modbus RTUModbus TCP/IP的本質(zhì)都是Modbus協(xié)議,都是通過(guò)Modbus
    的頭像 發(fā)表于 10-18 17:44 ?845次閱讀

    使用Modbus、樓宇自控、電力協(xié)議轉(zhuǎn)Modbus協(xié)議網(wǎng)關(guān)實(shí)現(xiàn)生產(chǎn)設(shè)備的遠(yuǎn)程監(jiān)控和管理

    對(duì)不同協(xié)議設(shè)備的可靠數(shù)據(jù)采集;上行轉(zhuǎn)發(fā)協(xié)議方面支持Modbus RTUModbus TCP,為
    的頭像 發(fā)表于 08-08 17:29 ?445次閱讀
    使用<b class='flag-5'>Modbus</b>、樓宇自控、電力<b class='flag-5'>協(xié)議</b>轉(zhuǎn)<b class='flag-5'>Modbus協(xié)議</b>網(wǎng)關(guān)實(shí)現(xiàn)生產(chǎn)設(shè)備的遠(yuǎn)程監(jiān)控和管理

    BACnet轉(zhuǎn)Modbus協(xié)議網(wǎng)關(guān)實(shí)現(xiàn)設(shè)備無(wú)縫對(duì)接GE Digital iFIX

    Modbus協(xié)議網(wǎng)關(guān)支持BACnet MS/TP和BACnet IP協(xié)議的下行采集,以及支持Modbus RTUModbus
    的頭像 發(fā)表于 08-06 17:32 ?476次閱讀
    BACnet轉(zhuǎn)<b class='flag-5'>Modbus協(xié)議</b>網(wǎng)關(guān)實(shí)現(xiàn)設(shè)備無(wú)縫對(duì)接GE Digital iFIX

    Modbus網(wǎng)關(guān)實(shí)現(xiàn)Modbus RTUModbus TCP協(xié)議相互轉(zhuǎn)換

    鋇錸Modbus網(wǎng)關(guān)BL120是一款專(zhuān)注于Modbus協(xié)議轉(zhuǎn)換的通信設(shè)備,支持Modbus RTUModbus
    的頭像 發(fā)表于 08-02 15:13 ?816次閱讀
    <b class='flag-5'>Modbus</b>網(wǎng)關(guān)實(shí)現(xiàn)<b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b>和<b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>相互轉(zhuǎn)換

    鋇錸Modbus RTU/TCP協(xié)議轉(zhuǎn)換網(wǎng)關(guān)BL120

    Modbus網(wǎng)關(guān)BL120是一款在工業(yè)自動(dòng)化和物聯(lián)網(wǎng)領(lǐng)域廣泛應(yīng)用的通信設(shè)備,專(zhuān)注于Modbus協(xié)議之間的相互轉(zhuǎn)換。支持的下行采集協(xié)議和上行轉(zhuǎn)發(fā)協(xié)議
    的頭像 發(fā)表于 08-02 11:58 ?534次閱讀
    鋇錸<b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b>/<b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>轉(zhuǎn)換網(wǎng)關(guān)BL120

    PLC協(xié)議、Modbus RTU TCP 、DL T645、IEC101-104、BACnet 轉(zhuǎn)Modbus TCP RTU、OPC UA、MQTT、BACnet IP協(xié)議網(wǎng)關(guān)

    一、概述 BL110是一款物聯(lián)網(wǎng)無(wú)線(xiàn)工業(yè)智能網(wǎng)關(guān),支持各種PLC協(xié)議Modbus RTU?、Modbus TCP、DL/T645、IEC1
    的頭像 發(fā)表于 07-24 16:04 ?683次閱讀
    PLC<b class='flag-5'>協(xié)議</b>、<b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b>  <b class='flag-5'>TCP</b> 、DL T645、IEC101-104、BACnet 轉(zhuǎn)<b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b> <b class='flag-5'>RTU</b>、OPC UA、MQTT、BACnet IP<b class='flag-5'>協(xié)議</b>網(wǎng)關(guān)

    ModbusRTU ASCII轉(zhuǎn)ModbusTCP協(xié)議轉(zhuǎn)化網(wǎng)關(guān)通訊解決方案

    /ASCII網(wǎng)絡(luò)中。 本網(wǎng)關(guān)連接到Modbus RTU/ASCII總線(xiàn)中做為主站使用,連接到MODBUS-TCP總線(xiàn)中做為主站(客戶(hù)端)或從
    的頭像 發(fā)表于 07-23 15:12 ?569次閱讀
    ModbusRTU <b class='flag-5'>ASCII</b>轉(zhuǎn)ModbusTCP<b class='flag-5'>協(xié)議</b>轉(zhuǎn)化網(wǎng)關(guān)通訊解決方案

    巴圖自動(dòng)化Profinet協(xié)議轉(zhuǎn)Modbus協(xié)議網(wǎng)關(guān)模塊連接智能儀表與PLC通訊

    巴圖自動(dòng)化Profinet協(xié)議轉(zhuǎn)Modbus協(xié)議網(wǎng)關(guān)模塊(BT-MDPN10)的主要功能是實(shí)現(xiàn)Modbus協(xié)議和Profinet協(xié)議之間的轉(zhuǎn)換和通信。Profinet
    的頭像 發(fā)表于 07-04 11:35 ?2766次閱讀
    巴圖自動(dòng)化Profinet<b class='flag-5'>協(xié)議</b>轉(zhuǎn)<b class='flag-5'>Modbus協(xié)議</b>網(wǎng)關(guān)模塊連接智能儀表與PLC通訊

    三菱MC協(xié)議Modbus協(xié)議區(qū)別

    在工業(yè)自動(dòng)化領(lǐng)域,通信協(xié)議的選擇對(duì)于系統(tǒng)的高效、穩(wěn)定運(yùn)行至關(guān)重要。三菱MC協(xié)議Modbus協(xié)議作為兩種廣泛應(yīng)用的通信協(xié)議,各自具有獨(dú)特的特性和應(yīng)用場(chǎng)景。本文將對(duì)這兩種
    的頭像 發(fā)表于 06-18 11:31 ?2549次閱讀

    Modbus-RTU通訊協(xié)議是什么?

    Modbus-RTU通訊協(xié)議是一種串行通訊協(xié)議,它可以用于連接不同類(lèi)型的設(shè)備,以實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和控制。Modbus協(xié)議包括RTU、
    的頭像 發(fā)表于 05-23 15:06 ?724次閱讀

    BL124采集Modbus RTUModbus TCP協(xié)議

    Modbus網(wǎng)關(guān)BL120是一款專(zhuān)注于Modbus協(xié)議之間相互轉(zhuǎn)換的通信設(shè)備。Modbus網(wǎng)關(guān)BL120支持多種下行采集協(xié)議,包括Modbus
    的頭像 發(fā)表于 04-29 16:28 ?501次閱讀
    BL124采集<b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b>和<b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>

    Modbus TCPModbus RTU區(qū)別

    Modbus是一種廣泛應(yīng)用于工業(yè)自動(dòng)化領(lǐng)域的通信協(xié)議,用于不同廠商生產(chǎn)的設(shè)備之間的數(shù)據(jù)交換和通信。在Modbus協(xié)議中,ModbusTCP和ModbusRTU是兩種最為常見(jiàn)的通信方式。盡管它們都是
    的頭像 發(fā)表于 04-12 09:14 ?1821次閱讀
    <b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b>與<b class='flag-5'>Modbus</b> <b class='flag-5'>RTU</b>的<b class='flag-5'>區(qū)別</b>

    Modbus協(xié)議網(wǎng)關(guān)是什么?Modbus協(xié)議網(wǎng)關(guān)的功能

    Modbus協(xié)議網(wǎng)關(guān)是一種專(zhuān)門(mén)用于工業(yè)自動(dòng)化環(huán)境中的網(wǎng)絡(luò)設(shè)備,其主要功能是實(shí)現(xiàn)不同通信協(xié)議之間的轉(zhuǎn)換,尤其是將基于Modbus協(xié)議的設(shè)備或系統(tǒng)與使用其他協(xié)議的設(shè)備、控制系統(tǒng)或信息系統(tǒng)連
    的頭像 發(fā)表于 04-11 15:51 ?830次閱讀