日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 物聯(lián)網(wǎng) > 網(wǎng)絡(luò)協(xié)議
[導(dǎo)讀] Modbus是一種串行通信協(xié)議,是Modicon于1979年,為使用可編程邏輯控制器(PLC)而發(fā)表的。事實(shí)上,它已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議標(biāo)準(zhǔn),并且現(xiàn)在是工業(yè)電子設(shè)備之間相當(dāng)常用的連接方式。

Modbus是一種串行通信協(xié)議,是Modicon于1979年,為使用可編程邏輯控制器(PLC)而發(fā)表的。事實(shí)上,它已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議標(biāo)準(zhǔn),并且現(xiàn)在是工業(yè)電子設(shè)備之間相當(dāng)常用的連接方式。

Modbus協(xié)議目前存在用于串口、以太網(wǎng)以及其他支持互聯(lián)網(wǎng)協(xié)議的網(wǎng)絡(luò)的版本。

大多數(shù)Modbus設(shè)備通信通過(guò)串口EIA-485物理層進(jìn)行。 對(duì)于串行連接,存在兩個(gè)變種,它們?cè)跀?shù)值數(shù)據(jù)表示不同和協(xié)議細(xì)節(jié)上略有不同。Modbus RTU是一種緊湊的,采用二進(jìn)制表示數(shù)據(jù)的方式,Modbus ASCII是一種人類可讀的,冗長(zhǎng)的表示方式。這兩個(gè)變種都使用串行通訊(serial communicaTIon)方式。RTU格式后續(xù)的命令/數(shù)據(jù)帶有循環(huán)冗余校驗(yàn)的校驗(yàn)和,而ASCII格式采用縱向冗余校驗(yàn)的校驗(yàn)和。被配置為RTU變種的節(jié)點(diǎn)不會(huì)和設(shè)置為ASCII變種的節(jié)點(diǎn)通信,反之亦然。

modbusrtu的一個(gè)報(bào)文分析

先聲明下我們的目的,我們是要兩個(gè)設(shè)備通訊,用的是MODBUS協(xié)議。上面簡(jiǎn)單介紹了:“報(bào)文”“CRC校驗(yàn)”“功能號(hào)”。

在單片機(jī)中拿出一部分內(nèi)存(RAM)進(jìn)行兩個(gè)設(shè)備通訊,例如:

數(shù)組后面的注釋,說(shuō)明

OX[20] 代表是輸出線圈,用功能碼 0x01,0x05,0x0F 訪問(wèn), 開(kāi)頭地址是 0 (這個(gè)后續(xù)說(shuō)明)

IX[20] 代表是輸入線圈,用功能碼 0x02 訪問(wèn), 開(kāi)頭地址是 1 (這個(gè)后續(xù)說(shuō)明)

另外兩個(gè)一樣的道理。

注意:所謂的“線圈”“寄存器”就是“位變量”“16位變量”,不要被迷惑。之所以稱“線圈”我覺(jué)得應(yīng)該是對(duì)于應(yīng)用的設(shè)備,MODBUS協(xié)議是專門(mén)針對(duì)485總線設(shè)備(例PLC)開(kāi)發(fā)的。

1、主機(jī)對(duì)從機(jī)寫(xiě)數(shù)據(jù)操作

如果單片機(jī)接收到一個(gè)報(bào)文那么就對(duì)報(bào)文進(jìn)行解析執(zhí)行相應(yīng)的處理,如上面報(bào)文:

01 06 00 01 00 17 98 04

從機(jī)地址 功能號(hào) 數(shù)據(jù)地址 數(shù)據(jù) CRC校驗(yàn)

假如本機(jī)地址是 1 ,那么單片機(jī)接收到這串?dāng)?shù)據(jù)根據(jù)數(shù)據(jù)計(jì)算CRC校驗(yàn)判斷數(shù)據(jù)是否正確,如果判斷數(shù)據(jù)無(wú)誤,則結(jié)果是:

HoldDataReg[1] = 0x0017;

MODBUS主機(jī)就完成了一次對(duì)從機(jī)數(shù)據(jù)的寫(xiě)操作,實(shí)現(xiàn)了通訊。

2、主機(jī)對(duì)從機(jī)讀數(shù)據(jù)操作

主機(jī)進(jìn)行讀HoldDataReg[1] 操作,則報(bào)文是:

01 03 00 01 00 01 D5 CA

從機(jī)地址 功能號(hào) 數(shù)據(jù)地址 讀取數(shù)據(jù)個(gè)數(shù) CRC校驗(yàn)

那么單片機(jī)接收到這串?dāng)?shù)據(jù)根據(jù)數(shù)據(jù)計(jì)算CRC校驗(yàn)判斷數(shù)據(jù)是否正確,如果判斷數(shù)據(jù)無(wú)誤,則結(jié)果是:返回信息給主機(jī),返回的信息也是有格式的:

返回內(nèi)容:

01 03 02 0017 F8 4A

從機(jī)地址 功能號(hào) 數(shù)據(jù)字節(jié)個(gè)數(shù) 兩個(gè)字節(jié)數(shù)據(jù) CRC校驗(yàn)

MODBUS主機(jī)就完成了一次對(duì)從機(jī)數(shù)據(jù)的讀操作,實(shí)現(xiàn)了通訊。

MODBUS報(bào)文模型

以上了解到了MODBUS的一幀報(bào)文是如何通訊的,其實(shí)每個(gè)報(bào)文的格式都基本一樣的。

這里兩個(gè)縮略詞以前不知道,但是現(xiàn)在要明白指的是什么,“ADU”“PDU”

ADU: 應(yīng)用數(shù)據(jù)單元

PDU: 協(xié)議數(shù)據(jù)單元

modbusrtu報(bào)文格式

所有交換的RTU類型報(bào)文(幀),無(wú)論上/下行,具有相同的結(jié)構(gòu):

每幀報(bào)文包含4種類型的信息:

從站號(hào)

從站號(hào)為1字節(jié),取值范圍為0~FFH.例外的,如果此值為0,則作為主站的廣播信文標(biāo)識(shí).因此,物理上使用的從站號(hào)只能在01H~FFH之間(即1~255之間)。

功能碼

功能碼為1字節(jié),它被用來(lái)選擇一個(gè)命令(讀、寫(xiě)或回答校驗(yàn)是否正確等),有效功能碼范圍為1~255之間,本手冊(cè)支持的功能碼將在第2章中加以詳述。

數(shù)據(jù)區(qū)

數(shù)據(jù)區(qū)為n字節(jié),它包含與功能碼相關(guān)的一串十六進(jìn)制數(shù)據(jù)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉