0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Modbus协议详解与案例演示

GReq_mcu168 来源:亿佰特物联网实验室 作者:亿佰特物联网实验 2022-07-22 14:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Modbus RTU通讯协议在数据通讯上采用主从应答的方式进行。只能由主机(PC,HMI等)通过唯一从机地址发起请求,从机(终端设备)根据主机请求进行响应,即半双工通讯。该协议只允许主机发起请求,从机进行被动响应,因此从机不会主动占用通讯线路造成数据冲突。

类似Modbus RTU协议的主从应答协议还有西门子的PPI、电表常用的DL/T645-2007等协议。

一、协议格式

信息传输为异步方式,使用16进制进行通讯,信息帧格式:

地址码

功能码

数据区

CRC校验码

1字节

1字节

N字节

2字节

地址码

地址码是每个通讯信息帧的第一个字节,一般支持1到247,部分设备也支持0地址,用于接收主机的广播数据,每个从机在总线上地址必须唯一,只有与主机发送的地址码相符的从机才能响应返回数据。

功能码

功能码是每个通讯信息帧的第二个字节。主机发送,通过功能码告知从机设备应当执行何种操作。

常见的八种功能码:

功能码

定义

操作

01H

读取线圈

读取一个或多个连续线圈状态

05H

写单个线圈

操作指定位置的线圈状态

0FH

写多个线圈

操作多个连续线圈状态

02H

读取离散量输入

读取一个或多个连续离散输入状态

04H

读取输入寄存器

读取一个或多个连续输入寄存器数据

03H

读保持寄存器

读取一个或多个保持寄存器数据

06H

写单个保持寄存器

把两个十六进制数据写入对应位置

10H

写多个保持寄存器

把4*N个十六进制数据写入N个连续保持寄存器

数据区

数据区随功能码以及数据方向的不同而不同,这些数据可以是“寄存器首地址+读取寄存器数量”、“寄存器地址+操作数据”、“寄存器首地址+操作寄存数量+数据长度+数据”等不同的组合,在“功能码分析”详解不同功能码的数据区。

Modbus CRC校验

Modbus RTU协议常用与工业现场对数据传输的稳定性和正确性有较高的要求,因此通过CRC校验保证数据传输的正确性和完整性。

二、错误反馈

地址与CRC校验错误并不会收到从机的数据反馈,其他错误将向主机返回错误码。数据帧的第二位加上0X80表示请求发生错误(非法功能码、非法数据值等),错误数据帧如下:

地址码

功能码

错误码

CRC校验码

1字节

1字节

1字节

2字节

常见错误码如下:

名称

说明

01H

非法的功能码

不支持该功能码操作寄存器

02H

非法的寄存器地址

访问设备禁止访问的寄存器

03H

非法的数据值

写入不支持的参数值

04H

从机故障

设备工作异常

三、通讯信息传输过程

通讯命令由主机发送从机时,与主机发送的地址码相符的从机接收通讯命令,如果CRC校验无误,则执行相应的操作,然后把执行结果(数据)返回给主机。返回信息中包含地址码、功能码、执行后的数据以及CRC校验码。如果地址不匹配或者CRC校验出错就不返回任何信息。

四、功能码分析

功能码01H:读线圈

例如:主机要读取从机地址为01H,起始线圈地址为00H的1个线圈状态,主机发送:

主机发送

发送数据(HEX)

地址码

01

功能码

01

起始线圈地址

高字节

00

低字节

00

线圈数量

高字节

00

低字节

01

CRC校验

低字节

FD

高字节

CA

如果从机寄存器00H线圈闭合,从机返回:

从机返回

发送数据(HEX)

地址码

01

功能码

01

字节数

01

线圈状态

01

CRC校验码

低字节

90

高字节

48

仿真演示:

09fcabee-0985-11ed-ba43-dac502259ad0.png

功能码05H:写单个线圈

例如:主机要控制从机地址为01H,线圈地址为0000H的线圈状态,主机发送:

主机发送

发送数据(HEX)

地址码

01

功能码

01

线圈地址

高字节

00

低字节

00

控制方式

高字节

00(断开)、FF(闭合)

低字节

01

CRC校验

低字节

XX

高字节

XX

从机返回与主机请求相同;

仿真演示:

0a2f56b6-0985-11ed-ba43-dac502259ad0.png

功能码0FH:写多个线圈

例如:主机要控制从机地址为01H,起始线圈地址为00H的4个线圈状态,主机发送:

主机发送

发送数据(HEX)

地址码

01

功能码

0F

起始线圈地址

高字节

00

低字节

00

线圈数量

高字节

00

低字节

04

写入字节数

01

控制方式

00(全部断开)、0F(全部闭合)

CRC校验

低字节

XX

高字节

XX

功能码0FH操作,从机返回:

从机返回

发送数据(HEX)

地址码

01

功能码

0F

起始线圈地址

高字节

00

低字节

00

线圈数量

高字节

00

低字节

04

CRC校验

低字节

54

高字节

08

仿真演示:

0a53e71a-0985-11ed-ba43-dac502259ad0.png

功能码02H:读离散输入

例如:主机要读取从机地址为01H,起始离散量地址为00H的4个输入状态,主机发送:

主机发送

发送数据(HEX)

地址码

01

功能码

02

起始离散量地址

高字节

00

低字节

00

读取数量

高字节

00

低字节

04

CRC校验

低字节

79

高字节

C9

如果从机首地址00H开始的4离散输入全部检测到输入,从机返回:

从机返回

发送数据(HEX)

地址码

01

功能码

02

字节数

01

离散输入状态

0F

CRC校验码

低字节

E1

高字节

8C

仿真演示:

0a6a94ba-0985-11ed-ba43-dac502259ad0.png

功能码04H:读取输入寄存器

例如:主机要读取从机地址为01H,起始寄存器地址为02H的1个输入寄存器数据,主机发送:

主机发送

发送数据(HEX)

地址码

01

功能码

04

起始寄存器地址

高字节

00

低字节

02

寄存器数量

高字节

00

低字节

01

CRC校验

低字节

90

高字节

0A

如果从机输入寄存器02H的数据为3344H,从机返回:

从机返回

发送数据(HEX)

地址码

01

功能码

04

字节数

02

寄存器05H数据

高字节

33

低字节

44

CRC校验码

低字节

AD

高字节

F3

仿真演示:

0a92fad6-0985-11ed-ba43-dac502259ad0.png

功能码03H:读保持寄存器

例如:主机要读取从机地址为01H,起始寄存器地址为05H的2个保持寄存器数据,主机发送:

主机发送

发送数据(HEX)

地址码

01

功能码

03

起始寄存器地址

高字节

00

低字节

05

寄存器数量

高字节

00

低字节

02

CRC校验

低字节

D4

高字节

0A

如果从机保持寄存器05H、06H的数据为1122H、3344H,从机返回:

从机返回

发送数据(HEX)

地址码

01

功能码

03

字节数

04

寄存器05H数据

高字节

11

低字节

22

寄存器06H数据

高字节

33

低字节

44

CRC校验码

低字节

4B

高字节

C6

仿真演示:

0aba217e-0985-11ed-ba43-dac502259ad0.png

功能码06H:写单个保持寄存器

例如:主机写入9988H的数据给从机地址为01H,寄存器地址为0050H的寄存器,主机发送:

主机发送

发送数据(HEX)

地址码

01

功能码

06

寄存器地址

高字节

00

低字节

50

写入值

高字节

99

低字节

88

CRC校验

低字节

E3

高字节

ED

从机返回与主机请求相同;

0ae3775e-0985-11ed-ba43-dac502259ad0.png

功能码10H:写多个保持寄存器

例如:主机要把数据0005H、2233H保存到从机地址为01H,起始寄存器地址为0020H的2个寄存器中,主机发送:

主机发送

发送数据(HEX)

地址码

01

功能码

10

起始寄存器地址

高字节

00

低字节

20

寄存器数量

高字节

00

低字节

02

写入字节数

04

0000H

寄存器待写入

高字节

00

低字节

05

0001H

寄存器待写入

高字节

22

低字节

33

CRC校验

低字节

B9

高字节

03

功能码10H操作,从机返回:

从机返回

发送数据(HEX)

地址码

01

功能码

10

起始寄存器地址

高字节

00

低字节

20

寄存器数量

高字节

00

低字节

02

CRC校验

低字节

40

高字节

02

仿真演示:

0b0bec16-0985-11ed-ba43-dac502259ad0.png

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 协议
    +关注

    关注

    2

    文章

    616

    浏览量

    40839
  • MODBUS
    +关注

    关注

    28

    文章

    2387

    浏览量

    82282
  • 16进制
    +关注

    关注

    1

    文章

    13

    浏览量

    9063

原文标题:Modbus协议详解与案例演示

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    PROFIBUS转MODBUS协议转换网关:玻璃制造“智能熔炉”的数据纽带

    PROFIBUS转MODBUS协议转换网关:玻璃制造“智能熔炉”的数据纽带 在玻璃制造行业,熔化环节是决定产品质量与能耗的关键。玻璃熔炉需在1600℃左右的高温下运行,温度控制的精确度、物料熔融
    的头像 发表于 11-20 14:52 88次阅读
    PROFIBUS转<b class='flag-5'>MODBUS协议</b>转换网关:玻璃制造“智能熔炉”的数据纽带

    Modbus协议的深度剖析

    Modbus协议作为工业自动化领域最广泛应用的通信协议之一,其简洁高效的特性使其在工业控制系统中占据重要地位。本文将从协议的发展历程、技术架构、通信模式、安全机制以及未来演进等多个维度进行全面剖析
    的头像 发表于 11-07 07:43 326次阅读
    <b class='flag-5'>Modbus协议</b>的深度剖析

    Modbus协议转HTTP协议,实现JSON格式对接MES等系统平台

    配置运行。 智能网关IGT-DSER集成了多种PLC的原厂协议,比如西门子S7、三菱MC、欧姆龙FINS,罗克韦尔CIP等,也支持通用的Modbus协议、OPCUA协议。本文是Modbus协议
    发表于 10-27 10:33

    迈向工业4.0的第一步:从Modbus无线传输开始

    Modbus无线传输模块是通过无线方式传输Modbus协议数据的设备,它能够将设备(如仪表、变频器、传感器等)的数据通过Modbus协议进行无线传输,实现远程监控和控制。 Modbus
    的头像 发表于 09-22 11:34 303次阅读
    迈向工业4.0的第一步:从<b class='flag-5'>Modbus</b>无线传输开始

    【RA4M2-SENSOR】—— 10.实现modbus从站协议

    modbus协议在工业控制领域有着广泛的应用,很多机器人控制和PLC伺服控制器都是使用modbus协议来通信的。 本次测评就是使用我自己实现的modbus slave从站协议来进行测试
    发表于 09-01 07:06

    Modbus协议总线控制在智慧工厂中的应用

    MODBUS
    北京开疆智能技术有限公司
    发布于 :2025年08月04日 17:37:30

    什么是Modbus TCP协议

    的TCP/IP协议栈,通过以太网进行通信,并支持多个设备同时访问同一个Modbus TCP服务器。 一、协议本质与设计目标 起源与定位 Modbus TCP是
    的头像 发表于 07-23 17:18 3294次阅读
    什么是<b class='flag-5'>Modbus</b> TCP<b class='flag-5'>协议</b>

    Modbus协议转换:让工业设备轻松“对话”

    在工业自动化中,Modbus协议是设备通信的关键。本文将聚焦于Modbus协议的串口与网口转换需求,并通过ZLG致远电子PXB-6030D的案例,展示如何轻松实现协议转换。Modbus协议
    的头像 发表于 07-15 11:47 460次阅读
    <b class='flag-5'>Modbus协议</b>转换:让工业设备轻松“对话”

    大彩讲堂:VisualTFT软件modbus协议下的告警应用

    VisualTFT软件modbus协议下的告警应用
    的头像 发表于 07-01 17:40 964次阅读
    大彩讲堂:VisualTFT软件<b class='flag-5'>modbus协议</b>下的告警应用

    告别协议冲突!Modbus转Profinet助力风速风向仪无缝对接

    在工业自动化与物联网蓬勃发展的当下,风速风向仪作为环境监测与工业生产过程中的关键设备,其数据的实时准确传输对气象监测、风力发电、港口作业等领域至关重要。然而,风速风向仪常采用Modbus协议进行通信
    发表于 05-19 15:47

    DLT645协议Modbus协议有什么区别

    DLT645协议Modbus协议的区别主要体现在协议定位、数据帧结构、操作类型与功能、适用场景等方面,以下为具体分析: 协议定位与适用领域 DLT645
    的头像 发表于 05-15 17:47 1359次阅读

    兴达易控modbus协议转换网关配置步骤

    Modbus协议转换网关作为工业自动化系统中的关键组件之一,在实现不同设备之间的数据交换和协议转换方面发挥着重要作用。 通过选择合适的网关类型并进行合理的配置和使用说明指导,可以充分发挥其在
    的头像 发表于 03-16 16:07 684次阅读
    兴达易控<b class='flag-5'>modbus协议</b>转换网关配置步骤

    怎样使用Modbus转Profinet网关连接USB转485模拟从站配置案例

    Modbus转profinet网关可以将Modbus协议转化为profinet协议,以实现设备之间的数据交互。在实际使用过程中,我们需要使用Modbus协议进行设备通讯,而profin
    的头像 发表于 03-14 10:13 715次阅读
    怎样使用<b class='flag-5'>Modbus</b>转Profinet网关连接USB转485模拟从站配置案例

    EtherCAT转modbus TCP借协议转换网关模块打通倍福PLC与上位机链路

    在智能工厂中,需要把EtherCAT 设备的数据发送到modbus协议的scada系统中。因为主要是modbus协议,EtherCAT设备不能直接接入到系统。EtherCAT协议内容非常复杂,所以
    的头像 发表于 03-01 11:06 764次阅读
    EtherCAT转<b class='flag-5'>modbus</b> TCP借<b class='flag-5'>协议</b>转换网关模块打通倍福PLC与上位机链路

    聊聊Modbus协议的短板:是时候寻求替代了吗?

    Modbus协议,作为工业物联网领域中的重要协议之一,以其显著的特点赢得了广泛的认可与应用。 然而,正如任何技术都有其局限性和改进空间一样,今天我们将打破常规,采取一种‘倒反天罡’的视角,不再专注其
    的头像 发表于 02-26 17:01 713次阅读
    聊聊<b class='flag-5'>Modbus协议</b>的短板:是时候寻求替代了吗?