当前位置: 首页 > news >正文

Modbus TCP Java入门 - 指南

前言

        手上有个需求需要对接一个继电器 TAS-IO-231R,遂了解下相关知识,该产品支持串口、和Modbus TCP、Modbus RTU协议,4个DO和4个DI口。

一、Modbus RTU、ASCII、TCP性能对比分析

性能指标Modbus RTUModbus ASCIIModbus TCP说明
传输效率⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐RTU二进制最高效,ASCII字符编码效率低
有效数据率~85%~40%~95%协议开销占比
帧开销4字节 (地址+CRC)7字节 (起始+地址+LRC+结束)7字节 (MBAP头)不含功能码和数据
单帧最大数据253字节253字节253字节PDU限制
实时性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐TCP网络延迟最低,ASCII最慢
典型响应时间40-100ms80-200ms5-20ms9600bps串口 vs 以太网
最大轮询频率10-25 Hz5-12 Hz100+ Hz取决于数据量和网络
可靠性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐TCP有重传机制,CRC比LRC更强
错误检测能力CRC-16LRC-8TCP校验和CRC-16检错能力最强
抗干扰能力中等二进制vs文本,网络隔离
易调试性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐ASCII人类可读,便于调试
协议可读性二进制文本可读二进制ASCII可直接查看内容
调试工具需求专用工具串口终端即可网络抓包工具ASCII最简单
网络扩展性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐TCP支持路由、交换,串口点对点
最大节点数247 (理论)247 (理论)无限制串口实际32-64个,TCP受网络限制
传输距离1200m1200m无限制RS-485限制 vs 以太网路由
硬件成本⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐串口芯片便宜,以太网成本高
设备成本中等RS-485收发器 vs 以太网PHY
布线成本中等双绞线 vs 网线+交换机
实现复杂度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐TCP栈复杂,但有现成实现
软件复杂度中等中等时序控制 vs 网络栈
硬件复杂度UART vs 以太网控制器

这里博主选择了网络延迟更小、更可靠、拓展性强的Modbus TCP协议

二、Modbus TCP

Modbus TCP 是 Modbus 协议家族中的一种传输模式,它利用标准的 TCP/IP 网络协议栈在以太网线路上进行数据交换。Modbus TCP 采用客户端-服务器(Client-Server)模型。同时沿用了 Modbus RTU 的核心数据模型。

Modbus TCP 在标准的 Modbus PDU (Protocol Data Unit) 前面增加了一个 MBAP (Modbus Application Protocol) 头部,并移除了 Modbus RTU 中的 CRC 校验

Modbus TCP 请求/响应报文的结构如下:

[MBAP 头部] [Modbus PDU]7字节        N字节

MBAP

[事务标识符] [协议标识符] [长度] [单元标识符]2字节        2字节     2字节      1字节
Modbus PDU (Protocol Data Unit) - 变长

Modbus PDU 是 Modbus 协议的核心部分,它在 Modbus RTU 和 Modbus TCP 中是基本相同的。它包含了功能码和与该功能码相关的数据。

[功能码] [数据字段]1字节    N字节

三、报文实例

do控制为例

3.1 串口协议
3.2 对应的Modbus-TCP报文如下

3.3  Modbus-TCP 详细解释
        线圈写(控制继电器do指令)00 04 00 00 00 06 11 05 00 00 FF 00│     │     │     │  │  │     ││     │     │     │  │  │     └─ 写入的状态(FF 00 代表闭合状态)│     │     │     │  │  └─ Data DO1寄存器地址 (0000)│     │     │     │  └─ Function Code 功能码05-写入单个寄存器│     │     │     └─ Unit ID 设备地址 (0x11)│     │     └─ Length 后续字节长度│     └─  Protocol ID 2 bytes└─  Transaction ID 2 bytes

四、Modbus-TCP Java实现

4.1 引入Maven依赖

            com.digitalpetri.modbusmodbus-tcp2.1.3

4.2 Modbus-TCP源码

    private static final Integer port= 10123;public static void main(String[] args) throws ModbusExecutionException, ModbusTimeoutException, ModbusResponseException {ModbusTCPTest modbusTCPTest = new ModbusTCPTest();modbusTCPTest.testControlDO1();}public void testControlDO1() throws ModbusExecutionException, ModbusTimeoutException, ModbusResponseException {System.out.println("开始测试控制DO-1...");var transport = NettyTcpClientTransport.create(cfg -> {cfg.setHostname(host_name);cfg.setPort(port);});var client = ModbusTcpClient.create(transport);client.connect();int unitId = 0x11;int addressStart = 0x00;int value = 0XFF00;// 先读取当前状态WriteSingleCoilResponse readResponse = client.writeSingleCoil(unitId,new WriteSingleCoilRequest(addressStart, value));System.out.println("DO-1状态: " + (readResponse.value()==value));}

tip:TAS-IO-231R对接会遇到的一些问题

1、设备ip是多少

        TAS-IO-231R接到路由器等设备后,会自动分配ip,使用官方提供的工具,点击搜索即可找到相关设备

2、设置静态ip

        连接之后表盘切换至以太网模式,配置服务器和设备ip,保存之后重启设备即可

3、粘包

        登录后设备会自动向服务器发送注册表,如没有特殊处理可能会导致粘包异常,关闭注册包即可

参考

塔石资料

https://github.com/digitalpetri/modbus

https://modbuskit.com/zh/blog/modbus-tcp-basic-tutorial

http://www.jsqmd.com/news/200869/

相关文章:

  • JavaScript DOM 核心操作:从内容到节点的实战指南
  • TF卡系列、SD卡系列、CF卡系列有什么区别呢?我本来应该买TF卡系列,用在树莓派上面的。
  • Oracle RAS:AI时代企业数据安全核心
  • 【拯救HMI】工业HMI常见故障及排查方法:黑屏、通信中断、操作无响应,新手别慌
  • 安全体验馆!优质供应商榜单:口碑评估维度与采购参考指南
  • 快快网络入选福州市网络与信息安全信息通报中心2026年度网络安全技术支撑单位
  • 2026必备!10个AI论文工具,继续教育学生轻松搞定毕业论文!
  • 揭秘GEO:AI时代,如何让你的品牌被ChatGPT“点名”推荐?
  • 杰和IM1-210核心板用模块化设计重新定义工业主板开发
  • 数眼智能搜索API VS 腾讯(搜狗)搜索API:技术赋能下的差异化价值绽放
  • 彼得林奇的“买入并持有“策略
  • 享元模式
  • 如何保证rabbitmq或kafka 消息不丢失,从生产到消费端全过程
  • 数眼智能搜索 API VS 安思派搜索 API,谁是 AI 应用的最佳信息搭档?
  • TX Text Control ActiveX 34.0 FIX
  • LangGraph人机协同(HITL)实战:三种核心模式详解+企业部署避坑指南
  • C# 基于OpenCv的视觉工作流-章5-自动二值化
  • 云购系统介绍
  • 【图像分解】基于粒子群优化的匹配追踪图像稀疏分解算法的MATLAB实现
  • Prompt工程核心技巧:三步让AI精准理解你的需求,小白也能秒上手
  • **竞争资源**:当多个进程共享系统资源(如内存、I/O设备、文件等),而资源数量不足以满足所有进程的需求时
  • FastGPT完全部署指南:从零搭建大语言模型知识平台
  • qmlRegisterType 详解
  • 死锁避免与银行家算法的核心在于通过动态检测资源分配后的系统状态是否处于“安全状态”,从而决定是否允许资源分配
  • 1.5.3
  • 5分钟用AI搞定顶刊级引言!掌握三段式结构+避坑要点,让你的Introduction更有说服力(附提示词)
  • 所有权之谜:为什么鲸鱼濒临灭绝,鸡却没有繁衍之忧?
  • 针对Ubuntu 22.04服务器开机黑屏无图形界面的问题,如果 nomodeset 不行,下次可以尝试换成 nvidia-drm.modeset=1【笔记】
  • GEO报告一键生成工具:从数据采集到分析闭环
  • 转行大模型产品经理:5大核心能力+6个月学习路线,月薪30K+不是梦_2026年零基础转行大模型产品经理必备