Мастер посылает пакеты. Слейв слушает линию, и когда видит пакет, обрабатывает его и отвечает. slave.poll() как раз отвечает за приём, обработку пакета и отправку ответного. Этот метод нужно периодически дёргать в основном цикле, по таймеру или просто так. Если мастер ничего не прислал, slave.poll() просто завершается. Все модбасные регистры отображаются в память слейва (массив au16data[]), можно их читать/писать в любой момент. Точнее, не совсем в любой, а когда не вызывается slave.poll().
Блок
if (master.getState() == COM_IDLE) {
u8state = 0;
u32wait = millis() + 100;
}
даёт задержку 100мс перед следующим опросом модбаса. В коде мастера реализован простейший конечный автомат с тремя состояниями.
1) u8state == 1 Отправка запроса
2) u8state == 2 Приём ответа
3) u8state == 0 Задержка