我用Java实现modbus通信,程序启动后报错

我用Java实现modbus通信,程序启动后报错

img


代码如下


```java

 // 设置主机TCP参数
            TcpParameters tcpParameters = new TcpParameters();

            // 设置TCP的ip地址
            InetAddress adress = InetAddress.getByName("150455.cnsh.iot-tcp.com");

            // TCP参数设置ip地址
            // tcpParameters.setHost(InetAddress.getLocalHost());
            tcpParameters.setHost(adress);

            // TCP设置长连接
            tcpParameters.setKeepAlive(true);
            // TCP设置端口,这里设置是默认端口502
            tcpParameters.setPort(15000);

            // 创建一个主机
            ModbusMaster master = ModbusMasterFactory.createModbusMasterTCP(tcpParameters);
            Modbus.setAutoIncrementTransactionId(true);

            int slaveId = 201;//从机地址
            int offset = 115;//寄存器读取开始地址
            int quantity = 1;//读取的寄存器数量


            try {
                if (!master.isConnected()) {
                    master.connect();// 开启连接
                }

                // 读取对应从机的数据,readInputRegisters读取的写寄存器,功能码04
                int[] registerValues = master.readInputRegisters(slaveId, offset, quantity);

                // 控制台输出
                for (int value : registerValues) {
                    System.out.println("Address: " + offset++ + ", Value: " + value);
                }

            } catch (ModbusProtocolException e) {
                e.printStackTrace();
            } catch (ModbusNumberException e) {
                e.printStackTrace();
            } catch (ModbusIOException e) {
                e.printStackTrace();
            } finally {
                try {
                    master.disconnect();
                } catch (ModbusIOException e) {
                    e.printStackTrace();
                }
            }
想请你们帮我看看是哪里出了问题

你先用串口助手好好调试,确定功能码04能读到数据,再用程序实现
报错说应该读到6个字节,但是实际返回0个字节

可以查看这篇写的,
https://blog.csdn.net/neusoft2016/article/details/127725957