Modbus4j 是一个 Java 库,用于实现 Modbus 协议通信。要使用 Modbus4j 实现数据写入,首先需要添加相关依赖,然后创建一个 ModbusMaster 对象来连接到 Modbus 服务器,最后使用 writeSingleRegister() 或 writeMultipleRegisters() 方法写入数据。
以下是一个简单的示例,展示了如何使用 Modbus4j 实现数据写入:
- 添加 Modbus4j 依赖
在你的项目中添加 Modbus4j 依赖。如果你使用的是 Maven,可以在 pom.xml 文件中添加以下依赖:
net.wimpi modbus4j 2.3.0
- 创建 ModbusMaster 对象并连接到服务器
import net.wimpi.modbus.ModbusFactory; import net.wimpi.modbus.io.ModbusTCPTransaction; import net.wimpi.modbus.io.ModbusTransaction; import net.wimpi.modbus.msg.WriteSingleRegisterRequest; import net.wimpi.modbus.msg.WriteMultipleRegistersRequest; import net.wimpi.modbus.net.TCPMasterConnection; public class Modbus4jWriteExample { public static void main(String[] args) { try { // 创建 ModbusFactory 对象 ModbusFactory modbusFactory = ModbusFactory.getInstance(); // 创建 TCPMasterConnection 对象,指定服务器地址和端口 TCPMasterConnection connection = new TCPMasterConnection("127.0.0.1", 502); // 连接到 Modbus 服务器 connection.connect(); // 创建 ModbusMaster 对象 ModbusMaster modbusMaster = modbusFactory.createModbusMaster(connection); // 写入单个寄存器 writeSingleRegister(modbusMaster, 1, 42); // 写入多个寄存器 writeMultipleRegisters(modbusMaster, 2, new int[]{10, 20, 30}); // 关闭连接 connection.close(); } catch (Exception e) { e.printStackTrace(); } } public static void writeSingleRegister(ModbusMaster modbusMaster, int address, int value) throws Exception { // 创建 WriteSingleRegisterRequest 对象 WriteSingleRegisterRequest request = new WriteSingleRegisterRequest(address, value); // 执行请求并获取响应 ModbusTransaction transaction = modbusMaster.sendRequest(request); transaction.waitForResponse(); // 检查响应状态 if (transaction.getResponseCode() == ModbusResponse.OK) { System.out.println("成功写入单个寄存器,地址:" + address + ",值:" + value); } else { System.out.println("写入单个寄存器失败,响应代码:" + transaction.getResponseCode()); } } public static void writeMultipleRegisters(ModbusMaster modbusMaster, int address, int[] values) throws Exception { // 创建 WriteMultipleRegistersRequest 对象 WriteMultipleRegistersRequest request = new WriteMultipleRegistersRequest(address, values.length, values); // 执行请求并获取响应 ModbusTransaction transaction = modbusMaster.sendRequest(request); transaction.waitForResponse(); // 检查响应状态 if (transaction.getResponseCode() == ModbusResponse.OK) { System.out.println("成功写入多个寄存器,地址:" + address + ",值:" + Arrays.toString(values)); } else { System.out.println("写入多个寄存器失败,响应代码:" + transaction.getResponseCode()); } } }
在这个示例中,我们首先创建了一个 ModbusFactory 对象,然后使用 TCPMasterConnection 连接到 Modbus 服务器。接着,我们使用 writeSingleRegister() 和 writeMultipleRegisters() 方法分别写入单个寄存器和多个寄存器。最后,我们关闭了连接。