色猫咪av在线网址_91精品国产福利在线观看雪梨还会玩转热点_丁香花的视频免费观看_国产手机在线A∨免费视频_十八禁av无码免费网站APP_综合色一区二区亚洲_日韩精品小电影_漂亮人妻熟睡中被公侵犯_全新成人高清无码片_高级厕所偷窥白领美女嘘嘘

當(dāng)前位置: 首頁(yè) >應(yīng)用方案 >技術(shù)應(yīng)用 >

Modbus通訊協(xié)議詳解與RTU通信實(shí)例演示教程

Modbus通訊協(xié)議詳解

Modbus RTU通訊協(xié)議在數(shù)據(jù)通訊上采用主從應(yīng)答的方式進(jìn)行。只能由主機(jī)(PC,HMI等)通過唯一從機(jī)地址發(fā)起請(qǐng)求,從機(jī)(終端設(shè)備)根據(jù)主機(jī)請(qǐng)求進(jìn)行響應(yīng),即半雙工通訊。該協(xié)議只允許主機(jī)發(fā)起請(qǐng)求,從機(jī)進(jìn)行被動(dòng)響應(yīng),因此從機(jī)不會(huì)主動(dòng)占用通訊線路造成數(shù)據(jù)沖突。

類似Modbus RTU協(xié)議的主從應(yīng)答協(xié)議還有西門子的PPI、電表常用的DL/T645-2007等協(xié)議。

一、modbus協(xié)議格式

信息傳輸為異步方式,使用16進(jìn)制進(jìn)行通訊,信息幀格式:


地址碼

功能碼

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

CRC校驗(yàn)碼

1字節(jié)

1字節(jié)

N字節(jié)

2字節(jié)


地址碼

地址碼是每個(gè)通訊信息幀的第一個(gè)字節(jié),一般支持1247,部分設(shè)備也支持0地址,用于接收主機(jī)的廣播數(shù)據(jù),每個(gè)從機(jī)在總線上地址必須唯一,只有與主機(jī)發(fā)送的地址碼相符的從機(jī)才能響應(yīng)返回?cái)?shù)據(jù)。

功能碼

功能碼是每個(gè)通訊信息幀的第二個(gè)字節(jié)。主機(jī)發(fā)送,通過功能碼告知從機(jī)設(shè)備應(yīng)當(dāng)執(zhí)行何種操作。

常見的八種功能碼:

功能碼

定義

操作

01H

讀取線圈

讀取一個(gè)或多個(gè)連續(xù)線圈狀態(tài)

05H

寫單個(gè)線圈

操作指定位置的線圈狀態(tài)

0FH

寫多個(gè)線圈

操作多個(gè)連續(xù)線圈狀態(tài)

02H

讀取離散量輸入

讀取一個(gè)或多個(gè)連續(xù)離散輸入狀態(tài)

04H

讀取輸入寄存器

讀取一個(gè)或多個(gè)連續(xù)輸入寄存器數(shù)據(jù)

03H

讀保持寄存器

讀取一個(gè)或多個(gè)保持寄存器數(shù)據(jù)

06H

寫單個(gè)保持寄存器

把兩個(gè)十六進(jìn)制數(shù)據(jù)寫入對(duì)應(yīng)位置

10H

寫多個(gè)保持寄存器

4*N個(gè)十六進(jìn)制數(shù)據(jù)寫入N個(gè)連續(xù)保持寄存器

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

數(shù)據(jù)區(qū)隨功能碼以及數(shù)據(jù)方向的不同而不同,這些數(shù)據(jù)可以是“寄存器首地址+讀取寄存器數(shù)量”、“寄存器地址+操作數(shù)據(jù)”、“寄存器首地址+操作寄存數(shù)量+數(shù)據(jù)長(zhǎng)度+數(shù)據(jù)”等不同的組合,在“功能碼分析”詳解不同功能碼的數(shù)據(jù)區(qū)。

Modbus CRC校驗(yàn)

Modbus RTU協(xié)議常用與工業(yè)現(xiàn)場(chǎng)對(duì)數(shù)據(jù)傳輸?shù)姆€(wěn)定性和正確性有較高的要求,因此通過CRC校驗(yàn)保證數(shù)據(jù)傳輸?shù)恼_性和完整性。

二、錯(cuò)誤反饋

地址與CRC校驗(yàn)錯(cuò)誤并不會(huì)收到從機(jī)的數(shù)據(jù)反饋,其他錯(cuò)誤將向主機(jī)返回錯(cuò)誤碼。數(shù)據(jù)幀的第二位加上0X80表示請(qǐng)求發(fā)生錯(cuò)誤(非法功能碼、非法數(shù)據(jù)值等),錯(cuò)誤數(shù)據(jù)幀如下:

地址碼

功能碼

錯(cuò)誤碼

CRC校驗(yàn)碼

1字節(jié)

1字節(jié)

1字節(jié)

2字節(jié)

常見錯(cuò)誤碼如下:

名稱

說明

01H

非法的功能碼

不支持該功能碼操作寄存器

02H

非法的寄存器地址

訪問設(shè)備禁止訪問的寄存器

03H

非法的數(shù)據(jù)值

寫入不支持的參數(shù)值

04H

從機(jī)故障

設(shè)備工作異常

三、通訊信息傳輸過程

通訊命令由主機(jī)發(fā)送從機(jī)時(shí),與主機(jī)發(fā)送的地址碼相符的從機(jī)接收通訊命令,如果CRC校驗(yàn)無(wú)誤,則執(zhí)行相應(yīng)的操作,然后把執(zhí)行結(jié)果(數(shù)據(jù))返回給主機(jī)。返回信息中包含地址碼、功能碼、執(zhí)行后的數(shù)據(jù)以及CRC校驗(yàn)碼。如果地址不匹配或者CRC校驗(yàn)出錯(cuò)就不返回任何信息。

四、功能碼分析

功能碼01H:讀線圈

例如:主機(jī)要讀取從機(jī)地址為01H,起始線圈地址為00H1個(gè)線圈狀態(tài),主機(jī)發(fā)送:

主機(jī)發(fā)送

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

01

起始線圈地址

高字節(jié)

00

低字節(jié)

00

線圈數(shù)量

高字節(jié)

00

低字節(jié)

01

CRC校驗(yàn)

低字節(jié)

FD

高字節(jié)

CA

如果從機(jī)寄存器00H線圈閉合,從機(jī)返回:

從機(jī)返回

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

01

字節(jié)數(shù)

01

線圈狀態(tài)

01

CRC校驗(yàn)碼

低字節(jié)

90

高字節(jié)

48

仿真演示:

modbus RTU協(xié)議單線圈

功能碼0FH:寫多個(gè)線圈

例如:主機(jī)要控制從機(jī)地址為01H,起始線圈地址為00H4個(gè)線圈狀態(tài),主機(jī)發(fā)送:

主機(jī)發(fā)送

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

0F

起始線圈地址

高字節(jié)

00

低字節(jié)

00

線圈數(shù)量

高字節(jié)

00

低字節(jié)

04

寫入字節(jié)數(shù)

01

控制方式

00(全部斷開)、0F(全部閉合)

CRC校驗(yàn)

低字節(jié)

XX

高字節(jié)

XX

功能碼0FH操作,從機(jī)返回:

從機(jī)返回

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

0F

起始線圈地址

高字節(jié)

00

低字節(jié)

00

線圈數(shù)量

高字節(jié)

00

低字節(jié)

04

CRC校驗(yàn)

低字節(jié)

54

高字節(jié)

08

仿真演示:

mudbus協(xié)議多線圈

功能碼02H:讀離散輸入

例如:主機(jī)要讀取從機(jī)地址為01H,起始離散量地址為00H4個(gè)輸入狀態(tài),主機(jī)發(fā)送:

主機(jī)發(fā)送

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

02

起始離散量地址

高字節(jié)

00

低字節(jié)

00

讀取數(shù)量

高字節(jié)

00

低字節(jié)

04

CRC校驗(yàn)

低字節(jié)

79

高字節(jié)

C9

如果從機(jī)首地址00H開始的4離散輸入全部檢測(cè)到輸入,從機(jī)返回:

從機(jī)返回

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

02

字節(jié)數(shù)

01

離散輸入狀態(tài)

0F

CRC校驗(yàn)碼

低字節(jié)

E1

高字節(jié)

8C

仿真演示:

moudbus通信協(xié)議輸入

功能碼04H:讀取輸入寄存器

例如:主機(jī)要讀取從機(jī)地址為01H,起始寄存器地址為02H1個(gè)輸入寄存器數(shù)據(jù),主機(jī)發(fā)送:

主機(jī)發(fā)送

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

04

起始寄存器地址

高字節(jié)

00

低字節(jié)

02

寄存器數(shù)量

高字節(jié)

00

低字節(jié)

01

CRC校驗(yàn)

低字節(jié)

90

高字節(jié)

0A

如果從機(jī)輸入寄存器02H的數(shù)據(jù)為3344H,從機(jī)返回:

從機(jī)返回

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

04

字節(jié)數(shù)

02

寄存器05H數(shù)據(jù)

高字節(jié)

33

低字節(jié)

44

CRC校驗(yàn)碼

低字節(jié)

AD

高字節(jié)

F3

仿真演示:

modbus通信協(xié)議寄存器輸入

功能碼03H:讀保持寄存器

例如:主機(jī)要讀取從機(jī)地址為01H,起始寄存器地址為05H2個(gè)保持寄存器數(shù)據(jù),主機(jī)發(fā)送:

主機(jī)發(fā)送

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

03

起始寄存器地址

高字節(jié)

00

低字節(jié)

05

寄存器數(shù)量

高字節(jié)

00

低字節(jié)

02

CRC校驗(yàn)

低字節(jié)

D4

高字節(jié)

0A

如果從機(jī)保持寄存器05H、06H的數(shù)據(jù)為1122H、3344H,從機(jī)返回:

從機(jī)返回

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

03

字節(jié)數(shù)

04

寄存器05H數(shù)據(jù)

高字節(jié)

11

低字節(jié)

22

寄存器06H數(shù)據(jù)

高字節(jié)

33

低字節(jié)

44

CRC校驗(yàn)碼

低字節(jié)

4B

高字節(jié)

C6


仿真演示:

modbus RTU協(xié)議保持寄存器

功能碼06H:寫單個(gè)保持寄存器

例如:主機(jī)寫入9988H的數(shù)據(jù)給從機(jī)地址為01H,寄存器地址為0050H的寄存器,主機(jī)發(fā)送:

主機(jī)發(fā)送

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

06

寄存器地址

高字節(jié)

00

低字節(jié)

50

寫入值

高字節(jié)

99

低字節(jié)

88

CRC校驗(yàn)

低字節(jié)

E3

高字節(jié)

ED

從機(jī)返回與主機(jī)請(qǐng)求相同;

modbus協(xié)議單個(gè)保持寄存器

功能碼10H:寫多個(gè)保持寄存器

例如:主機(jī)要把數(shù)據(jù)0005H、2233H保存到從機(jī)地址為01H,起始寄存器地址為0020H2個(gè)寄存器中,主機(jī)發(fā)送:

主機(jī)發(fā)送

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

10

起始寄存器地址

高字節(jié)

00

低字節(jié)

20

寄存器數(shù)量

高字節(jié)

00

低字節(jié)

02

寫入字節(jié)數(shù)

04

0000H

寄存器待寫入

高字節(jié)

00

低字節(jié)

05

0001H

寄存器待寫入

高字節(jié)

22

低字節(jié)

33

CRC校驗(yàn)

低字節(jié)

B9

高字節(jié)

03

功能碼10H操作,從機(jī)返回:

從機(jī)返回

發(fā)送數(shù)據(jù)(HEX

地址碼

01

功能碼

10

起始寄存器地址

高字節(jié)

00

低字節(jié)

20

寄存器數(shù)量

高字節(jié)

00

低字節(jié)

02

CRC校驗(yàn)

低字節(jié)

40

高字節(jié)

02

仿真演示:

modbs多保持寄存器

今天的分享就到這里啦,億佰特人每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的官網(wǎng)進(jìn)行了解,還有客服小姐姐在線答疑哦!


4000-330-990

https://www.wjx.cn/jq/84863372.aspx