Библиотека iarduino_Modbus позволяет работать с устройствами по шине RS485 используя протокол Modbus RTU или Modbus ASCII. Так как у большинства плат Arduino и ESP нет шины RS485, библиотека использует аппаратную или программную шину UART. Сигналы шины UART необходимо преобразовать в сигналы шины RS485 при помощи конвертирующего модуля UART-RS485.
Синтаксис функций библиотеки iarduino_Modbus совместим с библиотекой ArduinoModbus.
Подробное описание работы с библиотекой, находится в разделе Wiki - Работа с протоколом Modbus RTU/ASCI по шине RS485.
#include <iarduino_Modbus.h> // Подключаем библиотеку iarduino_Modbus.
ModbusClient ОБЪЕКТ( UART , DE ); // Создаём объект указав класс UART и вывод DE.
Функция begin(); // Инициализация работы по протоколу Modbus.
Функция setTypeMB( ТИП ); // Указание типа протокола Modbus (RTU/ASCII).
Функция setTimeout( ВРЕМЯ ); // Указание максимального времени ожидания ответа.
Функция setDelay( ВРЕМЯ ); // Указание паузы до отправки сообщения.
Функция coilRead( [АДРЕС], РЕГИСТР ); // Чтение регистра "Coil".
Функция discreteInputRead( [АДРЕС], РЕГИСТР ); // Чтение регистра "Discrete Input".
Функция holdingRegisterRead( [АДРЕС], РЕГИСТР ); // Чтение "Holding Register".
Функция inputRegisterRead( [АДРЕС], РЕГИСТР ); // Чтение "Input Register".
Функция coilWrite( [АДРЕС], РЕГИСТР, ДАННЫЕ ); // Запись в регистр "Coil".
Функция holdingRegisterWrite([АДРЕС],РЕГИСТР,ДАННЫЕ);// Запись"Holding Register".
Функция registerMaskWrite( [АДРЕС], РЕГИСТР, AND, OR ); // Запись масок в регистр.
Функция beginTransmission( [АДРЕС], ТИП, РЕГИСТР, КОЛИЧЕСТВО );
// Инициализация записи в несколько регистров "Coils" или "Holding Registers".
Функция write( ДАННЫЕ ); // Постановка значения в очередь на запись.
Функция endTransmission(); // Выполнение инициированной ранее записи.
Функция requestFrom( [АДРЕС], ТИП, РЕГИСТР, КОЛИЧЕСТВО);
// Чтение из нескольких регистров указанного типа.
Функция available(); // Получение количества значений, доступных для чтения read().
Функция read(); // Получение очередного прочитанного значения.
Функция end(); // Функция для совместимости с библиотекой ArduinoModbus.
Функция exceptionStatusRead( [АДРЕС] ); // Чтение состояния 8 статусных выходов.
Функция getSate( [АДРЕС] ); // Чтение состояния устройства.
Функция diagnostic( АДРЕС, ФУНКЦИЯ [,ДАННЫЕ] ); // Выполнение диагностики.
Функция getEventCounter( [АДРЕС] ); // Чтение счетчика событий.
Функция getEventLog( [АДРЕС] ); // Чтение журнала событий.
Функция getInfo( [АДРЕС] ); // Чтение информации об устройстве.
Функция lastError(); // Получение кода причины последней ошибки.
Функция checkID( АДРЕС ); // Определение принадлежности устройства.
Функция changeID( АДРЕС, АДРЕС ); // Изменение адреса устройства iarduino на шине.
Функция sortID( АДРЕС ); // Функция сортировки адресов iarduino по порядку.
Функция searchERR(); // Обнаружение устройств iarduino с одинаковыми адресами.
Функция findID( [МОДЕЛЬ] ); // Обнаружение всех адресов ведомых устройств на шине.