我正在使用 J2mod 库来满足我的 modbus 通信需求。我基本上想使用java服务创建modbus从站,它将由另一个java服务更新。为了模拟这个,我正在编写 2 个测试类,但是在从 master 读取数据时,我不断遇到非法地址问题。我肯定在从站创建中遗漏了一些东西,因为如果我使用像 ModbusSlaveSlim 这样的工具,它就可以正常工作。
ModbusSlaveApp
SimpleProcessImage spi = new SimpleProcessImage(1);
spi.addRegister(47, new SimpleRegister(251));
ModbusSlave slave = ModbusSlaveFactory.createTCPSlave(502, 5);
slave.addProcessImage(1, spi);
slave.open();
ModbusTCPListener listener = new ModbusTCPListener(5, InetAddress.getByName("127.0.0.1"), false);
listener.setPort(502);
listener.setListening(true);
listener.setTimeout(5000);// 5 Seconds
ModbusMasterApp
ModbusTCPMaster tcpMaster = new ModbusTCPMaster("127.0.0.1", 502);
tcpMaster.connect();
// TEST READ FOR PUMP SETTINGS
Register[] data1 = tcpMaster.readMultipleRegisters(1, 47, 2);
我的地址似乎正确,但仍然不断收到非法数据地址异常
看一下 j2mod 的测试用例,每个传输都有很多示例,即创建一个从站,然后从主站调用它。 如果您需要,很乐意提供帮助https://github.com/steveohara/j2mod