Modbus4j – Java版本modbus协议实现

freefree技术Resources

这篇内容可直接阅读,适合用于基础学习和Search引流。

Modbus4j – Java版本modbus协议实现缩略图
🌐 This page is not yet available in English. Showing the Chinese version. Back to Chinese page.
本文目录
  1. 1. 核心类
  2. 2. data流程
  3. 3. 单元测试

GitHub:https://github.com/infiniteautomation/modbus4j

由Infinite Automation Systems和Serotonin Software用Java编写的Modbus协议的高性能和易用性实现。支持ASCII,RTU,TCP和UDP传输作为从属或主用,自动Request分区和Responsedata typeParse。

现在可以使用最新版本的公共Maven存储库,将其添加到pom.xml中

<repositories>
    <repository>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <id>ias-snapshots</id>
        <name>Infinite Automation Snapshot Repository</name>
        <url>https://maven.mangoautomation.net/repository/ias-snapshot/</url>
    </repository>
    <repository>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <id>ias-releases</id>
        <name>Infinite Automation Release Repository</name>
        <url>https://maven.mangoautomation.net/repository/ias-release/</url>
    </repository>
</repositories>

依赖项信息为:

<dependency>
    <groupId>com.infiniteautomation</groupId>
    <artifactId>modbus4j</artifactId>
    <version>3.0.3</version>
</dependency>

核心类

  • 主机Master及其子类:主机的入口,data流的起点和终点。
  • data端口类StreamTransport:负责data的写入和读出。
  • Modbus消息类ModbusMessage及其子类:支持Modbus定义的各种方法(FunctionCode)
  • 收发data控制类MessageControl:支持 timeout、retries,默认200ms,1次。
    • 收发等待室WaitingRoom:负责同步收发逻辑。
    • 输出Request消息类:OutgoingRequestMessage 及其子类。
    • 收到Response消息类:IncomingResponseMessage 及其子类。
    • Parse类MessageParser:负责Parse收到的消息。
  • 协议data type定义:DataType
  • 协议function code定义:FunctionCode
  • 协议register范围:RegisterRange

data流程

  1. 透过ModbusFactory创建对应的Master对象。
  2. 封装需要send的指令,比如ReadHoldingRegistersRequest,这是一个读register指令,指定register address和Length即可。
  3. Master对象将这个ReadHoldingRegistersRequest转化为OutgoingRequestMessage对象,然后传输给MessageControl
  4. 透过驱动层,MessageControl将这个OutgoingRequestMessage写入对应的通讯硬件外设(串口、网口等),并等待返回dataIncomingResponseMessage
  5. 如果没有等到,就返回null,并提醒超时。
  6. 如果等到了effective返回,则MessageControl利用MessageParserIncomingResponseMessage转化为对应ModbusResponse返回给上层。

单元测试

在modbus4j/src_test/定义了一系列单元测试方法,跟踪其中Related方法,即可了解modbus协议的实际运作流程。

技术术语(共 3 个)—— 点击展开
function codeModbusfunction code指定读/写OperationType,如01读线圈、03读保持register
registerModbus register存储data单元,分线圈/离散输入/保持/输入register四类
串口计算机与外部设备进行串行通信的物理接口
来源/Tools信息 —— 点击展开
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbus通信协议技术社区 Category Modbus编程开发 字数 1942 字 · 阅读约 5 分钟 更新 2023-04-09 永久链接 https://www.modbus.cn/11988.html
Recommended Tool: Modbus Debug Assistant WeChat Mini Program
Modbus Chinese Network官方推出的Modbus DebuggingTools,支持 Modbus RTU/TCP 实时通信debug、register读写、线圈控制、data监控和message分析。 无需安装,微信Search「Modbus DebuggingAssistant」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
把这篇Resources用于真实项目?

进入Tools中心进行messageParse、CRC verification和设备debug,或Submit requirements获取选型与接入建议。

工程师member

把这篇文章变成可执行的debugResources

开通后可使用高级messageParse、Resources包Download、Code Example、工程案例和优先Technical Support,适合真实项目交付。

高级Tools不限次
Resources包与代码包
Complete Engineering Case Library
优先Technical Support入口

发表回复

您的邮箱address不会被公开。 必填项已用 * 标注