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

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

3天内不再提示

Modbus TCP协议说明

Smacq 来源:jf_09164673 作者:jf_09164673 2025-04-14 13:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、协议的特点

TCP协议是1996年施耐德公司推出的基于TCP/IP协议的Modbus协议。此协议与Modbus-RTU协议最大的不同就是使用了在TCP/IP协议上专用的报文识别Modbus应用数据单元。这种报文头被称为MBAP报文头。

wKgZPGf8nK-AFQ26AALyOI3bjVA480.pngMBAP报文头

报文头的长度是7个字节,分别有:事务处理标识符,长度为两个字节,用于事务处理配对。它是Modbus的事务处理码,每次通信后就要加一。协议标识符,长度为两个字节,用于系统内的多路复用。当它的值是0(00 00),表示使用Modbus协议。长度,由两个字节构成,用于说明下面还有多少个字节的数量。这样即使TCP将整个报文分为多个信息包传输,接收者也能识别报文的边界。单元标识符,由一个字节构成,当Modbus客户端在请求中设置这个域,在响应中服务器必须利用相同的值返回这个域,可以将其理解为设备地址。报文头之后的功能码和数据部分与Modbus-RTU协议相似。我们还是以实际的报文加以说明。

wKgZPGf8nOOAQ4FxAASoq04HmUU515.png报文头各区域含义

二、实验设备介绍

实验中将网络调试助手软件作为客户机(主站),MT1004或MT2003远程I/O模块作为服务器(从站)。

wKgZO2f8nRaAW6BgAAQi8JpzdrM159.png主站和从站

MT1004有16个DO输出端口(线圈)。

wKgZO2f8nT6AHozFAAKR6nJgidY975.pngMT1004

MT2003有8组AI端口。

wKgZO2f8nV6AUfm3AAK9l6AriYY605.pngMT2003

它们可以测量电压和电流信号。模块的配套软件可以查询它的详细信息也具有修改端口号等功能。我们尽量将端口号设置在2000以上,避免与其他协议产生冲突。打开MT软件,找到模块的IP地址、网关、端口等信息。在网络调试助手的网络设置中,选择TCP Client协议类型,输入远程主机地址为192.168.1.200,远程主机端口为2000。接着改变电脑的IP地址,使它们处于同一个网段内。打开电脑的网络设置,选择以太网,点击属性,选中Internet协议版本4,点击属性,输入IP地址为:192.168.1.111,子网掩码为255.255.255.0,点击确定。返回网络调试助手,点击连接,这样就可以在客户端和服务器之间建立通信。此次通信我们没有将模块并联到一起,所以两模块的参数设置都是相同的。(此段内容是软件及电脑的设置内容,在文章下方推荐的视频链接中可以看到。)

三、报文详细说明

打开网络调试软件,点击左上角电脑图标,在工具选项中选择MODBUS调试器,在出现的窗口中选择Modbus-TCP协议。现在我们想读取模块DO 5~DO 10的状态。我们根据指令填写字节,设备默认的ID是01,Do在Modbus中被称为线圈,所以选择01命令。这里我们给出协议中四种数据类型的特征以及功能码汇总。

wKgZO2f8neKAKnRoAAKdq5jNnoA622.png寄存器种类

wKgZPGf8nfmAKun4AARSWfhvR-M633.png常用功能码描述

打开MT1004模块的用户手册选择相应的寄存器地址。

wKgZO2f8niaAXVYpAAEfR8Z7rwo568.pngMT1004映射表

通道5的地址是00006,输入的地址应该是0x0005。读取数据的长度是6个。所以生成的报文为:00 04 00 00 00 06 01 01 00 05 00 06。

wKgZPGf8nmOAYk9AAAD3c2E53Gk892.png01命令的请求报文

我们尝试分析这个报文:00 04,是报文头的事务处理标识,点击更新我们能看到它会加一,变为00 05;

wKgZPGf8nrWAK5s4AAD3pV6Lh2E442.png任务处理标识自动加1

00 00,是协议标识,说明使用Modbus协议;00 06,说明之后有六个字节的报文内容;01,是单元标识符,也就是设备地址;01,是功能码,表示读取线圈状态;00 05,是寄存器起始地址;00 06,是读取的线圈数量。调整接收设置的格式为HEX,服务器(从机)返回的响应报文是:00 05 00 00 00 04 01 01 01 00。

wKgZPGf8nu-AR3NqAADr0h8pIOU471.png01命令的响应报文

00 05,是此次通信的事务处理标识,与请求报文保持一致;00 00,是协议标识符,与请求报文一致;00 04,是提示之后有4个字节长度的内容;01,是设备地址;01,是功能码,与请求报文相同;01,说明接下来的报文长度;00,表明DO线圈均处于断开状态(0000 0000),高位用零补充。

接下来我们以闭合、断开的规律改变通道5~10的线圈状态,也就是进行写线圈操作,它的命令是0F。生成的报文是:00 07 00 00 00 08 01 0F 00 05 00 06 01 15。

wKgZPGf8n0WABQ9QAAJOvJJ1uns644.png0F命令的请求报文

报文的解释是:00 07,事务处理标识符;00 00,协议标识,说明使用Modbus协议;00 08,说明接下来有8个字节的报文长度;01,是设备地址;0F,是功能码,请求执行写线圈操作;00 05,是寄存器的起始地址;00 06,是写寄存器的个数;01,说明之后有一个字节的内容;15,反映了要写入的寄存器状态,我们将其写成二进制是:0001 0101,对应通道是10、9、8、7、6、5,最高两位以0补齐。

响应报文是:00 07 00 00 00 06 01 0F 00 05 00 06。

wKgZPGf8n4GAEOeUAADXnbRygDQ729.png0F命令的响应报文

对它的解释是:00 07为事务处理标识符;00 00为协议标识符;00 06说明后面有6个字节的报文长度;01为设备地址;0F为功能码;00 05是开始寄存器的地址;00 06是服务器一共改写了6个线圈的状态,我们可以打开软件看一下。可见已经成功为线圈写入状态。

wKgZO2f8n6iANGiSAAFON8cpNMY544.png线圈状态

最后,我们将压力传感器连接到MT2003模块的AI 5通道上,尝试读取采集卡的输入寄存器的值,功能码是:04。各设备的接线图如下图所示:

wKgZPGf8n-6AVNfLAAXXAMc_9xQ421.png设备接线图

打开用户手册,AI 5的寄存器地址是6(十进制),

wKgZO2f8oBKACNxfAADLcuFTci8313.pngMT2003映射表

所以生成的响应报文是:00 05 00 00 00 06 01 04 00 05 00 01。

wKgZPGf8oFGAEc5nAAEs4WN29S0856.png04命令的请求报文

返回的响应报文是:00 05 00 00 00 05 01 04 02 61 11。

wKgZPGf8oI6AFC3hAAEDYr3K6yI772.png04命令的响应报文

通过报文可以看到,模块寄存器中的值是61 11,它反映了模块采集到的电流值的大小。将其转换为十进制是24849。根据用户手册,4mA~20mA的电流值对应0~65535(十进制)的数据值,所以24849对应的电流值为10.07mA。依据压力传感器的技术指标,其测量到的压力大小约为39.1MPa。计算过程如下图所示。

wKgZPGf8oO6ABVWEAAEiHW8yxAI953.png计算(一) wKgZO2f8oQGAFe98AAFhR0kYIA0747.png计算(二)

Modbus-TCP协议产生错误时返回的报文与Modbus-RTU协议一样,都是功能码加0x80后跟着一个字节的错误代码。大家可以观看我们发布的Modbus-RTU协议的文章,这里我们就不再赘述了。

wKgZO2f8oaeAfI1lAAHY0emakrY628.png错误报文示例

以上就是Modbus-TCP协议的相关内容。更推荐观看文章内容的视频版:Modbus TCP协议说明

文章中使用的调试软件是Modbus Poll,使用的模块可以进入Smacq官网查看。有任何问题大家可以留言给我们或是直接从微信公众号:Smacq思迈科华,联系我们。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    智能物流立体仓库通讯困境:基于协议转换的Modbus TCPModbus RTU解决方案

    在工业自动化领域的智能物流自动化立体仓库中,塔讯 TX 131-RE-RS/TCP在某企业采用研华工控机(Modbus RTU 协议)负责仓储管理系统(WMS)的订单下发、库存统计,搭配三菱 Q 系列 PLC(
    的头像 发表于 11-08 11:25 139次阅读
    智能物流立体仓库通讯困境:基于<b class='flag-5'>协议</b>转换的<b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b> 转 <b class='flag-5'>Modbus</b> RTU解决方案

    Profinet从转Modbus(TCP)主总线协议转换网关

    Modbus(TCP)从站网络网络设备连接,‌从而实现不同工业通信协议之间的相互转换。可支持Modbus TCP Client和
    的头像 发表于 09-18 14:57 402次阅读
    Profinet从转<b class='flag-5'>Modbus</b>(<b class='flag-5'>TCP</b>)主总线<b class='flag-5'>协议</b>转换网关

    塔讯 Modbus RTU 转 Modbus TCP 在污水处理厂 PLC 数据采集中的配置案例

    水处理厂中有多种支持 Modbus RTU 协议的设备,如水质分析仪表、流量计、液位计等,为了实现这些设备与上位机系统(采用 Modbus TCP
    的头像 发表于 08-18 15:20 507次阅读
    塔讯 <b class='flag-5'>Modbus</b> RTU 转 <b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b> 在污水处理厂 PLC  数据采集中的配置案例

    通用串口转Modbus TCP 网关

    通用串口转Modbus TCP 网关 在工业自动化系统中,设备协议的多样性常常导致通信障碍。许多关键设备采用独特的串口协议(自定义串口协议
    的头像 发表于 08-13 15:59 427次阅读
    通用串口转<b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b> 网关

    Modbus TCPModbus RTU电脑端 TCP 与西门子 V20 变频器的通信案例

    在工业自动化控制系统中,经常需要实现不同设备之间的通信与数据交互。本案例旨在展示如何通过 Modbus 协议,将电脑作为主站(Modbus TCP)与多台西门子变频器 V20(
    的头像 发表于 07-27 17:19 606次阅读
    <b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b> 转 <b class='flag-5'>Modbus</b> RTU电脑端 <b class='flag-5'>TCP</b> 与西门子 V20 变频器的通信案例

    什么是Modbus TCP协议

    Modbus TCP是一种基于TCP/IP协议Modbus通信协议,用于在客户机和服务器之间进
    的头像 发表于 07-23 17:18 3292次阅读
    什么是<b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b><b class='flag-5'>协议</b>

    CAN从站转Modbus TCP主站总线协议转换网关

    同学们,今天小编给大家详细讲解下CAN从站转Modbus TCP主站总线协议转换网关 一,设备主要功能 JH-CAN-TCP疆鸿智能 网关实现连接CAN设备和网络到
    的头像 发表于 07-02 20:11 433次阅读
    CAN从站转<b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b>主站总线<b class='flag-5'>协议</b>转换网关

    Modbus TCP转Profibus DP主站网关:跨协议集成的核心枢纽

    一、产品定位:主站级协议融合 在工业自动化系统中,如何实现不同通信协议设备的高效协同一直是技术难点。三格电子推出的Modbus TCP转Profibus DP主站网关,以强大的
    的头像 发表于 04-17 16:04 581次阅读
    <b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b>转Profibus DP主站网关:跨<b class='flag-5'>协议</b>集成的核心枢纽

    Profibus DP主站如何转Modbus TCP

    在现代工业自动化系统中,设备之间的互联互通至关重要。Profibus DP 和 Modbus TCP 是两种常见的通信协议,分别应用于不同的场景。为了实现这两种协议的相互转换,Prof
    的头像 发表于 04-11 15:58 472次阅读
    Profibus DP主站如何转<b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b>?

    Modbus RTU协议说明

    文章对Modbus RTU协议进行了较为详细的说明,并用具体示例可以参考。
    的头像 发表于 04-11 10:56 4382次阅读
    <b class='flag-5'>Modbus</b> RTU<b class='flag-5'>协议</b><b class='flag-5'>说明</b>

    CAN转Modbus TCP工具的应用案例

    CAN转Modbus TCP工具在工业自动化、汽车电子、能源管理等领域有广泛的应用,主要用于实现不同协议设备之间的数据互通。
    的头像 发表于 04-10 16:24 927次阅读

    Modbus TCP转Profibus DP网关的防撞雷达应用

    工业自动化领域中,Modbus TCP和Profibus DP分别代表了两种广泛使用的通讯协议Modbus TCP是一种基于
    的头像 发表于 03-31 16:18 580次阅读
    <b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b>转Profibus DP网关的防撞雷达应用

    Modbus TCP 到 RTU:轻松转换指南!

    在现代工业自动化领域,Modbus TCPModbus RTU两种通信协议因其高效、稳定的特点被广泛应用。然而,随着技术的发展和设备升级的需求,经常会遇到需要将这两种
    的头像 发表于 03-14 15:21 1318次阅读
    <b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b> 到 RTU:轻松转换指南!

    CC-Link IE FB转 Modbus TCP

    CC-Link IE FB协议Modbus TCP
    的头像 发表于 01-24 17:35 829次阅读
    CC-Link IE FB转 <b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b>

    Modbus TCP编程与实验

    本课程并没有支持Modbus TCP协议的传感器,所以使用将会编写2个程序。
    的头像 发表于 01-03 09:27 1768次阅读
    <b class='flag-5'>Modbus</b> <b class='flag-5'>TCP</b>编程与实验