В SimpleModbusMaster.cpp вы найдете такой код:
void modbus_configure(...) {
Serial.begin(baud);
...
}
void waiting_for_reply()
{
if (Serial.available()) // is there something to check?
{
...
}
...
}
Так эта библиотека использует (первый) аппаратный последовательный порт, который на UNO, подключенный к выводам 0 и 1. Вам также необходимо выбрать, какой контакт для подключения к выходу TxEnable адаптера адаптера RS485. пример включены в файл библиотеки почтового индекса использует контактный номер 2:
// used to toggle the receive/transmit pin on the driver
#define TxEnablePin 2
Та же история в SimpleModbusSlave.cpp:
unsigned int modbus_update()
{
if (Serial.available())
{
...
}
...
}
Так как ведущий и ведомый Arduinos используйте булавку 0 и 1. Кроме того, мастер использует контакт 2 (в прилагаемом примере) для управления шиной в правильном направлении (передача или прием).
Лучшим решением было бы открыть проблему с разработчиком этой библиотеки. Наивное предположение, основанное на последовательной связи, будет от Tx до Rx и Rx до Tx между двумя платами. –