Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.

Radix IoT Website Mango 3 Documentation Website Mango 4 Documentation Website

  • I start Mango with a Modbus IP data source created and get this error in the standar output:

    WARN 2010-04-16 10:51:48,781 (com.serotonin.mango.rt.dataSource.PollingDataSour
    ce.scheduleTimeout:66) - Modbus ip Prueba: poll at 2010/04/16 10:51:48 aborted b
    ecause a previous poll started at 2010/04/16 10:51:38 is still running
    WARN 2010-04-16 10:51:54,031 (com.serotonin.mango.rt.dataSource.modbus.ModbusDa
    taSource.receivedException:226) - Modbus exception
    com.serotonin.messaging.WaitingRoomException: No recipient was found waiting for
    response for key com.serotonin.modbus4j.ip.IpWaitingRoomKey@7fa2
    at com.serotonin.messaging.WaitingRoom.response(WaitingRoom.java:69)
    at com.serotonin.messaging.MessageControl.data(MessageControl.java:147)
    at com.serotonin.messaging.InputStreamListener.run(InputStreamListener.j
    ava:76)
    at java.lang.Thread.run(Thread.java:619)
    WARN 2010-04-16 10:51:58,687 (com.serotonin.mango.rt.dataSource.PollingDataSour
    ce.scheduleTimeout:66) - Modbus ip Prueba: poll at 2010/04/16 10:51:58 aborted b
    ecause a previous poll started at 2010/04/16 10:51:38 is still running

    What can be happening? There is now modbus server to connect.


  • I take it you're using UDP. Some background...

    Request messages are sent, and then the thread "sits in the waiting room" for the response to come back. After a timeout the thread leaves the waiting room, shrugs its shoulders, and says that it didn't get a response.

    Later, a response is received, but by that time "no recipient was found waiting for response".

    Solution: increase your timeout.


  • I'm using TCP.

    How can I avoid this error?


  • Im not responding.


  • Solution: increase your timeout.


  • How much? I have my modbus server turn off.


  • As much as needed to make the message go away. Seriously, i can't be more specific than that.


  • hi,

    I have almost the same problem with the WaitingRoomException.
    I set the timeout to different values with the same result, but the message
    is received anyways.

    output:
    request:
    00 00 00 00 00 06 03 03 00 01 00 0C ............

    com.serotonin.messaging.WaitingRoomException: No recipient was found waiting for response for key com.serotonin.modbus4j.ip.xa.XaWaitingRoomKey@8008
    at com.serotonin.messaging.WaitingRoom.response(WaitingRoom.java:69)
    at com.serotonin.messaging.MessageControl.data(MessageControl.java:153)
    at com.serotonin.messaging.InputStreamListener.run(InputStreamListener.java:76)
    at java.lang.Thread.run(Thread.java:595)
    response:
    00 00 00 00 00 1B 03 03 18 43 67 12 25 00 00 00 .........Cg.%...
    00 00 00 00 00 43 67 12 25 00 00 00 00 43 67 12 .....Cg.%....Cg.
    25 %

    {voltage 1=231.07088, voltage 6=231.07088, voltage 4=231.07088, voltage 3=0.0, voltage 2=0.0, voltage 5=0.0}

    Source:

    package test.sim;
    
    import com.serotonin.modbus4j.BatchRead;
    import com.serotonin.modbus4j.BatchResults;
    import com.serotonin.modbus4j.ModbusFactory;
    import com.serotonin.modbus4j.ModbusLocator;
    import com.serotonin.modbus4j.ModbusMaster;
    import com.serotonin.modbus4j.code.DataType;
    import com.serotonin.modbus4j.code.RegisterRange;
    import com.serotonin.modbus4j.ip.IpParameters;
     
    public class BatchTest
    {
      public static void main(String[] args) throws Exception {
        IpParameters tcpParameters = new IpParameters();
        tcpParameters.setHost("10.17.175.43");
    
        ModbusFactory modbusFactory = new ModbusFactory();
        ModbusMaster master = modbusFactory.createTcpMaster(tcpParameters, true);
    
    //    master.setTimeout(5000);
    
        for(int i = 0; i < 50; i++) {
    
          try {
            BatchRead<String> batchRead = new BatchRead<String>();
            int slaveId = 3;
    
            ModbusLocator locator = new ModbusLocator(slaveId, RegisterRange.HOLDING_REGISTER, 1,
              DataType.FOUR_BYTE_FLOAT);
    
            ModbusLocator locator2 = new ModbusLocator(slaveId, RegisterRange.HOLDING_REGISTER, 3,
              DataType.FOUR_BYTE_FLOAT);
    
            ModbusLocator locator3 = new ModbusLocator(slaveId, RegisterRange.HOLDING_REGISTER, 5,
              DataType.FOUR_BYTE_FLOAT);
    
            ModbusLocator locator4 = new ModbusLocator(slaveId, RegisterRange.HOLDING_REGISTER, 7,
              DataType.FOUR_BYTE_FLOAT);
    
            ModbusLocator locator5 = new ModbusLocator(slaveId, RegisterRange.HOLDING_REGISTER, 9,
              DataType.FOUR_BYTE_FLOAT);
    
            ModbusLocator locator6 = new ModbusLocator(slaveId, RegisterRange.HOLDING_REGISTER, 11,
              DataType.FOUR_BYTE_FLOAT);
    
            batchRead.addLocator("voltage 1", locator);
            batchRead.addLocator("voltage 2", locator2);
            batchRead.addLocator("voltage 3", locator3);
            batchRead.addLocator("voltage 4", locator4);
            batchRead.addLocator("voltage 5", locator5);
            batchRead.addLocator("voltage 6", locator6);
    
            master.init();
    
            BatchResults<String> results = master.send(batchRead);
    
            System.err.println(results);
          }
          finally {
            master.destroy();
          }
        }
      }
    }
    

    Thanking you in anticipation!


  • How much? I have my modbus server turn off.

    I guess i didn't read the entire question. If your modbus server is turned off, shouldn't you expect an error? There is obviously no appropriate timeout for equipment that will never answer.


  • Luke, what happens if you increase the timeout?