1.首先安装modbus slave 模拟器,自己到网上下载破解版的 有注册码
2.新建寄存器 设置单元内数值,点击connection下面的connect,红色的No connection 字样消失 连接成功
3.java侧读取工具类,里面有不同变量类型的读取,读取方法要与modbus slave 寄存器设置的变量类型保持一致
package utils;
import java.net.InetAddress;
import net.wimpi.modbus.Modbus;
import net.wimpi.modbus.ModbusException;
import net.wimpi.modbus.ModbusIOException;
import net.wimpi.modbus.ModbusSlaveException;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.msg.ReadCoilsRequest;
import net.wimpi.modbus.msg.ReadCoilsResponse;
import net.wimpi.modbus.msg.ReadInputDiscretesRequest;
import net.wimpi.modbus.msg.ReadInputDiscretesResponse;
import net.wimpi.modbus.msg.ReadInputRegistersRequest;
import net.wimpi.modbus.msg.ReadInputRegistersResponse;
import net.wimpi.modbus.msg.ReadMultipleRegistersRequest;
import net.wimpi.modbus.msg.ReadMultipleRegistersResponse;
import net.wimpi.modbus.msg.WriteCoilRequest;
import net.wimpi.modbus.msg.WriteSingleRegisterRequest;
import net.wimpi.modbus.net.TCPMasterConnection;
import unit.UnityRegister;
public class ModbusUtil {
/**
* 查询Function 为Input Status的寄存器
*
* @param ip
* @param address
* @param count
* @param slaveId
* @return
* @throws ModbusIOException
* @throws ModbusSlaveException
* @throws ModbusException
*/
public static int readDigitalInput(String ip, int port, int address, int slaveId) {
int data = 0;
try {
InetAddress addr = InetAddress.getByName(ip);