modbusTcp工具类读取 modbus slave 数据
时间: 2025-05-01 18:40:25 浏览: 19
### 使用 ModbusTcp 工具类读取 Modbus Slave 设备数据
为了实现对 Modbus Slave 设备数据的读取,可以借助多种编程语言中的工具库完成操作。以下是基于 Java 和 Node.js 的两种常见方法。
#### 方法一:使用 Java 实现 Modbus TCP 数据读取
在 Java 中可以通过 `com.digitalpetri.modbus` 提供的依赖包来构建 Modbus Master 并连接到 Modbus Slave 进行数据交互[^3]。以下是一个简单的代码示例:
```java
import com.digitalpetri.modbus.master.ModbusMaster;
import com.digitalpetri.modbus.requests.ReadHoldingRegistersRequest;
import com.digitalpetri.modbus.responses.ReadHoldingRegistersResponse;
public class ModbusTcpExample {
public static void main(String[] args) throws Exception {
// 创建 Modbus Master 对象并指定 IP 地址和端口 (默认 502)
try (ModbusMaster master = new ModbusMaster("192.168.1.10", 502)) {
// 发送请求读取保持寄存器 (假设起始地址为 0,数量为 10)
ReadHoldingRegistersRequest request = new ReadHoldingRegistersRequest(0, 10);
ReadHoldingRegistersResponse response = (ReadHoldingRegistersResponse) master.send(request);
if (!response.isException()) {
System.out.println("Register Values: " + Arrays.toString(response.getShortData()));
} else {
System.out.println("Error Code: " + response.getErrorCode());
}
}
}
}
```
上述代码展示了如何创建一个 Modbus Master 来发送读取保持寄存器的请求,并处理返回的结果。注意需要替换目标设备的实际 IP 地址以及调整读取参数以匹配具体需求。
#### 方法二:使用 Node.js 实现 Modbus TCP 数据读取
对于前端开发者或者更倾向于轻量级解决方案的情况,Node.js 配合 `modbus-serial` 库也是一个不错的选择[^2]。下面给出一段基本的例子用于展示如何初始化客户端并与服务器交换信息:
```javascript
const Modbus = require('modbus-serial');
let client = new Modbus.TCP();
client.connectTCP("192.168.1.10", { port: 502 }, function () {
console.log("Connected");
// 设置超时时间
client.setTimeout(1000);
// 请求读取输入寄存器
client.readInputRegisters(0, 10, function(err, data){
if(!err){
console.dir(data.buffer.toJSON());
}else{
console.error(err.message);
}
// 断开连接
client.close();
});
});
```
这段脚本首先定义了一个新的 Modbus 客户端实例并通过调用 connectTCP 函数建立至远程主机 '192.168.1.10' 上运行的服务之间的链路;随后执行 readInputRegisters 调用来获取一组连续存储单元内的数值。
无论选用哪种技术栈,在正式部署之前都建议充分测试网络连通性和兼容性问题,同时确认所使用的功能码与目标硬件支持的功能相一致[^1]^。
---
阅读全文
相关推荐


















