ModBusMaster RTU (испытание с модулями ОВЕН в качестве Slave) не работает, если в основном цикле всей программы до следующего запроса задержка более 5 миллисекунд. Это может другой запрос, обращение к дисплею, для теста вставил пользовательский блок задержки с регулируемой задержкой.
Как преодолевать проблему?
Может быть покопаемся в драйвере сами, но может быть разработчик Сергей уже что-то знает об этом?
Пока изучаем тексты драйвера FLProg и похожих драйверов из GetHub.
Есть вроде наметки где и куда копать, но здорово бы услышать мнение разработчика.
------
Тестовая программа прикреплена.
Добавлено (28.05.2017, 09:39)
---------------------------------------------
Как часто бывает - тревога ложная. Все заработало.
Видимо были проблемы с внешним оборудованием.
Пора искали, разобрались немного с драйвером.
Вставили в него кусочки кода:
//--------------------------------
Serial.print("w="); Serial.print(_modbusMasterBufferSize);
for (int i=0; i<_modbusMasterBufferSize; i++){Serial.print(" ");Serial.print(_modbusMasterBuffer);}
Serial.println(" ##");
//--------------------------------
для чтения посылок
и аналогично
//--------------------------------
Serial.print("r="); Serial.print(_modbusMasterBufferSize);
for (int i=0; i<_modbusMasterBufferSize; i++){Serial.print(" ");Serial.print(_modbusMasterBuffer);}
Serial.println(" ##");
//--------------------------------
для чтения ответов.
Соответственно увидели, что есть запросы и нет на них ответов, а там и заработало...
================
Пожелания остаются:
1. Добавить возможность использовать нескольких Slave;
2. Сделать работу UART, в том числе и в ModBus, по прерываниям,.
Всем Спасибо.