40 Modubus Devices


Hemendra

Recommended Posts

Hello,

in one project i will have to connect 40 devices (15 Parameters of each device) with our DAQ. 2 wire Parallel connection Modbus RTU 485. I am testing 5 devices at this moment. One problem am facing is; data receiving getting slow of other devices If any device is not in network. I feel system waiting to get response of particular device so getting delayed for other queries. Any solution?

Also suggest any other points to take while connecting 40 Devices on modbus RTU 485.

Link to comment
Share on other sites

If you have a single 485 connection there is no way for DAQFactory to query multiple devices at the same time.  With separate serial connections or over Ethernet DAQFactory can query devices independently and concurrently, but not on a single 485 connection.  Think of it like a telephone.  You have 40 people on a conference call.  Only one person can really talk at once if anything is to be understood.  This is what you have with a single RS485 chain.  But if you had 40 different telephone lines, you could have 40 different conversations at the same time.  That would be if you had multiple 485 ports on the PC, or multiple 232 ports, or Ethernet connections.

Now a few things: you get the delay because when DAQFactory sends a query it has to wait for a response.  It doesn't know exactly how long that will take and so there is a preset Timeout parameter for the port.  The default is 1000 ms.  You may want to drop that down so that when a device isn't there or doesn't respond in a timely manner, DAQFactory will move on quicker.  Use the Comm Monitor with the Display Time of Tx/Rx checked to see about how long it actually takes to complete a query, then use maybe 2 times that as the minimum timeout value.

You may also need to use the setDelay() function to introduce a slight delay between queries.  This is often required in multidrop arrangements.  In an Auto-Start sequence add a single line of script similar to:

device.myDevice.setDelay(20)

That will add a 20ms delay after each query and give the RS485 transceivers time to respond.  20 may be a bit long, but start there, then drop it until you start to get comm failures.  At a minimum I would run it at 1 for multidrop.

 

Link to comment
Share on other sites

Hi Guru, Thanks its good idea to increase no of comm channels. now I am setting 2 comm channels and separating devices equally on both channels.

Further, one more solution told for setting delay, i am feeling this option very useful for this project (as its true that many parameters having very low importance and delayed in update). but quite confuse to use, Where to add that delay script  and what to do at TIMING tab at CHANNEL TABLE. Better if you can give small sample having 10 channels with set delay.

Link to comment
Share on other sites

You just call setDelay() once in an auto-start sequence to set the desired delay.  This is independent of Timing or Offset.  It just makes the communications frame longer.  In general for 2 comm channels, you should put all the channels on 1 comm channel with one Timing and Offset pair, and all the channels for the other comm channel on a different Timing / Offset.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.