smarmengol / Modbus-Master-Slave-for-Arduino

Modbus Master-Slave library for Arduino
GNU Lesser General Public License v2.1
473 stars 328 forks source link

Time out problem #70

Open einarbjorkman opened 2 years ago

einarbjorkman commented 2 years ago

Hello, I am having the following problem: I am using a function (from another library) called CN0391_set_data( ). This function is quite time consuming and causes the slave.poll( ) function to time out. (Note: I get the same problem when replacing CN0391_set_data( ) with for example delay(2000) or delay(5000)). I have tried solving this with the following code (my actual sketch has more, but I left it out as I know this is not the problem):

#include <ModbusRtu.h>

#define TXEN 3

uint16_t roastData[16] = {
  241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 
};

Modbus slave(1,Serial,TXEN); 

uint16_t timeOutVal = 10000;

/*********************************************************************************/

void setup() {

Serial.begin(19200);

slave.start();
delay(10);
slave.setTimeOut( timeOutVal );
}

However the time-out time for slave.poll( ) does not appear to have changed. I say this because when reading registers with a Modbus troubleshooting tool (ModbusTool (V1.1.1.0)) I get the error message "Block with function 3 is timed out" (I am doing read holding registers) after around 1 second. If the time-out for slave.poll( ) was actually 10000 ms (and the error lay elsewhere) then you would expect this time to pass and then for the error message to occur. So my question is this: How can I modify the time-out time for slave.poll? Can this be done with functions available through including the library or do I have to modify the .h file in some way?

/ Einar.